📄 make_epass.cgi
字号:
#!/usr/local/bin/perl# make_epass.cgi# Create or update the samba password file from the list of Unix usersrequire './samba-lib.pl';&ReadParse();&header("Convert Users", "");$whatfailed = "Failed to convert user";$| = 1;print "<hr>\n";$config{'smb_passwd'} =~ /^(.*)\/([^\/]+)$/;mkdir($1, 0700);@ulist = &list_users();map { $suser{$_->{'name'}} = $_ } @ulist;print "<h3>Converting Unix users...</h3>\n";foreach $u (split(/[ \t,]/ , $in{"skip_list"})) { $dont_convert{$u}++; }print "<table border width=100%><tr><td bgcolor=#c0c0c0><pre>\n";setpwent();while(@uinfo = getpwent()) { local ($c1, $c2, $m); $uexists{$uinfo[0]}++; local $su = $suser{$uinfo[0]}; if ($dont_convert{$uinfo[0]}) { $m = "$uinfo[0] being skipped"; } elsif ($su && $in{"update"}) { if ($su->{'opts'}) { # new-style user if ($uinfo[2] == $su->{'uid'}) { $m = "$uinfo[0] is already the same"; } else { $su->{'uid'} = $uinfo[2]; $su->{'real'} = $uinfo[6]; &modify_user($su); $m = "$uinfo[0] being updated"; $c1 = "<i>"; $c2 = "</i>"; } } else { # old-style user if ($uinfo[2] == $su->{'uid'} && $uinfo[6] eq $su->{'real'} && $uinfo[7] eq $su->{'home'} && $uinfo[8] eq $su->{'shell'}) { $m = "$uinfo[0] is already the same"; } else { $su->{'uid'} = $uinfo[2]; $su->{'real'} = $uinfo[6]; $su->{'home'} = $uinfo[7]; $su->{'shell'} = $uinfo[8]; &modify_user($su); $m = "$uinfo[0] being updated"; $c1 = "<i>"; $c2 = "</i>"; } } } elsif ($in{"add"} && !$su) { local $nu = { 'name' => $uinfo[0], 'uid' => $uinfo[2] }; local @flags = ("U"); $c1 = "<b>"; $c2 = "</b>"; $m = "$uinfo[0] being added"; if ($in{'newmode'} == 0) { $nu->{'pass1'} = "NO PASSWORDXXXXXXXXXXXXXXXXXXXXX"; $nu->{'pass2'} = ("X" x 32); push(@flags, "N"); } else { $nu->{'pass1'} = $nu->{'pass2'} = ("X" x 32); if ($in{'newmode'} == 2) { $setpass{$uinfo[0]} = $in{'newpass'}; } else { push(@flags, "D"); } } if ($samba_version < 2) { $nu->{'real'} = $uinfo[6]; $nu->{'home'} = $uinfo[7]; $nu->{'shell'} = $uinfo[8]; } else { $nu->{'opts'} = \@flags; } &create_user($nu); } if ($m) { printf "$c1%-40.40s$c2%s", $m, ++$c%2 ? "" : "\n"; } }endpwent();# Delete missing users, if neededif ($in{"delete"}) { foreach $u (@ulist) { if (!$uexists{$u->{'name'}}) { # delete this samba user.. $m = "$u->{'name'} being deleted"; &delete_user($u); printf "<b><font color=#ff0000>%-40.40s</font></b>%s", $m, ++$c%2 ? "" : "\n"; } } }# Update the passwords of new usersforeach $u (keys %setpass) { &set_password($u, $setpass{$u}) || &error("Failed to set password"); }print "</pre></td></tr></table>\n";print "<hr>\n";&footer("", "share list");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -