chore: import upstream snapshot with attribution

This commit is contained in:
wehub-resource-sync
2026-07-13 13:12:17 +08:00
commit cf8edb9f21
44281 changed files with 1655134 additions and 0 deletions
+75
View File
@@ -0,0 +1,75 @@
---- Changes since 1.140 ----
Added options for having the UID automatically computed based on the username, either by a checksum or using an external program.
---- Changes since 1.150 ----
When full user details are displayed, added checkboxes and a button for deleting multiple users at once.
Added a similar button for deleting multiple groups at once too.
User batch data can now be pasted into a text box, in addition to uploading a file or selecting a file on the server.
When a user's home directory is a symlink, both the target of the link and the link itself are deleted.
Added a Module Config option to set the default for the create, modify and delete in other modules options.
---- Changes since 1.160 ----
Added a checkbox for temporarily disabling a user, by putting an ! in front of its encrypted password.
---- Changes since 1.170 ----
Added a Module Config option to select sources for the shell list.
---- Changes since 1.180 ----
Added an option on the Module Config page to show the last login time for users.
---- Changes since 1.200 ----
MD5 password encryption is now used on Solaris, when configured in policy.conf.
---- Changes since 1.210 ----
Added a new access control option to restrict users by regular expression.
Multiple users can be locked or un-locked at once from the module's main page.
Disabled users now appear in italics in the user list.
---- Changes since 1.220 ----
Added a Module Config option to specify the real base for home directories to create, such as /export/home on systems using an automounter.
---- Changes since 1.230 ----
Users can now be searched for by GID, and using greater-than and less-than comparisons.
---- Changes since 1.240 ----
When exporting users, they can now be selected by GID range.
---- Changes since 1.250 ----
Added an access control option to prevent the renaming of users.
---- Changes since 1.290 ----
Added a Module Config option to display secondary groups as a text box, which makes more sense on systems with a large number of groups.
---- Changes since 1.300 ----
Cleaned up user and group creation links on main page, add links to jump to user and group lists, and duplicated buttons for operating on many users and groups at once.
Use the nscd -i command to refresh its cache after adding a user or group.
---- Changes since 1.310 ----
In a user batch file, # is only treated as a comment at the start of a line.
---- Changes since 1.380 ----
The real base directory for homes is now respected when batch creating users.
Improved MD5 encryption auto-detection with newer PAM config files.
Batch user creation data is now better validated, and the batch form has been re-written to use the new Webmin UI library.
When renaming a user whose group is the same as his username, the group will be renamed too by default.
---- Changes since 1.390 ----
Added a Module Config option to send the username and password to a program for checking as input, rather than on the command line.
Users and groups with spaces in their names can specified on the access control page by quoting them.
---- Changes since 1.410 ----
Added support for the new user and group databases found in OSX 10.5 and later, which use Apple's directory services instead of NetInfo.
---- Changes since 1.420 ----
The option to force a password change at the next login is available for new users, if a default 'Maximum days' is set on the Module Config page or if running Linux.
---- Changes since 1.430 ----
Added tabs to the module's page page, to switching between user and group lists easier.
Cleaned up the user interface to be more consistent with the rest of Webmin.
Improved support for default password changing options on AIX.
---- Changes since 1.440 ----
Added a non-editable list of users who have this group as their primary to the Edit Group page.
Added a Module Config option to use a text box for entering secondary group members, rather than the left/right user chooser.
Created a page for exporting groups to a batch file, for importing on other systems.
Added support for creating, deleting and modifying groups from a batch file. This is similar to the long-standing batch user management functionality.
Added support for Blowfish password hashing, which can be enabled on the Module Config page. On Solaris systems, it will be used if enabled in /etc/security/policy.conf. Requires the Crypt::Eksblowfish::Bcrypt Perl module though.
Converted commands in the module's API file to POD format, and added more details about each function.
---- Changes since 1.470 ----
Fixed a bug that caused an empty shell to appear in the shells list for new users.
Fixed the hashing format for Blowfish passwords, to put $2a$ at the start instead of $2$.
On Linux systems with SElinux enabled, the context user_u:object_r:user_home_dir_t is set on new home directories by default.
---- Changes since 1.510 ----
When deleting a user's personal group and user deletion in other modules is enabled, delete the group in other modules too.
---- Changes since 1.530 ----
Added support for SHA512 format passwords.
---- Changes since 1.540 ----
Fixed an XSS vulnerability that can be triggered if an attacker has the ability to change the real name of a Unix user.
---- Changes since 1.550 ----
Updated all links to users and groups to be by name instead of by index, to avoid incorrect links if the passwd or group files are changed manually or by another Webmin session.
The faster lastlog command is now used to get the most recent login time on Linux, for display in the user list.
---- Changes since 1.580 ----
Added a new password restriction for the minimum number of days before a password can be changed.
---- Changes since 1.620 ----
Replace use of ispell and aspell commands with reading of /usr/share/dict/words to validate passwords.
+252
View File
@@ -0,0 +1,252 @@
require 'user-lib.pl';
# acl_security_form(&options)
# Output HTML for editing security options for the useradmin module
sub acl_security_form
{
local $o = $_[0];
my $uedit_group = $o->{'uedit_mode'} == 5 ?
join(" ", map { "".&my_getgrgid($_) } split(/\s+/, $o->{'uedit'})) : "";
print &ui_table_row($text{'acl_uedit'},
&ui_radio_table("uedit_mode",
defined($o->{'uedit_mode'}) ? $o->{'uedit_mode'} : 0,
[ [ 0, $text{'acl_uedit_all'} ],
[ 1, $text{'acl_uedit_none'} ],
[ 6, $text{'acl_uedit_this'} ],
[ 2, $text{'acl_uedit_only'},
&ui_textbox("uedit_can",
$o->{'uedit_mode'} == 2 ? $o->{'uedit'} : "", 40).
" ".&user_chooser_button("uedit_can", 1) ],
[ 3, $text{'acl_uedit_except'},
&ui_textbox("uedit_cannot",
$o->{'uedit_mode'} == 3 ? $o->{'uedit'} : "", 40).
" ".&user_chooser_button("uedit_cannot", 1) ],
[ 4, $text{'acl_uedit_uid'},
&ui_textbox("uedit_uid",
$o->{'uedit_mode'} == 4 ? $o->{'uedit'} : "", 6).
" - ".&ui_textbox("uedit_uid2",
$o->{'uedit_mode'} == 4 ? $o->{'uedit2'} : "", 6) ],
[ 5, $text{'acl_uedit_group'},
&ui_textbox("uedit_group", $uedit_group, 40)." ".
&group_chooser_button("uedit_group", 1)."<br>\n".
&ui_checkbox("uedit_sec", 1, $text{'acl_uedit_sec'},
$o->{'uedit_sec'}) ],
[ 7, $text{'acl_uedit_re'},
&ui_textbox("uedit_re",
$o->{'uedit_mode'} == 7 ? $o->{'uedit_re'} : "", 40) ] ], 1),
3);
print &ui_table_row($text{'acl_ucreate'},
&ui_yesno_radio("ucreate", $o->{'ucreate'}));
print &ui_table_row($text{'acl_batch'},
&ui_yesno_radio("batch", $o->{'batch'}));
print &ui_table_row($text{'acl_batchdir'},
&ui_filebox("batchdir", $o->{'batchdir'}, 60), 3);
print &ui_table_row($text{'acl_export'},
&ui_radio("export", defined($o->{'export'}) ? $o->{'export'} : 0,
[ [ 2, $text{'yes'} ],
[ 1, $text{'acl_export1'} ],
[ 0, $text{'no'} ] ]),
3);
print &ui_table_row($text{'acl_uid'},
&ui_textbox("lowuid", $o->{'lowuid'}, 6)." - ".
&ui_textbox("hiuid", $o->{'hiuid'}, 6)."<br>\n".
join("<br>", map { &ui_checkbox($_, 1, $text{'acl_'.$_}, $o->{$_}) }
('autouid', 'calcuid', 'useruid', 'umultiple', 'uuid')),
3);
local $uedit_gmode = defined($o->{'uedit_gmode'}) ? $o->{'uedit_gmode'} :
$o->{'ugroups'} eq '*' ? 0 : 2;
print &ui_table_row($text{'acl_ugroups'},
&ui_radio_table("uedit_gmode", $uedit_gmode,
[ [ 0, $text{'acl_gedit_all'} ],
[ 2, $text{'acl_gedit_only'},
&ui_textbox("uedit_gcan",
$uedit_gmode == 2 ? $o->{'ugroups'} : "", 40).
" ".&group_chooser_button("uedit_gcan", 1) ],
[ 3, $text{'acl_gedit_except'},
&ui_textbox("uedit_gcannot",
$uedit_gmode == 3 ? $o->{'ugroups'} : "", 40).
" ".&group_chooser_button("uedit_gcannot", 1) ],
[ 4, $text{'acl_gedit_gid'},
&ui_textbox("uedit_gid",
$uedit_gmode == 4 ? $o->{'ugroups'} : "", 6).
" - ".&ui_textbox("uedit_gid2",
$uedit_gmode == 4 ? $o->{'ugroups2'} : "", 6) ] ], 1),
3);
print &ui_table_row($text{'acl_shells'},
&ui_radio_table("shells_def", $o->{'shells'} eq "*" ? 1 : 0,
[ [ 1, $text{'acl_any'} ],
[ 0, $text{'acl_listed'},
&ui_textarea("shells",
$o->{'shells'} eq "*" ? "" :
join("\n", split(/\s+/, $o->{'shells'} || "")),
3, 40) ] ], 1),
3);
print &ui_table_row($text{'acl_epeopt'},
&ui_yesno_radio("peopt", $o->{'peopt'}));
print &ui_table_row($text{'acl_home'},
&ui_textbox("home", $o->{'home'}, 40)." ".
&file_chooser_button("home", 1)."<br>\n".
&ui_checkbox("autohome", 1, $text{'acl_autohome'}, $o->{'autohome'}),
3);
print &ui_table_row($text{'acl_udelete'},
&ui_yesno_radio("udelete", $o->{'udelete'}));
print &ui_table_row($text{'acl_urename'},
&ui_yesno_radio("urename", $o->{'urename'}));
print &ui_table_row($text{'acl_delhome'},
&ui_radio("delhome", $o->{'delhome'},
[ [ 2, $text{'acl_option'} ],
[ 1, $text{'acl_always'} ],
[ 0, $text{'acl_never'} ] ]),
3);
print &ui_table_span($text{'acl_saveopts'});
foreach my $opt ('chuid', 'chgid', 'movehome', 'mothers',
'makehome', 'copy', 'cothers', 'dothers') {
print &ui_table_row($text{"uedit_$opt"},
&ui_radio($opt, defined($o->{$opt}) ? $o->{$opt} : 0,
[ [ 1, $text{'acl_canedit'} ],
[ 0, $text{'acl_on'} ],
[ 2, $text{'acl_off'} ] ]),
3);
}
print &ui_table_hr();
print &ui_table_row($text{'acl_gedit'},
&ui_radio_table("gedit_mode",
defined($o->{'gedit_mode'}) ? $o->{'gedit_mode'} : 0,
[ [ 0, $text{'acl_gedit_all'} ],
[ 1, $text{'acl_gedit_none'} ],
[ 2, $text{'acl_gedit_only'},
&ui_textbox("gedit_can",
$o->{'gedit_mode'} == 2 ? $o->{'gedit'} : "", 40).
" ".&group_chooser_button("gedit_can", 1) ],
[ 3, $text{'acl_gedit_except'},
&ui_textbox("gedit_cannot",
$o->{'gedit_mode'} == 3 ? $o->{'gedit'} : "", 40).
" ".&group_chooser_button("gedit_cannot", 1) ],
[ 4, $text{'acl_gedit_gid'},
&ui_textbox("gedit_gid",
$o->{'gedit_mode'} == 4 ? $o->{'gedit'} : "", 6).
" - ".&ui_textbox("gedit_gid2",
$o->{'gedit_mode'} == 4 ? $o->{'gedit2'} : "", 6) ] ], 1),
3);
print &ui_table_row($text{'acl_gcreate'},
&ui_radio("gcreate", defined($o->{'gcreate'}) ? $o->{'gcreate'} : 0,
[ [ 1, $text{'yes'} ],
[ 2, $text{'acl_gnew'} ],
[ 0, $text{'no'} ] ]),
3);
print &ui_table_row($text{'acl_gid'},
&ui_textbox("lowgid", $o->{'lowgid'}, 6)." - ".
&ui_textbox("higid", $o->{'higid'}, 6)."<br>\n".
join("<br>", map { &ui_checkbox($_, 1, $text{'acl_'.$_}, $o->{$_}) }
('autogid', 'calcgid', 'usergid', 'gmultiple', 'ggid')),
3);
print &ui_table_row($text{'acl_gdelete'},
&ui_yesno_radio("gdelete", $o->{'gdelete'}));
print &ui_table_row($text{'acl_grename'},
&ui_yesno_radio("grename", $o->{'grename'}));
print &ui_table_hr();
my $logins_mode = !$o->{'logins'} ? 0 : $o->{'logins'} eq "*" ? 1 : 2;
print &ui_table_row($text{'acl_logins'},
&ui_radio_table("logins_mode", $logins_mode,
[ [ 0, $text{'acl_lnone'} ],
[ 1, $text{'acl_lall'} ],
[ 2, "",
&ui_textbox("logins",
$logins_mode == 2 ? $o->{'logins'} : "", 40)." ".
&user_chooser_button("logins", 1) ] ], 1),
3);
}
# acl_security_save(&options)
# Parse the form for security options for the useradmin module
sub acl_security_save
{
$_[0]->{'lowuid'} = $in{'lowuid'};
$_[0]->{'hiuid'} = $in{'hiuid'};
$_[0]->{'autouid'} = $in{'autouid'};
$_[0]->{'autogid'} = $in{'autogid'};
$_[0]->{'calcuid'} = $in{'calcuid'};
$_[0]->{'calcgid'} = $in{'calcgid'};
$_[0]->{'useruid'} = $in{'useruid'};
$_[0]->{'usergid'} = $in{'usergid'};
$_[0]->{'lowgid'} = $in{'lowgid'};
$_[0]->{'higid'} = $in{'higid'};
$_[0]->{'uedit_mode'} = $in{'uedit_mode'};
$_[0]->{'uedit'} = $in{'uedit_mode'} == 2 ? $in{'uedit_can'} :
$in{'uedit_mode'} == 3 ? $in{'uedit_cannot'} :
$in{'uedit_mode'} == 4 ? $in{'uedit_uid'} :
$in{'uedit_mode'} == 5 ?
join(" ", map { "".&my_getgrnam($_) }
split(/\s+/, $in{'uedit_group'})) : "";
$_[0]->{'uedit2'} = $in{'uedit_mode'} == 4 ? $in{'uedit_uid2'} : undef;
$_[0]->{'uedit_sec'} = $in{'uedit_mode'} == 5 ? $in{'uedit_sec'} : undef;
$_[0]->{'uedit_re'} = $in{'uedit_mode'} == 7 ? $in{'uedit_re'} : undef;
$_[0]->{'gedit_mode'} = $in{'gedit_mode'};
$_[0]->{'gedit'} = $in{'gedit_mode'} == 2 ? $in{'gedit_can'} :
$in{'gedit_mode'} == 3 ? $in{'gedit_cannot'} :
$in{'gedit_mode'} == 4 ? $in{'gedit_gid'} : "";
$_[0]->{'gedit2'} = $in{'gedit_mode'} == 4 ? $in{'gedit_gid2'} : undef;
$_[0]->{'ucreate'} = $in{'ucreate'};
$_[0]->{'gcreate'} = $in{'gcreate'};
if ($in{'uedit_gmode'} == 0) {
delete($_[0]->{'uedit_gmode'});
$_[0]->{'ugroups'} = "*";
}
elsif ($in{'uedit_gmode'} == 2) {
delete($_[0]->{'uedit_gmode'});
$_[0]->{'ugroups'} = $in{'uedit_gcan'};
}
else {
$_[0]->{'uedit_gmode'} = $in{'uedit_gmode'};
$_[0]->{'ugroups'} = $in{'uedit_gmode'} == 3 ? $in{'uedit_gcannot'} :
$in{'uedit_gmode'} == 4 ? $in{'uedit_gid'} : "";
}
$_[0]->{'ugroups2'} = $in{'uedit_gmode'} == 4 ? $in{'uedit_gid2'} : undef;
$_[0]->{'logins'} = $in{'logins_mode'} == 0 ? "" :
$in{'logins_mode'} == 1 ? "*" : $in{'logins'};
$_[0]->{'shells'} = $in{'shells_def'} ? "*"
: join(" ", split(/\s+/, $in{'shells'}));
$_[0]->{'peopt'} = $in{'peopt'};
$_[0]->{'batch'} = $in{'batch'};
$_[0]->{'batchdir'} = $in{'batchdir'};
$_[0]->{'export'} = $in{'export'};
$_[0]->{'home'} = $in{'home'};
$_[0]->{'delhome'} = $in{'delhome'};
$_[0]->{'autohome'} = $in{'autohome'};
$_[0]->{'umultiple'} = $in{'umultiple'};
$_[0]->{'uuid'} = $in{'uuid'};
$_[0]->{'gmultiple'} = $in{'gmultiple'};
$_[0]->{'ggid'} = $in{'ggid'};
foreach $o ('chuid', 'chgid', 'movehome', 'mothers',
'makehome', 'copy', 'cothers', 'dothers') {
$_[0]->{$o} = $in{$o};
}
$_[0]->{'udelete'} = $in{'udelete'};
$_[0]->{'urename'} = $in{'urename'};
$_[0]->{'gdelete'} = $in{'gdelete'};
$_[0]->{'grename'} = $in{'grename'};
}
+51
View File
@@ -0,0 +1,51 @@
# aix-lib.pl
# Functions for aix password file format
# passfiles_type()
# Returns 0 for old-style passwords (/etc/passwd only), 1 for FreeBSD-style
# (/etc/master.passwd), 2 for SysV (/etc/passwd & /etc/shadow), 3 for
# /etc/passwd with update via useradd and 4 for AIX (/etc/passwd &
# /etc/security/passwd)
sub passfiles_type
{
return 4;
}
# groupfiles_type()
# Returns 0 for normal group file (/etc/group only), 2 for shadowed
# (/etc/group and /etc/gshadow), and 4 for AIX (/etc/group &
# /etc/security/group)
sub groupfiles_type
{
return 4;
}
# open_last_command(handle, user)
sub open_last_command
{
local ($fh, $user) = @_;
local $quser = defined($user) && length($user) ? " ".quotemeta($user) : "";
open($fh, "last$quser |");
}
# read_last_line(handle)
# Parses a line of output from last into an array of
# user, tty, host, login, logout, period
sub read_last_line
{
local $fh = $_[0];
while(1) {
chop($line = <$fh>);
if (!$line) { return (); }
if ($line =~ /system boot/) { next; }
if ($line =~ /^(\S+)\s+(\S+)\s+(\S+)?\s+(\S+\s+\S+\s+\d+\s+\d+:\d+)\s+\-\s+(\d+:\d+)\s+\((\d+:\d+)\)/) {
return ($1, $2, $3, $4, $5, $6);
}
elsif ($line =~ /^(\S+)\s+(\S+)\s+(\S+)?\s+(\S+\s+\S+\s+\d+\s+\d+:\d+)\s+still/) {
return ($1, $2, $3, $4);
}
}
}
1;
+47
View File
@@ -0,0 +1,47 @@
do 'user-lib.pl';
# backup_config_files()
# Returns files and directories that can be backed up
sub backup_config_files
{
local @rv;
foreach $f ("passwd_file", "group_file", "shadow_file", "master_file",
"gshadow_file") {
push(@rv, $config{$f}) if ($config{$f});
}
return @rv;
}
# pre_backup(&files)
# Called before the files are actually read
sub pre_backup
{
return undef;
}
# post_backup(&files)
# Called after the files are actually read
sub post_backup
{
return undef;
}
# pre_restore(&files)
# Called before the files are restored from a backup
sub pre_restore
{
&making_changes();
return undef;
}
# post_restore(&files)
# Called after the files are restored from a backup
sub post_restore
{
&made_changes();
return undef;
}
1;
+665
View File
@@ -0,0 +1,665 @@
#!/usr/local/bin/perl
# batch_exec.cgi
# Execute create/modify/delete commands in a batch file
require './user-lib.pl';
$access{'batch'} || &error($text{'batch_ecannot'});
if ($ENV{'REQUEST_METHOD'} eq 'GET') {
&ReadParse();
}
else {
&ReadParseMime();
}
if ($in{'source'} == 0) {
$data = $in{'file'};
$data =~ /\S/ || &error($text{'batch_efile'});
}
elsif ($in{'source'} == 1) {
$data = &read_batch_local_file($in{'local'});
}
elsif ($in{'source'} == 2) {
$data = $in{'text'};
$data =~ /\S/ || &error($text{'batch_etext'});
}
&ui_print_unbuffered_header(undef, $text{'batch_title'}, "");
# Force defaults for save options
$in{'makehome'} = 1 if (!$access{'makehome'});
$in{'copy'} = 1 if (!$access{'copy'} && $config{'user_files'} =~ /\S/);
$in{'movehome'} = 1 if (!$access{'movehome'});
$in{'chuid'} = 1 if (!$access{'chuid'});
$in{'chgid'} = 1 if (!$access{'chgid'});
# Work out a good base UID for new users
&build_user_used(\%used, undef, \%taken);
$newuid = int($config{'base_uid'} > $access{'lowuid'} ?
$config{'base_uid'} : $access{'lowuid'});
# Work out a good base GID for new groups
&build_group_used(\%gused, \%gtaken);
if ($config{'new_user_gid'}) {
%used = ( %used, %gused );
}
$newgid = int($config{'base_gid'} > $access{'lowgid'} ?
$config{'base_gid'} : $access{'lowgid'});
@glist = &list_groups();
# Process the file
&batch_start() if ($in{'batch'});
&lock_user_files();
$lnum = $created = $modified = $deleted = 0;
print "<pre>\n";
$pft = &passfiles_type();
foreach $line (split(/[\r\n]+/, $data)) {
$lnum++;
$line =~ s/^\s*#.*$//;
next if ($line !~ /\S/);
local @line = split(/:/, $line, -1);
local %user;
if ($line[0] eq 'create') {
# Creating a new user
if ($pft == 5) {
# Openserver passwd and short shadow information
if (@line != 10) {
print &text('batch_elen', $lnum, 10),"\n";
next;
}
$user{'min'} = $line[8];
$user{'max'} = $line[9];
}
elsif ($pft == 4) {
# AIX passwd and security information
if (@line != 12) {
print &text('batch_elen', $lnum, 12),"\n";
next;
}
$user{'min'} = $line[8];
$user{'max'} = $line[9];
$user{'expire'} = $line[10];
map { $user{$_}++ } split(/\s+/, $line[11]);
}
elsif ($pft == 2) {
# SYSV-style passwd and shadow information
if (@line != 13) {
print &text('batch_elen', $lnum, 13),"\n";
next;
}
$user{'min'} = $line[8];
$user{'max'} = $line[9];
$user{'warn'} = $line[10];
$user{'inactive'} = $line[11];
$user{'expire'} = $line[12];
$user{'change'} = $line[2] eq '' ? '' :
int(time() / (60*60*24));
}
elsif ($pft == 1 || $pft == 6) {
# BSD master.passwd information
if (@line != 11) {
print &text('batch_elen', $lnum, 11),"\n";
next;
}
$user{'class'} = $line[8];
$user{'change'} = $line[9];
$user{'expire'} = $line[10];
}
else {
# Classic passwd file information (type 0 and 3)
if (@line != 8) {
print &text('batch_elen', $lnum, 8),"\n";
next;
}
}
# Make sure all min/max fields are numeric
$err = &validate_batch_minmax(\%user, $lnum);
if ($err) {
print $err,"\n";
next;
}
# Parse common fields
if (!$line[1]) {
print &text('batch_eline', $lnum),"\n";
next;
}
$user{'user'} = $line[1];
$err = &check_username_restrictions($user{'user'});
if ($err) {
print &text('batch_echeck', $lnum, $err),"\n";
next;
}
if ($taken{$user{'user'}}) {
print &text('batch_euser', $lnum, $user{'user'}),"\n";
next;
}
if ($line[3] !~ /^\d+$/) {
# make up a UID
while($used{$newuid}) {
$newuid++;
}
$user{'uid'} = $newuid;
}
else {
# use the given UID
if ($used{$line[3]} && !$access{'umultiple'}) {
print &text('batch_ecaccess', $lnum,
$text{'usave_euidused2'}),"\n";
next;
}
$user{'uid'} = $line[3];
}
$used{$user{'uid'}}++;
if ($line[7] !~ /^\//) {
print &text('batch_eshell', $lnum, $line[7]),"\n";
next;
}
$user{'shell'} = $line[7];
$user{'real'} = $line[5];
local @gids = split(/[ ,]+/, $line[4]);
$user{'gid'} = $gids[0];
local $grp = &my_getgrgid($gids[0]);
$real_home = undef;
if ($access{'autohome'}) {
# Assign home dir automatically based on ACL
$user{'home'} = &auto_home_dir($access{'home'},
$user{'user'},
$grp);
if ($config{'real_base'}) {
$real_home = &auto_home_dir(
$config{'real_base'}, $user{'user'}, $grp);
}
}
else {
if ($line[6] eq '' && $config{'home_base'}) {
# Choose home dir automatically based on
# module config
$user{'home'} = &auto_home_dir(
$config{'home_base'}, $user{'user'},
$user{'gid'});
if ($config{'real_base'}) {
$real_home = &auto_home_dir(
$config{'real_base'},
$user{'user'}, $grp);
}
}
elsif ($line[6] !~ /^\//) {
print &text('batch_ehome', $lnum,$line[6]),"\n";
next;
}
else {
# Use given home dir
$user{'home'} = $line[6];
}
}
$real_home ||= $user{'home'};
# Check access control restrictions
if (!$access{'ucreate'}) {
print &text('batch_ecaccess', $lnum,
$text{'usave_ecreate'});
next;
}
local $ch = &check_user(\%user);
if ($ch) {
print &text('batch_ecaccess', $lnum, $ch),"\n";
next;
}
# Work out secondary group membership
local @secs;
if (@gids > 1) {
local $i;
for($i=1; $i<@gids; $i++) {
local ($group) =
grep { $_->{'gid'} eq $gids[$i] } @glist;
push(@secs, $group) if ($group);
}
}
# Work out the password
if ($in{'crypt'}) {
$user{'pass'} = $line[2];
$user{'passmode'} = 2;
}
elsif ($line[2] eq 'x') {
# No login allowed
$user{'pass'} = $config{'lock_string'};
$user{'passmode'} = 1;
}
elsif ($line[2] eq '') {
# No password needed
$user{'pass'} = '';
$user{'passmode'} = 0;
}
else {
# Normal password
$user{'pass'} = &encrypt_password($line[2]);
$user{'passmode'} = 3;
$user{'plainpass'} = $line[2];
}
# Run the before command
&set_user_envs(\%user, 'CREATE_USER', $user{'plainpass'},
[ map { $_->{'gid'} } @secs ]);
$merr = &making_changes();
&error(&text('usave_emaking', "<tt>$merr</tt>"))
if (defined($merr));
if ($user{'gid'} !~ /^\d+$/) {
# Need to create a new group for the user
if (!$access{'gcreate'}) {
print &text('batch_ecaccess', $lnum,
$text{'usave_egcreate'}),"\n";
next;
}
if ($gtaken{$user{'user'}}) {
print &text('batch_egtaken', $lnum,
$user{'user'}),"\n";
next;
}
if ($config{'new_user_gid'}) {
$newgid = $user{'uid'};
}
else {
while($gused{$newgid}) {
$newgid++;
}
}
local %group;
$group{'group'} = $user{'user'};
$user{'gid'} = $group{'gid'} = $newgid;
&create_group(\%group);
$gused{$group{'gid'}}++;
}
# Create the user!
if ($in{'makehome'} && !-d $user{'home'}) {
&create_home_directory(\%user, $real_home);
}
&create_user(\%user);
# Add user to some secondary groups
local $group;
foreach $group (@secs) {
local @mems = split(/,/ , $group->{'members'});
push(@mems, $user{'user'});
$group->{'members'} = join(",", @mems);
&modify_group($group, $group);
}
# All done
&made_changes();
# Call other modules, ignoring any failures
$error_must_die = 1;
eval {
&other_modules("useradmin_create_user", \%user)
if ($access{'cothers'} == 1 && $in{'others'} ||
$access{'cothers'} == 0);
};
$other_err = $@;
$error_must_die = 0;
if ($in{'copy'} && $in{'makehome'}) {
# Copy files to user's home directory
local $groupname = &my_getgrgid($user{'gid'});
local $uf = &get_skel_directory(\%user, $groupname);
&copy_skel_files($uf, $user{'home'},
$user{'uid'}, $user{'gid'});
}
print "<b>",&text('batch_created',$user{'user'}),"</b>\n";
print "<b><i>",&text('batch_eother', $other_err),"</i></b>\n"
if ($other_err);
$created++;
}
elsif ($line[0] eq 'delete') {
# Deleting an existing user
if (@line != 2) {
print &text('batch_elen', $lnum, 2),"\n";
next;
}
local @ulist = &list_users();
local ($user) = grep { $_->{'user'} eq $line[1] } @ulist;
if (!$user) {
print &text('batch_enouser', $lnum, $line[1]),"\n";
next;
}
if (!&can_edit_user(\%access, $user)) {
print &text('batch_edaccess', $lnum,
$text{'udel_euser'}),"\n";
next;
}
if (!$config{'delete_root'} && $user->{'uid'} <= 10) {
print &text('batch_edaccess', $lnum,
$text{'udel_eroot'}),"\n";
next;
}
# Run the before command
&set_user_envs($user, 'DELETE_USER', undef,
[ &secondary_groups($user->{'user'}) ]);
$merr = &making_changes();
&error(&text('usave_emaking', "<tt>$merr</tt>"))
if (defined($merr));
# Delete from other modules, ignoring errors
$error_must_die = 1;
eval {
&other_modules("useradmin_delete_user", $user)
if ($access{'dothers'} == 1 && $in{'others'} ||
$access{'dothers'} == 0);
};
$other_err = $@;
$error_must_die = 0;
# Delete the user entry
&delete_user($user);
# Delete the user from groups
foreach $g (&list_groups()) {
@mems = split(/,/, $g->{'members'});
$idx = &indexof($user->{'user'}, @mems);
if ($idx >= 0) {
splice(@mems, $idx, 1);
%newg = %$g;
$newg{'members'} = join(',', @mems);
&modify_group($g, \%newg);
}
$mygroup = $g if ($g->{'group'} eq $user->{'user'});
}
# Delete the user's group
if ($mygroup && !$mygroup->{'members'}) {
local $another;
foreach $ou (&list_users()) {
$another++
if ($ou->{'gid'} == $mygroup->{'gid'});
}
if (!$another) {
&delete_group($mygroup);
}
}
&made_changes();
# Delete his home directory
if ($in{'delhome'} &&
$user->{'home'} &&
$user->{'home'} !~ /^\/+$/ &&
$access{'delhome'}) {
&delete_home_directory($user);
}
print "<b>",&text('batch_deleted',$user->{'user'}),"</b>\n";
print "<b><i>",&text('batch_eother', $other_err),"</i></b>\n"
if ($other_err);
$deleted++;
}
elsif ($line[0] eq 'modify') {
# Modifying an existing user
local $wlen = $pft == 5 ? 11 :
$pft == 4 ? 13 :
$pft == 2 ? 14 :
$pft == 1 || $pft == 6 ? 12 : 9;
if (@line != $wlen) {
print &text('batch_elen', $lnum, $wlen),"\n";
next;
}
local @ulist = &list_users();
local ($user) = grep { $_->{'user'} eq $line[1] } @ulist;
if (!$user) {
print &text('batch_enouser', $lnum, $line[1]),"\n";
next;
}
%olduser = %user = %$user;
$user{'olduser'} = $user->{'user'};
if (!&can_edit_user(\%access, \%user)) {
print &text('batch_emaccess', $lnum,
$text{'usave_eedit'}),"\n";
next;
}
# Update supplied fields
if ($line[2] ne '') {
if (!$access{'urename'}) {
print &text('batch_erename', $lnum, $line[1]),"\n";
}
$user{'user'} = $line[2];
}
if ($in{'crypt'} && $line[3] ne '') {
# Changing to pre-encrypted password
$user{'pass'} = $line[3];
$user{'passmode'} = 2;
}
elsif ($line[3] eq 'x') {
# No login allowed
$user{'pass'} = $config{'lock_string'};
$user{'passmode'} = 1;
}
elsif ($line[3] ne '') {
# Normal password
$user{'pass'} = &encrypt_password($line[3]);
$user{'passmode'} = 3;
$user{'plainpass'} = $line[3];
}
else {
# No change
$user{'passmode'} = 4;
}
$user{'uid'} = $line[4] if ($line[4] ne '');
$user{'gid'} = $line[5] if ($line[5] ne '');
$user{'real'} = $line[6] if ($line[6] ne '');
$user{'home'} = $line[7] if ($line[7] ne '');
$user{'shell'} = $line[8] if ($line[8] ne '');
if ($access{'peopt'}) {
if ($pft == 5) {
# Openserver password and short shadow
$user{'min'}=$line[9] if ($line[9] ne '');
$user{'max'}=$line[10] if ($line[10] ne '');
$user{'change'}=int(time() / (60*60*24))
if ($line[3] ne '');
}
elsif ($pft == 4) {
# AIX password and security information
$user{'min'}=$line[9] if ($line[9] ne '');
$user{'max'}=$line[10] if ($line[10] ne '');
$user{'expire'}=$line[11] if ($line[11] ne '');
if ($line[12] ne '') {
delete($user{'admin'});
delete($user{'admchg'});
delete($user{'nocheck'});
map { $user{$_}++ }
split(/\s+/, $line[12]);
}
$user{'change'}=time() if ($line[3] ne '');
}
elsif ($pft == 2) {
# SYSV-style passwd and shadow information
$user{'min'}=$line[9] if ($line[9] ne '');
$user{'max'}=$line[10] if ($line[10] ne '');
$user{'warn'}=$line[11] if ($line[11] ne '');
$user{'inactive'}=$line[12]
if ($line[12] ne '');
$user{'expire'}=$line[13] if ($line[13] ne '');
$user{'change'}=int(time() / (60*60*24))
if ($line[3] ne '');
}
elsif ($pft == 1 || $pft == 6) {
# BSD master.passwd information
$user{'class'}=$line[9] if ($line[9] ne '');
$user{'change'}=$line[10] if ($line[10] ne '');
$user{'expire'}=$line[11] if ($line[11] ne '');
}
}
# Check access control restrictions
local $ch = &check_user(\%user, \%olduser);
if ($ch) {
print &text('batch_emaccess', $lnum, $ch),"\n";
next;
}
# Run the before command
&set_user_envs(\%user, 'MODIFY_USER', $user{'plainpass'},
[ &secondary_groups($user{'user'}) ]);
$merr = &making_changes();
&error(&text('usave_emaking', "<tt>$merr</tt>"))
if (defined($merr));
# Move home directory if needed
if ($olduser{'home'} ne $user{'home'} && $in{'movehome'} &&
$user{'home'} ne '/' && $olduser{'home'} ne '/') {
if (-d $olduser{'home'} && !-e $user{'home'}) {
local $out = &backquote_logged(
"mv ".quotemeta($olduser{'home'}).
" ".quotemeta($user{'home'}).
" 2>&1");
if ($?) { &error(&text('batch_emove',
$lnum, $out)); }
}
}
# Change UIDs and GIDs
if ($olduser{'gid'} != $user{'gid'} && $in{'chgid'}) {
if ($in{'chgid'} == 1) {
&recursive_change($user{'home'},$olduser{'uid'},
$olduser{'gid'}, -1, $user{'gid'});
}
else {
&recursive_change("/", $olduser{'uid'},
$olduser{'gid'}, -1, $user{'gid'});
}
}
if ($olduser{'uid'} != $user{'uid'} && $in{'chuid'}) {
if ($in{'chuid'} == 1) {
&recursive_change($user{'home'},$olduser{'uid'},
-1, $user{'uid'}, -1);
}
else {
&recursive_change("/", $olduser{'uid'},
-1, $user{'uid'}, -1);
}
}
# Actually modify the user
&modify_user(\%olduser, \%user);
# If the user has been renamed, update any secondary groups
if ($olduser{'user'} ne $user{'user'}) {
foreach $group (@glist) {
local @mems = split(/,/, $group->{'members'});
local $idx = &indexof($olduser{'user'}, @mems);
if ($idx >= 0) {
$mems[$idx] = $user{'user'};
$group->{'members'} = join(",", @mems);
&modify_group($group, $group);
}
}
}
&made_changes();
# Modify in other modules, ignoring errors
$error_must_die = 1;
eval {
&other_modules("useradmin_modify_user",
\%user, \%olduser)
if ($access{'mothers'} == 1 && $in{'others'} ||
$access{'mothers'} == 0);
};
$error_must_die = 0;
$other_err = $@;
print "<b>",&text('batch_modified',$olduser{'user'}),"</b>\n";
print "<b><i>",&text('batch_eother', $other_err),"</i></b>\n"
if ($other_err);
$modified++;
}
else {
print &text('batch_eaction', $lnum, $line[0]),"\n";
next;
}
}
print "</pre>\n";
&batch_end() if ($in{'batch'});
&unlock_user_files();
&webmin_log("batch", undef, $in{'source'} == 1 ? $in{'local'} : undef,
{ 'created' => $created, 'modified' => $modified,
'deleted' => $deleted, 'lnum' => $lnum } );
&ui_print_footer("batch_form.cgi", $text{'batch_return'},
"", $text{'index_return'});
# check_user(\%user, [\%olduser])
# Check access control restrictions for a user
sub check_user
{
# check if uid is within range
if ($access{'lowuid'} && $_[0]->{'uid'} < $access{'lowuid'}) {
return &text('usave_elowuid', $access{'lowuid'});
}
if ($access{'hiuid'} && $_[0]->{'uid'} > $access{'hiuid'}) {
return &text('usave_ehiuid', $access{'hiuid'});
}
if ($_[1] && !$access{'uuid'} && $_[1]->{'uid'} != $_[0]->{'uid'}) {
return $text{'usave_euuid'};
}
# make sure home dir is under the allowed root
if (!$access{'autohome'}) {
$al = length($access{'home'});
if (length($_[0]->{'home'}) < $al ||
substr($_[0]->{'home'}, 0, $al) ne $access{'home'}) {
return &text('usave_ehomepath', $_[0]->{'home'});
}
}
# check for invalid shell
if ($access{'shells'} ne '*' &&
&indexof($_[0]->{'shell'}, split(/\s+/, $access{'shells'})) < 0) {
return &text('usave_eshell', $_[0]->{'shell'});
}
# check for invalid primary group (unless one is dynamically assigned)
if ($user{'gid'} ne '') {
local $ng = &my_getgrgid($_[0]->{'gid'});
local $ni = &can_use_group(\%access, $ng);
if ($_[1]) {
if ($_[1]->{'gid'} != $_[0]->{'gid'}) {
local $og = &my_getgrgid($_[1]->{'gid'});
local $oi = &can_use_group(\%access, $og);
if (!$ni) { return &text('usave_eprimary', $ng); }
if (!$oi) { return &text('usave_eprimaryr', $og); }
}
}
else {
return &text('usave_eprimary', $ng) if (!$ni);
}
}
return undef;
}
sub secondary_groups
{
local @secs;
foreach $g (@glist) {
@mems = split(/,/, $g->{'members'});
if (&indexof($_[0], @mems) >= 0) {
push(@secs, $g->{'gid'});
}
}
return @secs;
}
sub validate_batch_minmax
{
local ($user, $lnum) = @_;
foreach my $f ('min', 'max', 'warn', 'inactive', 'expire', 'change') {
$user->{$f} =~ /^(\-|\+|)\d*$/ ||
return &text('batch_e'.$f, $lnum, $user->{$f});
}
return undef;
}
+87
View File
@@ -0,0 +1,87 @@
#!/usr/local/bin/perl
# batch_form.cgi
# Display a form for doing batch creation, updates or deletion from a text file
require './user-lib.pl';
$access{'batch'} || &error($text{'batch_ecannot'});
&ui_print_header(undef, $text{'batch_title'}, "");
# Instructions
print &ui_hidden_start($text{'batch_instr'}, "instr", 0, "batch_form.cgi");
print "$text{'batch_desc'}\n";
$pft = &passfiles_type();
print "<p><tt>",$text{'batch_desc'.$pft},"</tt><p>\n";
print "$text{'batch_descafter'}<br>\n";
print "$text{'batch_descafter2'}\n";
print &ui_hidden_end("instr");
print &ui_form_start("batch_exec.cgi", "form-data");
print &ui_table_start($text{'batch_header'}, undef, 2);
# Source file
print &ui_table_row($text{'batch_source'},
&ui_radio_table("source", 0,
[ [ 0, $text{'batch_source0'}, &ui_upload("file") ],
[ 1, $text{'batch_source1'}, &ui_textbox("local", undef, 40)." ".
&file_chooser_button("local") ],
[ 2, $text{'batch_source2'}, &ui_textarea("text", undef, 5, 60) ]
]));
if ($access{'cothers'} == 1 || $access{'mothers'} == 1 ||
$access{'dothers'} == 1) {
# Do other modules?
print &ui_table_row($text{'batch_others'},
&ui_yesno_radio("others", int($config{'default_other'})));
}
# Only run post-command at end?
print &ui_table_row($text{'batch_batch'},
&ui_yesno_radio("batch", 0));
if ($access{'makehome'}) {
# Create home dir
print &ui_table_row($text{'batch_makehome'},
&ui_yesno_radio("makehome", 1));
}
if ($access{'copy'} && $config{'user_files'} =~ /\S/) {
# Copy files to homes
print &ui_table_row($text{'batch_copy'},
&ui_yesno_radio("copy", 1));
}
if ($access{'movehome'}) {
# Move home dirs
print &ui_table_row($text{'batch_movehome'},
&ui_yesno_radio("movehome", 1));
}
if ($access{'chuid'}) {
# Update UIDs on files
print &ui_table_row($text{'batch_chuid'},
&ui_radio("chuid", 1, [ [ 0, $text{'no'} ],
[ 1, $text{'home'} ],
[ 2, $text{'uedit_allfiles'} ] ]));
}
if ($access{'chgid'}) {
# Update GIDs on files
print &ui_table_row($text{'batch_chgid'},
&ui_radio("chgid", 1, [ [ 0, $text{'no'} ],
[ 1, $text{'home'} ],
[ 2, $text{'uedit_allfiles'} ] ]));
}
# Delete home dirs
print &ui_table_row($text{'batch_delhome'},
&ui_yesno_radio("delhome", 1));
# Encrypt password
print &ui_table_row($text{'batch_crypt'},
&ui_yesno_radio("crypt", 0));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'batch_upload'} ] ]);
&ui_print_footer("", $text{'index_return'});
+19
View File
@@ -0,0 +1,19 @@
do 'user-lib.pl';
sub cgi_args
{
my ($cgi) = @_;
if ($cgi eq 'edit_user.cgi') {
# Link to first available user
my @allulist = &list_users();
my @ulist = &list_allowed_users(\%access, \@allulist);
return @ulist ? "user=".&urlize($ulist[0]->{'user'}) : "none";
}
elsif ($cgi eq 'edit_group.cgi') {
my @allglist = &list_groups();
my @glist = &list_allowed_groups(\%access, \@allglist);
return @glist ? "group=".&urlize($glist[0]->{'group'}) : "none";
}
return undef;
}
+44
View File
@@ -0,0 +1,44 @@
last_count=1000
homedir_perms=0755
display_max=400
files_remove=local
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
shadow_file=/etc/security/passwd
aix_user_file=/etc/security/user
group_file=/etc/group
gshadow_file=/etc/security/group
base_uid=200
base_gid=200
lock_string=*LK*
empty_mode=0
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
from_files=0
alias_check=0
home_style=0
random_password=0
default_group=staff
default_shell=/usr/bin/ksh
extra_real=0
max_length=8
passwd_dict=0
passwd_same=0
email_type=0
new_user_gid=0
delete_root=0
md5=1
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
passwd_progmode=0
membox=0
+44
View File
@@ -0,0 +1,44 @@
last_count=1000
homedir_perms=0755
display_max=400
user_files=/etc/skel/user/en_US /etc/skel/user/common
passwd_file=/etc/passwd
post_command=
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=110
base_gid=110
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
default_group=users
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+43
View File
@@ -0,0 +1,43 @@
last_count=1000
homedir_perms=0755
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=500
base_gid=500
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=1
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+43
View File
@@ -0,0 +1,43 @@
last_count=1000
homedir_perms=0755
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=1000
base_gid=1000
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
default_group=users
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+43
View File
@@ -0,0 +1,43 @@
last_count=1000
homedir_perms=0750
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=1000
base_gid=1000
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
default_group=users
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+44
View File
@@ -0,0 +1,44 @@
last_count=1000
homedir_perms=0750
display_max=400
files_remove=dot
user_files=/usr/share/skel
passwd_file=
master_file=/etc/master.passwd
post_command=/usr/sbin/pwd_mkdb -p /etc/master.passwd
shadow_file=
group_file=/etc/group
base_uid=1000
base_gid=1000
lock_string=*
lock_prepend=*LOCKED*
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
max_length=16
delete_root=0
md5=1
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
+44
View File
@@ -0,0 +1,44 @@
last_count=1000
homedir_perms=0750
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=500
base_gid=500
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
default_group=users
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+42
View File
@@ -0,0 +1,42 @@
last_count=1000
homedir_perms=0755
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
group_file=/etc/group
shadow_file=/etc/shadow
base_uid=500
base_gid=500
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
default_group=users
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+41
View File
@@ -0,0 +1,41 @@
last_count=1000
homedir_perms=0755
display_max=400
files_remove=local
passwd_file=/etc/passwd
user_files=/etc/skel
post_command=
shadow_file=
base_uid=100
group_file=/etc/group
base_gid=100
lock_string=*
empty_mode=1
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=1
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
new_user_gid=0
delete_root=0
md5=1
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
+45
View File
@@ -0,0 +1,45 @@
last_count=1000
files_remove=default
post_command=
shadow_file=/etc/shadow
pre_command=
master_file=
gshadow_file=
sort_mode=0
group_file=/etc/group
base_gid=1000
homedir_perms=0755
default_group=
passwd_file=/etc/passwd
user_files=/var/sysadm/config/default.cshrc /var/sysadm/config/default.login /var/sysadm/config/default.profile
empty_mode=0
new_user_group=0
display_mode=1
display_max=400
skip_md5=0
base_uid=1000
passwd_stars=0
lock_string=*
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
new_user_gid=0
delete_root=0
md5=1
default_group=user
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
+42
View File
@@ -0,0 +1,42 @@
last_count=1000
homedir_perms=0755
display_max=400
files_remove=dot
user_files=/usr/share/skel
passwd_file=
master_file=
post_command=
shadow_file=
group_file=
base_uid=1000
base_gid=1000
lock_string=*
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
new_user_gid=0
delete_root=0
md5=1
home_base=/Users
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
+43
View File
@@ -0,0 +1,43 @@
last_count=1000
homedir_perms=0755
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=500
base_gid=500
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=1
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
random_password=0
extra_real=0
default_min=0
default_max=99999
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=2
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+43
View File
@@ -0,0 +1,43 @@
last_count=1000
homedir_perms=0755
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=500
base_gid=500
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=1
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+41
View File
@@ -0,0 +1,41 @@
last_count=1000
homedir_perms=0755
display_max=400
user_files=/etc/skel
passwd_file=
master_file=/etc/master.passwd
post_command=/usr/sbin/pwd_mkdb -p /etc/master.passwd
shadow_file=
group_file=/etc/group
base_uid=1000
base_gid=1000
lock_string=*
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
new_user_gid=0
max_length=16
delete_root=0
md5=1
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
+45
View File
@@ -0,0 +1,45 @@
last_count=1000
homedir_perms=0755
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
group_file=/etc/group
shadow_file=/etc/shadow
base_uid=500
base_gid=500
lock_string=*
empty_mode=0
last_command=last
last_format=linux
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
sort_mode=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
default_group=users
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+45
View File
@@ -0,0 +1,45 @@
last_count=1000
homedir_perms=0750
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=1000
base_gid=1000
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
default_group=users
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
nscd_restart=/etc/rc.d/nscd restart
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+42
View File
@@ -0,0 +1,42 @@
last_count=1000
homedir_perms=0755
display_max=400
files_remove=dot
user_files=/usr/share/skel
passwd_file=
master_file=/etc/master.passwd
post_command=pwd_mkdb -p /etc/master.passwd
shadow_file=
group_file=/etc/group
base_uid=1000
base_gid=1000
lock_string=*
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
new_user_gid=0
max_length=16
delete_root=0
md5=1
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
+43
View File
@@ -0,0 +1,43 @@
last_count=1000
homedir_perms=0755
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=500
base_gid=500
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=1
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+51
View File
@@ -0,0 +1,51 @@
last_count=1000
homedir_perms=0755
display_max=400
files_remove=local
user_files=/usr/lib/mkuser/$shell
passwd_file=/etc/passwd
post_command=
shadow_file=/etc/shadow
group_file=/etc/group
base_uid=1000
base_gid=1000
lock_string=*LK*
empty_mode=0
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
home_base=/usr
copy_symlinks=1
files_remap_profile=.profile
files_remap_login=.login
files_remap_cshrc=.cshrc
files_remap_bashrc=.bashrc
files_remap_kshrc=.kshrc
files_remap_appllist2=.appllist2
files_remap_desked_pref=.desked_pref
passwd_dict=0
passwd_same=0
email_type=0
new_user_gid=0
delete_root=0
md5=1
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
+41
View File
@@ -0,0 +1,41 @@
last_count=1000
homedir_perms=0755
display_max=400
files_remove=local
passwd_file=/etc/passwd
user_files=/etc/skel
post_command=
shadow_file=
base_uid=100
group_file=/etc/group
base_gid=100
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
new_user_gid=0
delete_root=0
md5=1
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
+43
View File
@@ -0,0 +1,43 @@
last_count=1000
homedir_perms=0755
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=1000
base_gid=1000
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
default_group=users
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+43
View File
@@ -0,0 +1,43 @@
last_count=1000
homedir_perms=0750
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=1000
base_gid=1000
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=1
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+43
View File
@@ -0,0 +1,43 @@
last_count=1000
homedir_perms=0750
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=500
base_gid=500
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=1
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+43
View File
@@ -0,0 +1,43 @@
last_count=1000
homedir_perms=0755
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=500
base_gid=500
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
default_group=users
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+43
View File
@@ -0,0 +1,43 @@
last_count=1000
homedir_perms=0755
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=500
base_gid=500
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+43
View File
@@ -0,0 +1,43 @@
last_count=1000
homedir_perms=0755
display_max=400
files_remove=local
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
shadow_file=/etc/shadow
group_file=/etc/group
base_uid=1000
base_gid=1000
lock_string=*LK*
empty_mode=1
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
default_group=staff
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
+44
View File
@@ -0,0 +1,44 @@
last_count=1000
homedir_perms=0750
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=500
base_gid=500
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
default_group=users
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+45
View File
@@ -0,0 +1,45 @@
last_count=1000
homedir_perms=0750
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=1000
base_gid=1000
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
default_group=users
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
nscd_restart=/etc/rc.d/nscd restart
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+43
View File
@@ -0,0 +1,43 @@
last_count=1000
homedir_perms=0755
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=500
base_gid=500
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=1
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+44
View File
@@ -0,0 +1,44 @@
last_count=1000
homedir_perms=0755
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=500
base_gid=500
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
default_group=users
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+44
View File
@@ -0,0 +1,44 @@
last_count=1000
homedir_perms=0755
display_max=400
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
group_file=/etc/group
shadow_file=/etc/shadow
gshadow_file=/etc/gshadow
base_uid=500
base_gid=500
lock_string=*
empty_mode=0
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
home_base=/home
new_user_gid=0
delete_root=0
md5=1
default_group=users
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
selinux_con=user_u:object_r:user_home_dir_t
+41
View File
@@ -0,0 +1,41 @@
last_count=1000
homedir_perms=0755
display_max=400
files_remove=local
user_files=/etc/skel
passwd_file=/etc/passwd
post_command=
shadow_file=/etc/shadow
group_file=/etc/group
base_uid=1000
base_gid=1000
lock_string=*LK*
empty_mode=1
sort_mode=0
new_user_group=0
skip_md5=0
display_mode=1
passwd_stars=0
delete_only=0
from_files=0
alias_check=0
home_style=0
random_password=0
extra_real=0
passwd_dict=0
passwd_same=0
email_type=0
new_user_gid=0
delete_root=0
md5=1
uid_mode=1
gid_mode=1
gid_calc=0
uid_calc=0
default_other=1
shells=fixed,passwd,shells
secmode=0
last_show=0
config-aix
passwd_progmode=0
membox=0
+74
View File
@@ -0,0 +1,74 @@
line1=Home directory options,11
homedir_perms=Permissions on new home directories,0
user_files=Copy files into new home directories from,9,40,3
home_base=Automatic home directory base,3,Not set
real_base=Real home directory base,3,Same as above
home_style=Automatic home directory style,4,0-home/username,1-home/u/username,2-home/u/us/username,3-home/u/s/username,4-Just base directory,5-home/primary_group/username
selinux_con=SElinux context for new home directories,10,-None,*-System default
line2=New user options,11
base_uid=Lowest UID for new users,0,5
base_gid=Lowest GID for new groups,0,5
uid_mode=Default UID entry method,4,0-User Entered,1-Auto Incremented,2-Calculated
gid_mode=Default GID entry method,4,0-User Entered,1-Auto Incremented,2-Calculated
uid_calc=UID Calculation Method,4,0-Berkeley cksum,1-Custom mkuid program
gid_calc=GID Calculation Method,4,0-Berkeley cksum,1-Custom mkgid program
new_user_group=Create new group for new users?,1,1-Yes,0-No
new_user_gid=Assign same ID to new user and group?,1,1-Yes,0-No
md5=Password encryption method,1,1-Determine automatically,0-<tt>DES</tt>,2-<tt>MD5</tt>,3-<tt>Blowfish</tt>,4-<tt>SHA512</tt>,5-<tt>yescrypt</tt>
alias_check=Check for sendmail alias clashes?,1,1-Yes,0-No
delete_only=Only delete files owned by user?,1,1-Yes,0-No
max_length=Maximum user and group name length,3,Unlimited
username_re=Perl regexp to check username against,3,None
shells=Build list of shells from,2,fixed-Builtin list,passwd-Existing users,shells-/etc/shells
line3=New user defaults,11
default_group=Default primary group for new users,6,Default
default_secs=Default secondary groups for new users,3,None
default_shell=Default shell for new users,3,First in list
default_min=Default minimum days for new users,3,None
default_max=Default maximum days for new users,3,None
default_warn=Default warning days for new users,3,None
default_inactive=Default inactive days for new users,3,None
default_expire=Default expiry date for new users (dd/mm/yyyy),3,None
default_other=Create and update in other modules,1,1-Yes,0-No
line4=Display options,11
display_max=Maximum number of items to display before pagination is applied,0
sort_mode=Sort users and groups by,4,0-Order in file,1-Username,2-Real name,3-Surname,4-Shell,5-UID or GID,6-Home directory
last_count=Number of previous logins to display,3,Unlimited
last_show=Show last login in user list?,1,1-Yes,0-No
display_mode=Display users and groups by,1,2-Primary group categorised,1-Full details,0-Name only
passwd_stars=Conceal plain-text password?,1,1-Yes,0-No
from_files=Get user and group info from,1,1-Files,0-System calls
random_password=Generate password for new users?,1,1-Yes,0-No
extra_real=Show office and phone details?,1,1-Yes,0-No
delete_root=Allow deletion of system users and groups?,1,1-Yes,0-No
secmode=Show secondary groups on user form?,1,0-Yes,1-No,2-As text box
membox=Edit group members using,1,1-Text box,0-User selector
line5=Password restrictions,11
passwd_min=Minimum password length,3,No minimum
passwd_dict=Prevent dictionary word passwords?,1,1-Yes,0-No
dict_file=Files containing dictionary words,3,Use system defaults
passwd_re=Perl regexp to check password against,3,None
passwd_redesc=Human-readable description of regexp,3,Just use regexp
passwd_same=Prevent passwords containing username?,1,1-Yes,0-No
passwd_prog=External password-checking program,3,None
passwd_progmode=Pass username and password to program,1,1-As input,0-As parameters
passwd_mindays=Number of days before password change is allowed,3,None
line0=Before and after commands,11
pre_command=Command to run before making changes,0
post_command=Command to run after making changes,0
line6=System configuration,11
passwd_file=Password file,3,Generated
group_file=Group file,0
shadow_file=Shadow password file,3
master_file=BSD master password file,3
gshadow_file=Shadow group file,3
netinfo_domain=NetInfo domain or directory server to manage,3,Local domain (<tt>.</tt>)
lock_string=Replace password for locked accounts with,0
lock_prepend=Prepend to password for temporarily disabled accounts,3,Default (!)
nscd_restart=Command to restart nscd,3,Send HUP signal
+68
View File
@@ -0,0 +1,68 @@
line1=Опции за домашна директория,11
homedir_perms=Права за новите домашни директории,0
user_files=Копиране на файлове в новите домашни директории от,9,40,3
home_base=Основа за автоматична домашна директория,3,Не е зададена
real_base=Основа за реалната домашна директория,3,Същата като по-горе
home_style=Стил за автоматична домашна директория,4,0-home/username,1-home/u/username,2-home/u/us/username,3-home/u/s/username,4-Просто основна директория,5-home/primary_group/username
selinux_con=SElinix контекст за нови домашни директории,10, -Няма,*-Подразбиращият се за системата
line2=Опции за нов потребител,11
base_uid=Най-малък UID за нови потребители,0,5
base_gid=Най-малък GID за нови групи,0,5
uid_mode=Подразбиращ се метод за въвеждане на UID,4,0-Въвеждане от потребителя,1-Автоматичен инкремент,2-Изчисляване
gid_mode=Подразбиращ се метод за въвеждане на GID,4,0-Въвеждане от потребителя,1-Автоматичен инкремент,2-Изчисляване
uid_calc=Метод за изчисляване на UID,4,0-Berkeley cksum,1-Потребителска mkuid програма
gid_calc=Метод за изчисляване на GID,4,0-Berkeley cksum,1-Потребителска mkgid програма
new_user_group=Създаване на нова група за нови потребители,1,1-Да,0-Не
new_user_gid=Задаване на един и същи ID на нов потребител и група?,1,1-Да,0-Не
md5=Метод за шифроване на пароли,1,1-Автоматично определяне,0-<tt>DES</tt>,2-<tt>MD5</tt>,3-<tt>Blowfish</tt>,4-<tt>SHA512</tt>,5-<tt>yescrypt</tt>
alias_check=Проверка за конфликти между синоними на sendmail?,1,1-Да,0-Не
delete_only=Само изтриване на файловете&#44; собственост на потребителя?,1,1-Да,0-Не
max_length=Максимална дължина на име за потребители и групи,3,Неограничено
username_re=Регулярен израз на Perl за проверяване на потребителски имена,3,Няма
shells=Съставяне на списъка от shell-ове от,2,fixed-Зададен списък,passwd-Съществуващите потребители,shells-/etc/shells
line3=Подразбиращи се стойности за нов потребител,11
default_group=Подразбираща се първична група за нови потребители,6,Подразбиращата се
default_secs=Подразбиращи се вторични групи за нови потребители,3,Няма
default_shell=Подразбиращ се shell за нови потребители,3,Първият в списъка
default_min=Подразбиращ се минимален брой дни за нови потребители,3,Няма
default_max=Подразбиращ се максимален брой дни за нови потребители,3,Няма
default_warn=Подразбиращи се дни за предупреждаване на нови потребители,3,Няма
default_inactive=Подразбиращ се брой дни на неактивност за нови потребители,3,Няма
default_expire=Подразбираща се дата на изтичане за нови потребители (dd/mm/yyyy),3,Няма
default_other=Създаване и променяне в други модули,1,1-Да,0-Не
line4=Опции за показване,11
display_max=Максимален брой потребители или групи за показване,0
sort_mode=Подреждай потребителите и групите по,4,0-Реда им във файла,1-Потребителско име,2-Истинско име,3-Фамилно име,4-Shell,5-UID или GID,6-Домашна директория
last_count=Брой предишни логвания за показване,3,Неограничен
last_show=Показване на последното логване в списъка на потребителя,1,1-Да,0-Не
display_mode=Показвай потребители и групи по,1,2-Първична група категоризирана,1-Пълни детайли,0-Само име
passwd_stars=Прикриване на пароли в открит текст?,1,1-Да,0-Не
from_files=Вземане на информацията за потребители и групи от,1,1-Файлове,0-Системни повиквания
random_password=Генериране на пароли за нови потребители?,1,1-Да,0-Не
extra_real=Показване на информацията за офис и телефон?,1,1-Да,0-Не
delete_root=Разреши изтриването на системни потребители и групи?,1,1-Да,0-Не
secmode=Показване на вторичните групи в потребителската форма?,1,0-Да,1-Не,2-Като текстова кутия
membox=Редактиране на членовете на група чрез,1,1-Текстова кутия,0-Селектор на потребители
line5=Ограничения за пароли,11
passwd_min=Минимална дължина на парола,3,Няма минимум
passwd_dict=Недопускане на думи от речника за пароли?,1,1-Да,0-Не
dict_file=Файлове&#44; които съдържат думи от речника,3,Използвай системната настройка
passwd_re=Регулярен израз на Perl за проверяване на пароли,3,Няма
passwd_redesc=Описание в словесен вид на регулярния израз,3,Просто използвай регулярния израз
passwd_same=Недопускане на пароли&#44; съдържащи потребителското име?,1,1-Да,0-Не
passwd_prog=Външна програма за проверка на пароли,3,Няма
passwd_progmode=Предаване на потребителско име и парола на програма,1,1-Като вход,0-Като параметри
passwd_mindays=Брой дни преди да се разреши промяна на парола,3,Няма
line0=Команди преди и след,11
pre_command=Команда за стартиране преди правене на промени,0
post_command=Команда за стартиране след правене на промени,0
line6=Системна конфигурация,11
passwd_file=Файл за пароли,3,Генериран
group_file=Файл за групи,0
shadow_file=Shadow файл за пароли,3
master_file=BSD-стил главен файл за пароли,3
gshadow_file=Shadow файл за групи,3
netinfo_domain=NetInfo домейн или сървър на директории за управление,3,Локален домейн (<tt>.</tt>)
lock_string=Замяна на паролата за заключени акаунти с,0
lock_prepend=Добавяне пред паролата за временно изключени акаунти,3,Подразбиращото се (!)
nscd_restart=Команда за рестартиране на nscd,3,Изпрати HUP сигнал
+68
View File
@@ -0,0 +1,68 @@
line1=Opcions del directori arrel,11
homedir_perms=Permisos dels nous directoris arrel,0
user_files=Copia els fitxers als nous directoris arrel a partir de,9,40,3
home_base=Base automàtica del directori arrel,3,No establerta
real_base=Base real del directori arrel,3,La mateixa que abans
home_style=Estil automàtic del directori arrel,4,0-home/usuari,1-home/u/usuari,2-home/u/us/usuari,3-home/u/s/usuari,4-Només el directori base,5-home/grup_primari/usuari
selinux_con=Context SElinux per als nous directoris arrel,10,-Cap,*-Per defecte del sistema
line2=Opcions d'usuari nou,11
base_uid=UID més baix per a nous usuaris,0,5
base_gid=GID més baix per a nous grups,0,5
uid_mode=Mètode d'introducció del UID per defecte,4,0-Introduït per l'usuari,1-Autoincremental,2-Calculat
gid_mode=Mètode d'introducció del GID per defecte,4,0-Introduït per l'usuari,1-Autoincremental,2-Calculat
uid_calc=Mètode de càlcul del UID,4,0-Suma de comprovació Berkeley,1-Programa mkuid personalitzat
gid_calc=Mètode de càlcul del GID,4,0-Suma de comprovació Berkeley,1-Programa mkgid personalitzat
new_user_group=Crea un grup nou per als usuaris nous,1,1-Sí,0-No
new_user_gid=Assigna el mateix ID al nou usuari i al grup,1,1-Sí,0-No
md5=Mètode de xifratge de contrasenyes,1,1-Determinat automàticament,0-<tt>DES</tt>,2-<tt>MD5</tt>,3-<tt>Blowfish</tt>,4-<tt>SHA512</tt>,5-<tt>yescrypt</tt>
alias_check=Comprova duplicats amb els àlies de sendmail,1,1-Sí,0-No
delete_only=Esborra només els fitxers propietat de l'usuari,1,1-Sí,0-No
max_length=Llargària màxima dels noms d'usuaris i grups,3,Il·limitada
username_re=Expressió regular Perl per comprovar el nom d'usuari,3,Cap
shells=Construeix la llista de shells ia partir de,2,fixed-Llista integrada,passwd-Usuaris existents,shells-/etc/shells
line3=Valors per defecte d'usuari nou,11
default_group=Grup per defecte dels nous usuaris,6,Omissió
default_secs=Grups secundaris per defecte dels usuaris nous,3,Cap
default_shell=Shell per defecte dels nous usuaris,3,La primera de la llista
default_min=Dies mínims per defecte dels usuaris nous,3,Cap
default_max=Dies màxims per defecte dels usuaris nous,3,Cap
default_warn=Dies d'avís per defecte dels usuaris nous,3,Cap
default_inactive=Dies d'inactivitat per defecte dels usuaris nous,3,Cap
default_expire=Data de caducitat per defecte dels usuaris nous (dd/mm/aaaa),3,Cap
default_other=Crea i actualitza en els altres mòduls,1,1-Sí,0-No
line4=Opcions de mostra,11
display_max=Màxim nombre d'usuaris o grups a mostrar,0
sort_mode=Ordena els usuaris i grups per,1,0-L'ordre del fitxer,1-Nom d'usuari,2-Nom real,3-Nom de fonts,4-Shell,5-UID o GID,6-Directori arrel
last_count=Nombre d'entrades prèvies a mostrar,3,Il·limitat
last_show=Mostra la darrera entrada a la llista d'usuaris,1,1-Sí,0-No
display_mode=Mostra els usuaris i grups,1,2-Categoritzats per grup primari,1-Amb tots els detalls,0-Només amb el nom
passwd_stars=Oculta les contrasenyes en text planer,1,1-Sí,0-No
from_files=Pren la informació de l'Usuari i el Grup de,1,1-Fitxers,0-Crides de sistema
random_password=Genera contrasenya per als nous usuaris,1,1-Sí,0-No
extra_real=Mostra els detalls del despatx i el telèfon,1,1-Sí,0-No
delete_root=Permet la supressió d'usuaris i grups de sistema,1,1-Sí,0-No
secmode=Mostra els grups secundaris al formulari de l'usuari,1,0-Sí,1-No,2-Com a caixa de text
membox=Edita els membres dels grups utilitzant,1,1-Una caixa de text,0-Selector d'usuaris
line5=Restriccions de les contrasenyes,11
passwd_min=Llargària mínima de la contrasenya,3,Sense mínims
passwd_dict=Evita contrasenyes amb paraules de diccionari,1,1-Sí,0-No
dict_file=Fitxers que contenen paraules de diccionari,3,Per defecte del sistema
passwd_re=Expressió regular Perl per a verificar la contrasenya,3,Cap
passwd_redesc=Descripció de l'expressió regular humanament llegible,3,No&#44; només l'expressió
passwd_same=Evita que les contrasenyes continguin noms d'usuari,1,1-Sí,0-No
passwd_prog=Programa extern de comprovació de contrasenyes,3,Cap
passwd_progmode=Passa el nom i la contrasenya de l'usuari al programa,1,1-Com a entrada,0-Com a paràmetres
passwd_mindays=Nombre de dies abans de permetre el canvi de contrasenya,3,Cap
line0=Ordres d'abans i després,11
pre_command=Orde a executar abans de fer els canvis,0
post_command=Orde a executar després de fer els canvis,0
line6=Configuració del sistema,11
passwd_file=Fitxer de contrasenyes,3,Generat
group_file=Fitxer de grup,0
shadow_file=Fitxer de contrasenyes ocultes,3
master_file=Fitxer mestre de contrasenyes BSD,3
gshadow_file=Fitxer de grups ocults,3
netinfo_domain=Domini NetInfo o directori del servidor a gestionar,3,Domini local (<tt>.</tt>)
lock_string=Substitueix la contrasenya dels comptes bloquejats amb,0
lock_prepend=Prefixa les contrasenyes dels comptes desactivats temporalment amb,3,Defecte (!)
nscd_restart=Ordre per reiniciar nscd,3,Envia el senyal HUP
+63
View File
@@ -0,0 +1,63 @@
line1=Nastavení domovského adresáře,11
homedir_perms=Práva pro nově vytvořené domovské adresáře,0
user_files=Kopírovat soubory do nového domovského adresáře z,9,40,3
home_base=Automatický základ domovského adresáře,3,není nastaven
real_base=Základna domovských adresářů,3,Stejný jako výše
home_style=Automatický styl domovského adresáře,4,0-home/username,1-home/u/username,2-home/u/us/username,3-home/u/s/username
line2=Nastavení nového uživatele,11
base_uid=Nejmenší UID pro nové uživatele,0,5
base_gid=Nejmenší GID pro nové skupiny,0,5
uid_mode=Výchozí metoda pro vložení UID,4,0-Vloženo uživatelem,1-Automaticky narůstající,2-Vypočítaný
gid_mode=Výchozí metoda pro vložení GID,4,0-Vloženo uživatelem,1-Automaticky narůstající,2-Vypočítaný
uid_calc=Metoda výpočtu UID,4,0-Berkeley cksum,1-Náhodný program mkuid
gid_calc=Metoda výpočtu GID,4,0-Berkeley cksum,1-Náhodný program mkgid
new_user_group=Vytvořit novou skupinu pro nové uživatele?,1,1-ano,0-ne
new_user_gid=Přidělit stejné ID pro nového uživatele i skupinu?,1,1-ano,0-ne
md5=Metoda kryptování hesla,1,1-Automatické zjištění,0-DES crypt,2-MD5
alias_check=Kontrolovat kolize v sendmail aliasech?,1,1-ano,0-ne
delete_only=Smazat pouze soubory vlastněné uživatelem?,1,1-ano,0-ne
max_length=Maximální délka jmen uživatele a skupiny,3,Neomezeno
username_re=Perl regexp pro kontrolu jména uživatele,3,Nic
shells=Vytvořit seznam shells z,2,fixed-Zabudovaný seznam,passwd-Existující uživatelé,shells-/etc/shells
line3=Výchozí nastavení pro nové uživatele,11
default_group=Výchozí primární skupina pro nové uživatele,6,Výchozí
default_secs=Výchozí sekundární skupina pro nové uživatele,3,Nic
default_shell=Výchozí shell pro nové uživatele,3,První v seznamu
default_min=Výchozí minimální počet dnů pro nové uživatele,3,Nic
default_max=Výchozí maximální počet dnů pro nové uživatele,3,Nic
default_warn=Výchozí varovný počet dnů pro nové uživatele,3,Nic
default_inactive=Výchozí neaktivní počet dnů pro nové uživatele,3,Nic
default_expire=Výchozí čas expirace pro nové uživatele (dd/mm/yyyy),3,Nic
default_other=Vytvořit a aktualizovat v jiných modulech?,1,1-Ano,0-Ne
line4=Nastavení zobrazení,11
display_max=Maximální počet zobrazených uživatelů,0
sort_mode=Seřadit uživatele a skupiny podle,4,0-pořadí v souboru,1-uživatelského jména,2-skutečného jména,3-příjmení,4-shellu,5-UID nebo GID,6-domovského adresáře
last_count=Počet zobrazení předchozích přihlášení,3,Neomezeno
last_show=Zobrazit v seznamu poslední přihlášení uživatele?,1,1-Ano,0-Ne
display_mode=Zobrazit uživatele a skupiny podle,1,2-kategorizace primární skupiny,1-úplných detailů,0-pouze podle jména
passwd_stars=Zatajovat plain-text heslo?,1,1-ano,0-ne
from_files=Podat uživateli a skupině informaci ze,1,1-souborů,0-systemových volání
random_password=Vygenerovat heslo pro nové uživatele?,1,1-ano,0-ne
extra_real=Ukázat detaily o kanceláři a telefonu?,1,1-ano,0-ne
delete_root=Povolit mazání systémových uživatelů a skupin?,1,1-Ano,0-Ne
secmode=Zobrazit v uživatelském formuláři sekundární skupiny?,1,0-Ano,1-Ne,2-Jako textový rámeček
line5=Omezení pro heslo,11
passwd_min=Minimální délka hesla,3,Žádné minimum
passwd_dict=Nepovolit hesla ze slovníků?,1,1-ano,0-ne
passwd_re=Perl regexp pro kontrolu hesla,3,Nic
passwd_same=Nepovolit hesla obsahující jméno uživatele?,1,1-ano,0-ne
passwd_prog=Externí program pro kontrolu hesla,3,Nic
passwd_progmode=Poslat uživatelské jméno a heslo do programu,1,1-jako vstup,0-jako parametry
line0=Příkazy před a po,11
pre_command=Příkaz vykonané před provedením změn,0
post_command=Příkaz vykonané po provedení změn,0
line6=Konfigurace systému,11
passwd_file=Soubor s hesly,3,Generováno
group_file=Soubor skupin,0
shadow_file=Shadow soubor hesel,3
master_file=BSD hlavní soubor hesel,3
gshadow_file=Shadow soubor skupin,3
netinfo_domain=NetInfo doména pro správu,3,Lokální doména (<tt>.</tt>)
lock_string=Nahradit heslo uzamčených úč s,0
lock_prepend=Označit hesla pro dočasně zakázané účty,3,Výchozí (!)
nscd_restart=Příkaz restartující nscd,3,Poslat HUP signál
+62
View File
@@ -0,0 +1,62 @@
line1=Hjemmemappe indstillinger,11
homedir_perms=Tilladelser på nye hjemmemapper,0
user_files=Kopier filer til nye hjemmemapper fra,9,40,3
home_base=Automatisk hjemmemappe base,3,Ikke sat
real_base=Rigtig hjemmemappebase,3,Samme som foroven
home_style=Automatisk hjemmemappe stil,4,0-home/brugernavn,1-home/u/brugernavn,2-home/u/us/brugernavn,3-home/u/s/brugernavn,4-Kun basemappe,5-home/primær_gruppe/brugernavn
line2=Nye bruger indstillinger,11
base_uid=Laveste UID for ny bruger,0,5
base_gid=Laveste GID for ny gruppe,0,5
uid_mode=Standard UID indførsels metode,4,0-Brugerindført,1-Autonummerering,2-Beregnet
gid_mode=Standard GID indførselsmetode,4,0-Brugerindført,1-Autonummerering,2-Beregnet
uid_calc=UID beregningsmetode,4,0-Berkeley cksum,1-Brugerdefineret mkuid program
gid_calc=GID beregningsmetode,4,0-Berkelet cksum,1-Brugerdefineret mkgid program
new_user_group=Opret ny gruppe for ny brugere,1,1-Ja,0-Nej
new_user_gid=Tildel samme ID til ny bruger og gruppe?,1,1-Ja,0-Nej
md5=Adgangskode krypteringsmetode,1,1-Bestem automatisk,0-DES crypt,2-MD5
alias_check=Tjek for sendmail alias konflikter?,1,1-Ja,0-Nej
delete_only=Slet kun filer ejet af bruger?,1,1-Ja,0-Nej
max_length=Maksimum bruger og gurppe navnelængde,3,Ubegrænset
username_re=Perl regexp til at tjekke brugernavn imod,3,Ingen
shells=Byg liste af skaller fra,2,fast-Builtin liste,adgangskode-Eksisterende brugere,skaller-/etc/shells
line3=Ny bruger standard,11
default_group=Standard primær gruppe for nye brugere,6,Standard
default_secs=Standard sekundære grupper for nye brugere,3,Ingen
default_shell=Standard skal for nye brugere,3,Første på liste
default_min=Standard minimum dage for nye brugere,3,Ingen
default_max=Standard maksimum dage for nye brugere,3,Ingen
default_warn=Standard advarselsdage for nye brugere,3,Ingen
default_inactive=Standard inaktive dage for nye brugere,3,Ingen
default_expire=Standard udløbsdato for nye brugere (dd/mm/yyyy),3,Ingen
default_other=Opret og opdater i andre moduler,1,1-Ja,0-Nej
line4=Vis indstillinger,11
display_max=Maksimum antal viste brugere og grupper,0
sort_mode=Sorter brugere og grupper efter,4,0-Sortering i fil,1-Brugernavn,2-Rigtigt navn,3-Efternavn,4-Skal,5-UID eller GID,6-Hjemmemappe
last_count=Antal af tidligere log ind de skal vises,3,Ubegrænset
last_show=Vis sidste log ind i bruger liste?,1,1-Ja,0-Nej
display_mode=Vis brugere og grupper efter,1,2-Primær gruppe kategoriseret,1-Fuldt detaljeret,0-Kun navn
passwd_stars=Skjul ren-tekst adgangskode?,1,1-Ja,0-Nej
from_files=Få bruger og gruppeinfo fra,1,1-Filer,0-Systemkald
random_password=Generer adgangskode for ny bruger?,1,1-Ja,0-Nej
extra_real=Vis kontor og telefondetaljer?,1,1-Ja,0-Nej
delete_root=Tillad sletning af systembrugere og grupper?,1,1-Ja,0-Nej
secmode=Vis sekundære grupper på brugerform?,1,0-Ja,1-Nej
line5=Adgangskode begrænsninger,11
passwd_min=Minimum adgangskodelængde,3,Intet minimum
passwd_dict=Undgå ordbogs ord adgangskoder?,1,1-Ja,0-Nej
passwd_re=Perl regexp til at tjekke adgangskode imod,3,Ingen
passwd_same=Undgå adgangskode der indeholder brugernavn?,1,1-Ja,0-Nej
passwd_prog=Eksternt adgangskode-tjek program,3,Intet
line0=Før og efter kommandoer,11
pre_command=Kommando til at køre før ændringer,0
post_command=Kommando til at køre efter ændringer,0
line6=Systemkonfiguration,11
passwd_file=Adgangskodefil,3,Genereret
group_file=Gruppefil,0
shadow_file=Skygge adgangskode fil,3
master_file=BSD master adgangskodefil,3
gshadow_file=Skygge gruppefil,3
netinfo_domain=Netinfo domæne til administration,3,Lokalt domæne (<tt>,</tt>)
lock_string=Erstat adgangskode for låste kontoer med,0
lock_prepend=Foransæt til adgangskode for midlertidigt deaktiverede kontoer,3,Standard (!)
nscd_restart=Kommando til at genstarte nscd,3,Send HUP signal
+68
View File
@@ -0,0 +1,68 @@
line1=Home-Verzeichnis Optionen,11
homedir_perms=Berechtigungen für neue Home-Verzeichnisse (oktal anzugeben),0
user_files=Kopiere Dateien in neue Home-Verzeichnisse aus,9,40,3
home_base="Root-Verzeichnis" für Home-Verzeichnisse,3,Nicht gesetzt
real_base=Echtes Home-Verzeichnis Basis,3,Wie oben
home_style=Einrichtungsart für Home-Verzeichnisse,4,0-home/username,1-home/u/username,2-home/u/us/username,3-home/u/s/username,4-Nur Root-Verzeichnis,5-home/primary_group/username
selinux_con=SELinux-Kontext für neue Home-Verzeichnisse,10,-Keins,*-System Standard
line2=Optionen für neue Benutzer,11
base_uid=Niedrigste User-ID für neue Benutzer,0,5
base_gid=Niedrigste Gruppen-ID für neue Benutzer,0,5
uid_mode=User-ID Eingabemethode,4,0-Benutzerangabe,1-Autoinkrement,2-Errechnet
gid_mode=Gruppen-ID Eingabemethode,4,0-Benutzerangabe,1-Autoinkrement,2-Errechnet
uid_calc=User-ID Errechnungsmethode,4,0-Berkeley chksum,1-Benutzerdefiniertes mkgid Programm
gid_calc=Gruppen-ID Errechnungsmethode,4,0-Berkeley chksum,1-Benutzerdefiniertes mkgid Programm
new_user_group=Eine Gruppe für neue Benutzer anlegen?,1,1-Ja,0-Nein
new_user_gid=Gleiche ID für Benutzer und Gruppe?,1,1-Ja,0-Nein
md5=Passwortverschlüsselungsmethode,1,1-Automatisch ermitteln,0-<tt>DES</tt>,2-<tt>MD5</tt>,3-<tt>Blowfish</tt>,4-<tt>SHA512</tt>,5-<tt>yescrypt</tt>
alias_check=Überprüfe auf vorhandene Sendmail-Aliase?,1,1-Ja,0-Nein
delete_only=Nur Dateien löschen&#44; die dem Benutzer gehören?,1,1-Ja,0-Nein
max_length=Maximale Länge von Benutzer- und Gruppennamen,3,Unbegrenzt
username_re=Perl "RegExp" für die Überprüfung von Benutzernamen,3,Keine
shells=Build Liste der Shells aus,2,Fixe-Builtin Liste,passwd-Bestehende Benutzer,shells-/etc/shells
line3=Standards für neue Benutzer,11
default_group=Primäre Gruppe für neue Benutzer,6,Standard
default_secs=Sekundäre Gruppen für neue Benutzer,3,Keine
default_shell=Shell für neue Benutzer,3,Erste in Liste
default_min=Minimale Tage für neue Benutzer,3,Keine
default_max=Maximale Tage für neue Benutzer,3,Keine
default_warn=Passwort-Warnung für neue Benutzer,3,Keine
default_inactive=Inaktive Tage für neue Benutzer,3,Keine
default_expire=Standard Verfallsdatum für neue Benutzer (dd/mm/yyyy),3,Keine
default_other=Erstelle und Aktualisiere in anderen Modulen,1,1-Ja,0-Nein
line4=Anzeigeoptionen,11
display_max=Maximale Anzeigeanzahl von Benutzer und Gruppen,0
sort_mode=Sortiere Benutzer und Gruppen nach,4,0-Anordnung in der entsprechenden Datei,1-Benutzername,2-Realname,3-Familienname,4-Shell,5-UID oder GID,6-Home-Verzeichnis
last_count=Anzahl der vorangegangenen Anmeldungen&#44; die angezeigt werden,3,Unbegrenzt
last_show=Zeige letzten Login in Benutzerliste?,1,1-Ja,0-Nein
display_mode=Benutzer und Gruppen anzeigen,1,2-Kategorisiert nach Primärer Gruppe,1-Alle Details,0-Nur den Namen
passwd_stars=Plain-Text-Passworte verbergen?,1,1-Ja,0-Nein
from_files=Ermittele Benutzer- und Gruppeninfo anhand von,1,1-Dateien,0-Systemaufrufen
random_password=Passworte für neue Benutzer generieren?,1,1-Ja,0-Nein
extra_real=Büro- und Telefondaten anzeigen?,1,1-Ja,0-Nein
delete_root=Erlaube das Löschen von Systembenutzern- und Gruppen?,1,1-Ja,0-Nein
secmode=Zeige sekundäre Gruppen auf Benutzerformular?,1,0-Ja,1-Nein,2-Wie Textfeld
membox=Bearbeite die Gruppenmitglieder mit,1,1-Textfeld,0-Benutzer-Auswahl
line5=Passwort-Einstellungen,11
passwd_min=Minimale Passwortlänge,3,Kein Minimum
passwd_dict=Wörterbuchpassworte verhindern (wenn möglich)?,1,1-Ja,0-Nein
dict_file=Dateien beinhalten Wörter aus dem Wörterbuch,3,Systemstandards verwenden
passwd_re=Folgende "Regular Expression (Perl)" benutzen&#44; um Passworte zu prüfen,3,Keine
passwd_redesc=Lesbare Beschreibung der regexp,3,Verwendet einfach regexp
passwd_same=Passworte&#44; die den Benutzernamen beinhalten&#44; verhindern?,1,1-Ja,0-Nein
passwd_prog=Externes Passwort-Prüfprogramm,3,None
passwd_progmode=Leite Benutzernamen und Passwort zum Programm weitern,1,1-Als Eingabe,0-Als Parameter
passwd_mindays=Anzahl der Tage bevor Passwort-Änderung erlaubt ist,3,None
line0=Durchzuführende Kommandos vor und nach Änderungen,11
pre_command=Vor Änderungen durchführen,0
post_command=Nach Änderungen durchführen,0
line6=Systemkonfiguration,11
passwd_file=Passwort-Datei,3,Bereits erzeugte
group_file=Gruppen-Datei,0
shadow_file=Shadow-Passwort-Datei,3
master_file=BSD-Master-Passwort-Datei,3
gshadow_file=Shadow-Gruppen-Datei,3
netinfo_domain=NetInfo Domain&#44; die administriert werden soll,3,Lokale Domaine (<tt>.</tt>)
lock_string=Ersetze Passwort für gesperrte Konten mit,0
lock_prepend=Vorsetzen eines Passwortes für vorübergehend deaktivierte Konten,3,Standard (!)
nscd_restart=Befehl zum Neustarten von nscd,3,Sende HUP-Signal
+61
View File
@@ -0,0 +1,61 @@
line1=Opciones de directorio inicial,11
homedir_perms=Permisos de los nuevos directorios iniciales,0
user_files=Copiar archivos a nuevos directorios iniciales desde,9,40,3
home_base=Base de directorio inicial automática,3,Sin poner
real_base=Directorio de inicio real,3,El mismo que arriba
home_style=Estilo de directorio inicial automático,4,0-home/nombre_de_usuario,1-home/u/nombre_de_usuario,2-home/u/us/nombre_de_usuario,3-home/u/s/nombre_de_usuario,4-Sólo directorio base,5-home/grupo_primario/nombre_de_usuario
line2=Opciones de nuevo usuario,11
base_uid=UID más baja para nuevos usuarios,0,5
base_gid=GID más baja para nuevos grupos,0,5
uid_mode=Método de de entrada UID por defecto,4,0-Introducido por Usuario,1-Auto Incrementado,2-Calculado
gid_mode=Método de entrada de GID por defecto,4,0-Introducido por Usuario,1-Auto Incrementado,2-Calculado
uid_calc=Método de cálculo de UID,4,0-Cksum de Berkeley,1-Programa personalizado mkuid
gid_calc=Método de cálculo de GID,4,0-Cksum de Berkeley,1-Programa mkgid personalizado
new_user_group=¿Crear nuevo grupo para nuevos usuarios?,1,1-,0-No
new_user_gid=¿Asignar el mismo ID a nuevo usuario y grupo?,1,1-,0-No
md5=Método de encriptación de contraseña,1,1-Determinar automáticamente,0-Encriptación DES,2-MD5
alias_check=¿Revisar para evitar choques de alias de sendmail?,1,1-,0-No
delete_only=¿Sólo borrar archivos pertenecientes al usuario?,1,1-,0-No
max_length=Tamaño máximo de nombre de usuario y grupo,3,Ilimitada
username_re=Expresión regular de Perl contra la que chequear el nombre de usuario,3,Ninguna
shells=Construir lista de shells desde,2,fijo-Lista existente,passwd-Usuarios existentes,shells-/etc/shells
line3=Valores por defecto de nuevo usuario,11
default_group=Grupo primario por defecto para nuevos usuarios,6,Por defecto
default_secs=Grupos secundarios or defecto para nuevos usuarios,3,Ninguno
default_shell=Shell por defecto para nuevos usuarios,3,Primero de la lista
default_min=Días mínimos por defecto para nuevos usuarios,3,Ninguno
default_max=Días máximos por defecto para nuevos usuarios,3,Ninguno
default_warn=Días de aviso por defecto para nuevos usuarios,3,Ninguno
default_inactive=Días de inactividad por defecto para nuevos usuarios,3,Ninguno
default_expire=Fecha de expiración por defecto para nuevos usuarios (dd/mm/aaaa),3,Ninguna
default_other=Crear y actualizar en otros módulos,1,1-,0-No
line4=Opciones a mostrar,11
display_max=Máximo número de usuarios o grupos a mostrar,0
sort_mode=Clasificar usuarios y grupo por,4,0-Orden en archivo,1-Nombre de usuario,2-Nombre real,3-Alias,4-Shell,5-UID o GID,6-Directorio inicial
last_count=Número de logins previos a mostrar,3,Ilimitado
last_show=¿Mostrar el último login en la lista de usuarios?,1,1-,0-No
display_mode=Mostrar usuarios y grupos por,1,2-Grupo primario categorizado,1-Detalles completos,0-Sólo nombre
passwd_stars=¿Ocultar clave de acceso de sólo texto?,1,1-,0-No
from_files=Obtener información de usuario y grupo desde,1,1-Archivos,0-Llamadas a sistema
random_password=¿Generar clave de acceso para nuevos usuarios?,1,1-,0-No
extra_real=¿Muestro detalles de oficina y teléfono?,1,1-,0-No
delete_root=¿Permitir borrado de usuarios y grupos del sistema?,1,1-,0-No
secmode=¿Mostrar grupos secundarios en el formulario de usuario?,1,0-,1-No
line5=Restricciones de contraseña,11
passwd_min=Tamaño mínimo de contraseña,3,Sin mínimo
passwd_dict=¿Impedir contraseñas que sean palabras del diccionario?,1,1-,0-No
passwd_re=Expresión regular de Perl contra la que chequear la contraseña,3,Ninguna
passwd_same=¿Impedir contraseñas que contengan el nombre de usuario?,1,1-,0-No
passwd_prog=Programa externo de chequeo de contraseña,3,Ninguno
line0=Comandos Antes y Después,11
pre_command=Comando a ejecutar antes de realizar cambios,0
post_command=Comando a ejecutar tras realizar cambios,0
line6=Configuración del sistema,11
passwd_file=Archivo de contraseñas,3,Generado
group_file=Archivo de grupo,0
shadow_file=Archivo de clave de acceso en la sombra (Shadow),3
master_file=Archivo de clave de acceso maestra BSD,3
gshadow_file=Archivo de grupo en la sombra (Shadow),3
netinfo_domain=Dominio NetInfo a gestionar,3,Dominio local (<tt>.</tt>)
lock_string=Reemplazar contraseña para cuentas bloqueadas con,0
lock_prepend=Prepend a contraseña para cuentas temporalmente deshabilitadas,3,Por Defecto (!)
+60
View File
@@ -0,0 +1,60 @@
line1=گزينه‌هاي فهرست شخصي,11
homedir_perms=مجوزهاي فهرست شخصي جديد,0
user_files=پرونده ها در فهرست شخصي رونويسي شوند از:,9,40,3
home_base= پايه فهرست شخصي خودکار,3,تنظيم نشده
home_style=سبک فهرست شخصي خودکار,4,0-home/username,1-home/u/username,2-home/u/us/username,3-home/u/s/username,4-فقط فهرست راهنماي پايه,5-home/primary_group/username
line2=گزينه‌هاي کاربر جديد,11
base_uid=کوچک‌ترين شناسه کاربر براي کاربران جديد,0,5
base_gid=کوچک‌ترين شناسه گروه براي گروه‌هاي جديد,0,5
uid_mode=پيش‌گزيده روش وارد کردن شناسه کاربر,4,0-توسط کاربر وارد شود,1-به‌صورت خودکار افزايش يابد,2-محاسبه شود
gid_mode=پيش‌گزيده روش وارد کردن شناسه گروه,4,0- توسط کاربر وارد شود,1-به‌صورت خودکار افزايش يابد,2-محاسبه شود
uid_calc=روش محاسبه شناسه کاربر,4,0-Berkeley cksum,1-برنامه سفارشي mkuid
gid_calc=روش محاسبه شناسه گروه,4,0-Berkeley cksum,1-برنامه سفارشي mkgid
new_user_group=آيا براي کاربران جديد گروه جديدي ايجاد شود؟,1,1-بله,0-خير
new_user_gid=آيا به کاربر و گروه جديد شناسه يکسان اختصاص يابد؟,1,1-بله,0-خير
md5=روش رمزگذاري اسم‌رمز,1,1-به‌طور خودکار انتخاب شود,0-DES crypt,2-MD5
alias_check=آيا يکسان بودن با اسم مستعار sendmail بررسي شود؟,1,1-بله,0-خير
delete_only=آيا فقط پرونده‌هاي ايجاد شده توسط کاربر حذف شوند؟,1,1-بله,0-خير
max_length=بيشينه طول اسم‌کاربر و گروه,3,نامحدود
username_re=عبارت منظم Perl براي مقايسه اسم‌کاربر با آن,3,هيچ
shells=ساختن فهرستي از پوسته‌ها از,2,فهرست ثابت از قبل ساخته شده,اسم‌رمز کاربران موجود,پوسته‌هاي موجود در /etc/shells
line3=پيش‌گزيده‌هاي کاربر جديد,11
default_group=گروه اصلي پيش‌گزيده براي کاربران جديد,6,پيش‌گزيده
default_secs=گروه ثانويه پيش‌گزيده براي کاربران جديد,3,هيچ
default_shell=پوسته پيش‌گزيده براي کاربران جديد,3,اولين در فهرست
default_min= پيش‌گزيده کمينه روزها براي کاربران جديد,3,هيچ
default_max= پيش‌گزيده بيشينه روزها براي کاربران جديد,3,هيچ
default_warn= پيش‌گزيده روزهاي اخطار براي کاربران جديد,3,هيچ
default_inactive=پيش‌گزيده روزهاي غيرفعال براي کاربران جديد,3,هيچ
default_expire=پيش‌گزيده تاريخ انقضا براي کاربران جديد (dd/mm/yyyy),3,هيچ
default_other=آيا در پيمانه‌هاي ديگر نيز ايجاد و به‌روزرساني شود؟,1,1-بله,0-خير
line4=نمايش گزينه‌ها,11
display_max=بيشينه تعداد کاربران و گروه‌هايي که نمايش داده شوند,0
sort_mode=مرتب‌سازي کاربران و گروه‌ها براساس,4,0-ترتيب در پرونده,1-اسم‌کاربر,2-نام حقيقي,3-عنوانSurname,4-پوسته‌,5-شناسه کاربر يا شناسه گروه,6-فهرست شخصي
last_count=تعداد دفعات ورود به سيستم قبلي براي نمايش دادن,3,نامحدود
last_show=آيا آخرين ورود به سيستم در فهرست کاربر نمايش داده شود؟,1,1-بله,0-خير
display_mode=نمايش کاربران و گروه‌ها براساس,1,2-طبقه‌بندي اوليه گروه,1-جزئيات کامل,0-فقط نام
passwd_stars=آيا متن اسم‌رمز پنهان شود؟,1,1-بله,0-خير
from_files=اطلاعات کاربر و گروه گرفته شود از, 1,1-پرونده‌ها,0-فراخوانيهاي سيستم
random_password=آيا براي کاربران جديد اسم‌رمز توليد شود؟,1,1-بله,0-خير
extra_real=آيا جزئيات محل کار و تلفن نمايش داده شوند؟,1,1-بله,0-خير
delete_root=آيا اجازه حذف از کاربران و گروه‌هاي سيستمي داده شود؟,1,1-بله,0-خير
secmode=آيا گروه‌هاي ثانويه برروي برگه کاربر نمايش داده شوند؟,1,0-بله,1-خير
line5=محدوديتهاي اسم‌رمز,11
passwd_min=کمينه طول اسم‌رمز,3,بدون کمينه
passwd_dict=آيا از اسم‌رمزهاي موجود در لغت نامه جلوگيري شود؟,1,1-بله,0-خير
passwd_re=Perl regexp براي بررسي اسم‌رمز,3,هيچ
passwd_same=آيا از اسم‌رمزهايي که شامل اسم‌کاربر است جلوگيري شود؟,1,1-بله,0-خير
passwd_prog=برنامه خارجي بررسي اسم‌رمز,3,هيچ
line0=قبل و بعد از فرمانها,11
pre_command=فرمان براي اجرا قبل از انجام تغييرات,0
post_command=فرمان براي اجرا بعد از انجام تغييرات,0
line6=پيکربندي سيستم,11
passwd_file=پرونده اسم‌رمز,3,توليد شده‌است
group_file=پرونده گروه,0
shadow_file=پرونده سايه اسم‌رمز,3
master_file=پرونده اسم‌رمز اصليBSD,3
gshadow_file=پرونده سايه گروه,3
netinfo_domain=دامنه اطلاعات شبکه براي مديريت,3,دامنه محلي (<tt>.</tt>)
lock_string=تعويض اسم‌رمز براي حسابهاي قفل شده توسط,0
lock_prepend=به ابتداي اسم‌رمز حسابهاي موقتا غيرفعال شده&#44; اضافه شود,3,پيش‌گزيده(!)
+33
View File
@@ -0,0 +1,33 @@
line1=Options du répertoire personnel,11
homedir_perms=Droits d'accès des nouveaux répertoires personnels,0
user_files=Copier des fichiers dans un nouveau répertoire personnel à partir de,9,40,3
home_base=Base du répertoire personnel automatique,3,Non définie
home_style=Style du répertoire personnel automatique,4,0-home/nom_utilisateur,1-home/n/nom_utilisateur,2-home/n/no/nom_utilisateur,3-home/n/o/nom_utilisateur,4-Juste le répertoire de base,5-home/groupe_primaire/nom_utilisateur
line2=Options du nouvel utilisateur,11
base_uid=UID minimal des nouveaux utilisateurs,0
base_gid=GID minimal des nouveaux groupes,0
uid_mode=Méthode de saisie de l'UID par défaut,4,0-Saisie par l'utilisateur,1-Incrémenté automatiquement,2-Calculé
gid_mode=Méthode de saisie du GID par défaut,4,0-Saisie par l'utilisateur,1-Incrémenté automatiquement,2-Calculé
uid_calc=Méthode de calcul de l'UID,4,0-cksum Berkeley,1-Programme mkuid personnalisé
gid_calc=Méthode de calcul du GID,4,0-cksum Berkeley,1-Programme mkgid personnalisé
new_user_group=Créer un nouveau groupe pour les nouveaux utilisateurs,1,1-Oui,0-Non
new_user_gid=Affecter le même ID à un nouvel utilisateur et un nouveau groupe ?,1,1-Oui,0-Non
md5=Méthode de chiffrement par mot de passe,1,1-Déterminer automatiquement,0-cryptage DES,2-MD5
alias_check=Vérifier les conflits d'alias sendmail ?,1,1-Oui,0-Non
delete_only=Supprimer uniquement les fichiers appartenant à un utilisateur ?,1,1-Oui,0-Non
max_length=Longueur maximale des noms d'utilisateurs et de groupes,3,Illimitée
username_re=Expression régulière Perl par rapport à laquelle vérifier le nom d'utilisateur,3,Aucune
shells=Construire une liste des interpréteurs de commandes à partir,2,d'une liste intégrée fixe,des utilisateurs existants par mot de passe,shells-/etc/shells
line3=Réglages par défaut des nouveaux utilisateurs,11
default_group=Groupe par défaut d'un nouvel utilisateur,6,Par défaut
default_secs=Groupes secondaires par défaut des nouveaux utilisateurs,3,Aucun
default_shell=Interpréteur de commandes par défaut des nouveaux utilisateurs,3,Le premier de la liste
default_min=Nombre minimal de jours par défaut des nouveaux utilisateurs,3,Aucun
default_max=Nombre maximal de jours par défaut des nouveaux utilisateurs,3,Aucun
default_warn=Nombre de jour d'avertissement par défaut des nouveaux utilisateurs,3,Aucun
default_inactive=Nombre de jours d'inactivité par défaut des nouveaux utilisateurs,3,Aucun
default_expire=Date d'expiration par défaut des nouveaux utilisateurs (jj/mm/aaaa),3,Aucune
secmode=Afficher les groupes secondaires sur le formulaire utilisateur ?,1,0-Oui,1-Non
line0=Commandes avant et après,11
pre_command=Commande à exécuter avant de faire des changements,0
post_command=Commande à exécuter après avoir fait des changements,0
View File
+63
View File
@@ -0,0 +1,63 @@
line1=ホームディレクトリオプション,11
homedir_perms=新しいホームディレクトリのパーミッション,0
user_files=新しいディレクトリにコピーするファイルが置かれている場所,9,40,3
home_base=自動ホームディレクトリのベース,3,未設定
real_base=実際のホームディレクトリのベース,3,同上
home_style=自動ホームディレクトリのスタイル,4,0-home/username,1-home/u/username,2-home/u/us/username,3-home/u/s/username,4-ベースディレクトリのみ,5-home/primary_group/username
line2=新ユーザのオプション,11
base_uid=新しいユーザに割り当てる最少UID,0,5
base_gid=新しいグループに割り当てる最少GID,0,5
uid_mode=デフォルトUID入力方法,4,0-ユーザが入力,1-自動インクリメント,2-計算による
gid_mode=デフォルトGIDエントリ方法,4,0-ユーザが入力,1-自動インクリメント,2-計算による
uid_calc=UID計算方法,4,0-バークレイ cksum,1-カスタムmkuidプログラム
gid_calc=GID計算方法,4,0-バークレイ cksum,1-カスタムmkgidプログラム
new_user_group=新しいユーザ用に新しいグループを作成しますか?,1,1-はい,0-いいえ
new_user_gid=新しいユーザとグループに同じIDを割り当てますか?,1,1-はい,0-いいえ
md5=パスワードの暗号化方法,1,1-自動選択,0-DES暗号,2-MD5
alias_check=sendmailのエイリアスと重複するかどうかをチェックしますか?,1,1-はい,0-いいえ
delete_only=ユーザが所有するファイルだけを削除しますか?,1,1-はい,0-いいえ
max_length=ユーザ及びグループ名の最大長,3,無制限
username_re=ユーザ名をチェックするPerl正規表現,3,なし
shells=シェルの一覧作成を以下から,2,fixed-内蔵リスト,passwd-存在するユーザ,shells-/etc/shells
line3=新ユーザのデフォルト,11
default_group=新しいユーザのデフォルトグループ,6,デフォルト
default_secs=新規ユーザのデフォルト第二グループ,3,なし
default_shell=新規ユーザのデフォルトシェル,3,リスト最上位
default_min=新規ユーザの最小日数,3,なし
default_max=新規ユーザの最大日数,3,なし
default_warn=新規ユーザのデフォルト警告日数,3,なし
default_inactive=新規ユーザのデフォルト非活性日数,3,なし
default_expire=新規ユーザのデフォルト破棄日数 (dd/mm/yyyy),3,なし
default_other=別のモジュールでの作成を反映する,1,1-はい,0-いいえ
line4=表示オプション,11
display_max=表示可能な最大ユーザ数,0
sort_mode=ユーザとグループの並べ替え順,1,0-ファイル中の順序通り,1-ユーザ名,2-実名,3-名字,4-シェル
last_count=ログイン記録の表示個数,3,無制限
last_show=ユーザ一覧に最後のログイン日時を表示しますか?,1,1-はい,0-いいえ
display_mode=ユーザとグループの表示方法,1,2-主グループで分類,1-詳細もすべて表示,0-名前のみ
passwd_stars=平文テキストのパスワードを隠しますか?,1,1-はい,0-いいえ
from_files=主グループの取得方法,1,1-ファイルから,0-システムコール
random_password=新しいユーザのパスワードを生成しますか?,1,1-はい,0-いいえ
extra_real=オフィスと電話番号の詳細を表示しますか?,1,1-はい,0-いいえ
delete_root=システムのユーザ及びグループ削除を許可しますか?,1,1-はい,0-いいえ
secmode=ユーザフォームにセカンダリグループを表示しますか?,1,0-はい,1-いいえ,2-テキストボックス
line5=パスワード制限,11
passwd_min=最短のパスワード長,3,制限なし
passwd_dict=簡単に推測されそうなパスワードを拒否しますか?,1,1-はい,0-いいえ
passwd_re=パスワードのチェックに使用するPerl正規表現,3,なし
passwd_same=ユーザ名を含むパスワードを拒否しますか?,1,1-はい,0-いいえ
passwd_prog=パスワードをチェックする外部プログラム,3,なし
passwd_progmode=プログラムにユーザ名とパスワードを渡す方法,1,1-入力として,0-パラメータとして
line0=コマンドの前と後ろ,11
pre_command=変更を適用する前に実行するコマンド,0
post_command=変更を適用した後に実行するコマンド,0
line6=システム設定,11
passwd_file=パスワードファイル,3,生成
group_file=グループファイル,0
shadow_file=シャドウパスワードファイル,3
master_file=BSDマスタパスワードファイル,3
gshadow_file=シャドウグループファイル,3
netinfo_domain=管理するNetInfoドメイン,3,ローカルドメイン(<tt>.</tt>)
lock_string=ロックされたアカウントのパスワードを置き換える文字列,0
lock_prepend=一時的に無効化されたアカウントのパスワードの先頭に追加する文字列,3,デフォルト(!)
nscd_restart=nscdの再起動コマンド,3,HUP シグナルを送る
+67
View File
@@ -0,0 +1,67 @@
line1=Home directory opties,11
homedir_perms=Permissies op nieuwe home directory,0
user_files=Kopieer files in de nieuwe home directory's van,9,40,3
home_base=Automatische home directory basis,3,Niet ingesteld
real_base=Echte home directory basis,3,Zelfde als hierboven
home_style=Automatische home directory stijl,4,0-home/gebruikersnaam,1-home/u/gebruikersnaam,2-home/u/us/gebruikersnaam,3-home/u/s/gebruikersnaam,4-Alleen basis directory,5-home/primaire groep/gebruikersnaam
selinux_con=SELinux inhoud voor nieuwe home directory's,3,Geen
line2=Nieuwe gebruiker opties,11
base_uid=Laagste UID voor nieuwe gebruikers,0,5
base_gid=Laagste GID voor nieuwe groepen,0,5
uid_mode=Standaard UID ingang methoden,4,0-Gebruiker vult in,1-Auto oplopend,2-Berekend
gid_mode=Standaard GID ingang methoden,4,0-Gebruiker Vult In,1-Auto oplopend,2-Berekend
uid_calc=UID bereken methoden,4,0-Berkeley cksum,1-Eigen mkuid programma
gid_calc=GID bereken methoden,4,0-Berkeley cksum,1-Eigen mkgid programma
new_user_group=Maak nieuwe groep voor nieuwe gebruikers?,1,1-Ja,0-Nee
new_user_gid=Zelfde ID toewijzen aan nieuwe gebruiker en groep?,1,1-Ja,0-Nee
md5=Wachtwoord versleutel methoden,1,1-Bepaal automatisch,0-<tt>DES</tt>,2-<tt>MD5</tt>,3-<tt>Blowfish</tt>,4-<tt>SHA512</tt>,5-<tt>yescrypt</tt>
alias_check=Controleer op conflict met Sendmail alias,1,1-Ja,0-Nee
delete_only=Alleen bestanden verwijderen die van de gebruiker zijn?,1,1-Ja,0-Nee
max_length=Maximum gebruiker en groepen naam lengte,3,Ongelimiteerd
username_re=Perl regexp waarmee gebruikersnamen gecontroleerd moeten worden,3,Geen
shells=Bouw een shells lijst op van,2,fixed-Ingebouwde lijst,passwd-Bestaande Gebruikers,shells-/etc/shells
line3=Nieuwe gebruiker standaarden,11
default_group=Standaard primaire groep voor nieuwe gebruikers,6,Standaard
default_secs=Standaard secundaire groepen voor nieuwe gebruikers,3,Geen
default_shell=Standaard shell voor nieuwe gebruikers,3,Eerste in de lijst
default_min=Standaard minimum dagen voor nieuwe gebruikers,3,Geen
default_max=Standaard maximum dagen voor nieuwe gebruikers,3,Geen
default_warn=Standaard aantal waarschuwings dagen voor nieuwe gebruikers,3,Geen
default_inactive=Standaard inactieve dagen voor nieuwe gebruikers,3,Geen
default_expire=Standaard expiratie datum voor nieuwe gebruikers (dd/mm/jjjj,3,Geen
default_other=Aanmaken en updaten in andere modules,1,1-Ja,0-Nee
line4=Laat opties zien,11
display_max=Maximum aantal gebruikers of groepen tonen,0
sort_mode=Sorteer gebruikers en groepen als,4,0-Volgorde in file,1-Gebruikersnaam,2-Volledige naam,3-Achternaam,4-Shell,5-UID of GID,6-Home directory
last_count=Aantal keren vorige inlog's tonen,3,Onbeperkt
last_show=Laat laatste login zien in gebruiker lijst?,1,1-Ja,0-Nee
display_mode=Toon gebruikers en groepen als,1,2-Primaire groep in categorie,1-Volledige details,0-Alleen op naam
passwd_stars=Verberg platte tekst wachtwoorden?,1,1-Ja,0-Nee
from_files=Verkrijg gebruiker en groep info van,1,1-Bestanden,0-Systeem oproepen
random_password=Genereer wachtwoord voor nieuwe gebruikers?,1,1-Ja,0-Nee
extra_real=Kantoor en telefoon details laten zien?,1,1-Ja,0-Nee
delete_root=Toestaan dat systeem gebruikers en groepen worden verwijderd?,1,1-Ja,0-Nee
secmode=Laat secundaire groepen zien op gebruikers formulier?,1,0-Ja,1-Nee,2-Als tekst box
membox=Bewerk groep leden met gebruik van,1,1-Tekst box,0-Gebruiker kiezer
line5=Wachtwoord beperkingen,11
passwd_min=Minimum wachtwoord lengte,3,Geen minimum
passwd_dict=Woordenboek woorden weigeren voor wachtwoorden?,1,1-Ja,0-Nee
passwd_re=Perl regexp om wachtwoorden mee te controleren,3,Geen
passwd_redesc=Menselijke leesbare omschrijving van regexp,3,Normaal regexp gebruiken
passwd_same=Voorkom dat wachtwoorden gebruikersnamen bevatten?,1,1-Ja,0-Nee
passwd_prog=Extern wachtwoord controle programma,3,Geen
passwd_progmode=Gebruikersnaam en wachtwoord doorgeven aan programma,1,1-Als invoer,0-Als parameters
passwd_mindays=Aantal dagen voordat wachtwoord wijzigen is toegestaan,3,Geen
line0=Opdrachten vooraf en achteraf,11
pre_command=Uit te voeren opdracht voordat er veranderingen gemaakt worden,0
post_command=Uit te voeren opdracht nadat er veranderingen gemaakt zijn,0
line6=Systeem configuratie,11
passwd_file=Wachtwoord file,3,Gegenereerd
group_file=Groepen file,0
shadow_file=Schaduw wachtwoord file,3
master_file=BSD hoofd wachtwoord file,3
gshadow_file=Schaduw groepen file,3
netinfo_domain=NetInfo domein of directory server om te beheren,3,Lokaal domein (<tt>.</tt>)
lock_string=Vervang wachtwoord voor geblokkeerde accounts met,0
lock_prepend=Wachtwoord voorbereiden voor tijdelijk uitgeschakelde accounts,3,Standaard (!)
nscd_restart=Opdracht om nscd opnieuw te starten,3,Verstuur HUP signaal
+65
View File
@@ -0,0 +1,65 @@
line1=Innstillinger for hjemmekataloger,11
homedir_perms=Tillatelser for nye hjemmekataloger,0
user_files=Kopier filer til nye hjemmekataloger fra,9,40,3
home_base=Automatisk hjemmekatalog base,3,Ikke satt
real_base=Faktisk grunnkatalog for hjemmekataloger,3,Samme som ovenfor
home_style=Automatisk hjemmekatalog stil,4,0-home/username,1-home/u/username,2-home/u/us/username,3-home/u/s/username,4-Bare base katalog,5-home/primary_group/username
selinux_con=SElinux kontekst for nye hjemmekataloger,3,Ingen
line2=Innstillinger for nye brukere,11
base_uid=Laveste UID for nye brukere,0,5
base_gid=Laveste GID for nye grupper,0,5
uid_mode=Standard innhentingsmetode for UID,4,0-Inntastet av bruker,1-Auto Inkrementert,2-Beregnet
gid_mode=Standard GID oppføringsmetode,4,0-Brukerspesifisert,1-Auto inkrementert,2-Beregnet
uid_calc=Beregningsmetode for UID,4,0-Berkeley cksum,1-Egendefinert mkuid program
gid_calc=Beregningsmetode for GID,4,0-Berkeley cksum,1-Egendefinert mkgid program
new_user_group=Opprett ny gruppe for nye brukere,1,1-Ja,0-Nei
new_user_gid=Tilordne samme ID til ny bruker og gruppe,1,1-Ja,0-Nei
md5=Krypteringsmetode for passord,1,1-Bestem automatisk,0-<tt>DES</tt>,2-<tt>MD5</tt>,3-<tt>Blowfish</tt>,4-<tt>SHA512</tt>,5-<tt>yescrypt</tt>
alias_check=Se etter konflikter med selndmail aliaser?,1,1-Ja,0-Nei
delete_only=Slett bare filer eid av bruker?,1,1-Ja,0-Nei
max_length=Maks. lengde for bruker- og gruppenavn,3,Ubegrenset
username_re=Perl regexp som brukernavn skal sjekkes mot,3,Ingen
shells=Bygg liste over skall fra,2,fixed-Innebygd liste,passwd-Eksisterende brukere,shells-/etc/shells
line3=Standardverdier for nye brukere,11
default_group=Standard primær gruppe for nye brukere,6,Standard
default_secs=Standard sekundære grupper for nye brukere,3,Ingen
default_shell=Standard skall for nye brukere,3,Første i listen
default_min=Standard minimum dager for nye brukere,3,Ingen
default_max=Standard maksimum dager for nye brukere,3,Ingen
default_warn=Standard advarselsdager for nye brukere,3,Ingen
default_inactive=Standard inaktive dager for nye brukere,3,Ingen
default_expire=Standard utløpsdato for nye brukere (dd/mm/åååå),3,Ingen
default_other=Opprett og oppdater i andre moduler,1,1-Ja,0-Nei
line4=Visningsinnstillinger,11
display_max=Maks. antall brukere eller grupper som skal vises,0
sort_mode=Sorter brukere og grupper etter,4,0-Plassering i filen,1-Brukernavn,2-Fullt navn,3-Etternavn,4-Skall,5-UID eller GID,6-Hjemmekatalog
last_count=Antall tidligere innlogginger som skal vises,3,Ubegrenset
last_show=Vis siste innlogging i brukerlisten?,1,1-Ja,0-Nei
display_mode=Sorter brukere og grupper etter,1,2-Primær gruppe kategorisert,1-Fulle detaljer,0-Bare navn
passwd_stars=Skjul vanlig-tekst passord?,1,1-Ja,0-Nei
from_files=Hent bruker- og gruppe-info fra,1,1-Filer,0-Systemkall
random_password=Generer passord for nye brukere,1,1-Ja,0-Nei
extra_real=Vis kontor og telefon detaljer,1,1-Ja,0-Nei
delete_root=Tillat sletting av system brukere og grupper?,1,1-Ja,0-Nei
secmode=Vis sekundære grupper på bruker-skjema,1,0-Ja,1-Nei,2-Som tekst-boks
membox=Rediger gruppemedlemmer ved bruk av,1,1-Teksboks,0-Brukervelger
line5=Passord restriksjoner,11
passwd_min=Minimum passordlengde,3,Ingen minimum
passwd_dict=Forhindre ordliste-ord i passord?,1,1-Ja,0-Nei
passwd_re=Perl regexp som passord skal sjekkes mot,3,Ingen
passwd_same=Forhindre passord som inneholder brukernavn,1,1-Ja,0-Nei
passwd_prog=Eksternt program for passord-sjekk,3,Ingen
passwd_progmode=Send brukernavn og passord til program,1,1-Som input,0-Som parametere
line0=Før- og etter-kommandoer,11
pre_command=Kommando som skal kjøres før endringer utføres,0
post_command=Kommando som skal kjøres etter at endringer er utført,0
line6=System konfigurasjon,11
passwd_file=Passordfil,3,Generert
group_file=Gruppefil,0
shadow_file=Shadow passordfil,3
master_file=BSD master passordfil,3
gshadow_file=Skygge gruppefil,3
netinfo_domain=NetInfo domene eller katalogtjener som skal administreres,3,Lokalt domene (<tt>.</tt>)
lock_string=Erstatt passord for låste kontoer med,0
lock_prepend=Legg foran passord på midlertidig låste kontoer,3,Standard (!)
nscd_restart=Kommando for å omstarte nscd,3,Send HUP signal
+47
View File
@@ -0,0 +1,47 @@
line1=Opcje katalogu domowego,11
homedir_perms=Prawa dostępu do nowych katalogów domowych,0
user_files=Kopiować pliki do nowego katalogu domowego z,9,40,3
home_base=Lokalizacja automatycznie tworzonych katalogów domowych,3,Nie ustawona
home_style=Postać automatycznie tworzonych katalogów domowych,4,0-home/użytkownik,1-home/u/użytkownik,2-home/u/uż/użytkownik,3-home/u/ż/użytkownik
line2=Opcje nowego użytkownika,11
base_uid=Najniższy UID dla nowych użytkowników,0,5
base_gid=Najniższy GID dla nowych grup,0,5
new_user_group=Tworzyć nową grupę dla nowych użytkowników,1,1-Tak,0-Nie
alias_check=Sprawdzać kolizje z&nbsp;aliasami Sendmaila,1,1-Tak,0-Nie
delete_only=Kasować tylko pliki będące własnością użytkownika?,1,1-Tak,0-Nie
line3=Domyślne nowego użytkownika,11
default_group=Domyślna grupa dla nowych użytkowników,6,Domyślne
default_secs=Domyślne drugorzędne grupy dla nowych użytkowników,3,Brak
default_shell=Domyślna powłoka dla nowych użytkowników,3,Pierwsza na liście
default_min=Domyślna liczba minimalna dni dla nowych użytkowników,3,Brak
default_max=Domyślna liczba maksymalna dni dla nowych użytkowników,3,Brak
default_warn=Domyślna liczba dni do ostrzeżenia dla nowych użytkowników,3,Brak
default_inactive=Domyślna liczba nieaktywnych dni dla nowych użytkowników,3,Brak
default_expire=Domyśla data ważności dla nowych użytkowników (dd/mm/yyyy),3,Brak
default_other=Tworzenie i aktualizacja w innych modułach,1,1-Tak,0-Nie
line4=Opcje wyświetlania,11
display_max=Maksymalna liczba wyświetlanych użytkowników,0
sort_mode=Wyświetlaj użytkowników i&nbsp;grupy wg,1,0-Porządku w zbiorze,1-Nazwy użytkownika,2-Rzeczywistej nazwy,3-Nazwiska,4-Powłoki,5-Nru UID lub GID,6-Katalogu domowego
last_count=Wyświetlana liczba poprzednich logowań,3,Nieograniczona
last_show=Wyświetlać ostatnie logowanie na liście użytkowników?,1,1-Tak,0-Nie
display_mode=Wyświetlanie użytkowników i&nbsp;grup wg,1,2-Grupy podstawowej,1-Pełnej informacji,0-Tylko nazwy
passwd_stars=Ukrywać treść hasła?,1,1-Tak,0-Nie
from_files=Pobierać grupy podstawowe z,1,1-Plików,0-Odwołań do systemu
random_password=Generować hasła dla nowych użytkowników?,1,1-Tak,0-Nie
extra_real=Pokazywać dane o pracy i&nbsp;telefonach?,1,1-Tak,0-Nie
delete_root=Pozwalać na usuwanie systemowych użytkowników i grup?,1,1-Tak,0-Nie
line5=Ograniczenia hasła,11
passwd_min=Minimalna długość hasła,3,Brak minimum
passwd_dict=Zabraniać używania haseł słownikowych?,1,1-Tak,0-Nie
dict_file=Pliki zawierające słowa słownika,3,Domyślne systemowe
line0=Polecenia przed i po,11
pre_command=Polecenie uruchamiane przed dokonaniem zmian,0
post_command=Polecenie uruchamiane po dokonaniu zmian,0
line6=Konfiguracja systemu,11
passwd_file=Plik haseł,3,Wygenerowany
group_file=Plik grup,0
shadow_file=Plik haseł "shadow",3
master_file=Nadrzędny plik haseł BSD,3
gshadow_file=Plik grup "shadow",3
lock_string=Hasło zastępujące hasła do zablokowanych kont,0
nscd_restart=Polecenie restartu nscd,3,Wyślij sygnał HUP
+65
View File
@@ -0,0 +1,65 @@
line1=Opções do diretório Home,11
homedir_perms=Permissões de novos diretórios iniciais,0
user_files=Copie arquivos para novos diretórios iniciais de,9,40,3
home_base=Base automática dos diretórios iniciais,3,Indefinida
real_base=Base real do diretório Home,3,Idem acima
home_style=Estilo automático dos diretórios iniciais,4,0-home/username,1-home/u/username,2-home/u/us/username,3-home/u/s/username
selinux_con=Contexto SElinux para novos diretórios Home,3,Nenhum
line2=Opções de novo usuário,11
base_uid=Menor UID para novos usuários,0,5
base_gid=Menor GID para novos grupos,0,5
uid_mode=Método de criação de UID padrão,4,0-Digitado pelo usuário,1-Auto-incrementado,2-Calculado
gid_mode=Método de criação de GID padrão,4,0-Digitado pelo usuário,1-Auto-incrementado,2-Calculado
uid_calc=Método de cálculo de UID,4,0-Berkeley cksum,1-Programa mkuid personalizado
gid_calc=Método de cálculo de GID,4,0-Berkeley cksum,1-Programa mkuid personalizado
new_user_group=Criar novo grupo para novos usuários,1,1-Sim,0-Não
new_user_gid=Atribuir a mesma ID a novo usuário e grupo?,1,1-Sim,0-Não
md5=Método de criptografia da senha,1,1-Determinado automaticamente,0-<tt>DES</tt>,2-<tt>MD5</tt>,3-<tt>Blowfish</tt>,4-<tt>SHA512</tt>,5-<tt>yescrypt</tt>
alias_check=Verificar conflitos com aliases do sendmail,1,1-Sim,0-Não
delete_only=Remover apenas arquivos pertencentes ao usuário?,1,1-Sim,0-Não
max_length=Tamanho máximo de nome de usuário e grupo,3,Ilimitado
username_re=Expressão regular Perl para verificar o nome de usuário,3,Nenhuma
shells=Gerar lista de shells baseado em,2,fixed-Lista incluida,passwd-Usuários existentes,shells-/etc/shells
line3=Padrões para novo usuário,11
default_group=Grupo padrão para novos usuários,6,Padrão
default_secs=Grupos secundários padrão para novos usuários,3,Nenhum
default_shell=Shell padrão para novos usuários,3,Primeira da lista
default_min=Número padrão mínimo de dias para novos usuários,3,Nenhum
default_max=Número padrão máximo de dias para novos usuários,3,Nenhum
default_warn=Número padrão de dias de aviso para novos usuários,3,Nenhum
default_inactive=Número padrão de dias inativos para novos usuários,3,Nenhum
default_expire=Data de expiração padrão para novos usuários (dd/mm/aaaa),3,Nenhuma
default_other=Criar e atualizar em outros módulos,1,1-Sim,0-Não
line4=Opções de display,11
display_max=Número máximo de usuários a mostrar,0
sort_mode=Ordenar usuários e grupos por,1,0-Ordem no arquivo,1-Nome,2-Nome real,3-Prenome,4-Shell,5-UID ou GID,6-Diretório Inicial
last_count=Número de logins prévios a mostrar,3,Ilimitado
last_show=Exibir último login na lista de usuários?,1,1-Sim,0-Não
display_mode=Mostrar usuários e grupos por,1,2-Grupo primário categorizado,1-Detalhes completos,0-Somente nome
passwd_stars=Esconder senha textual?,1,1-Sim,0-Não
from_files=Obter grupos primários de,1,1-Arquivos,0-Chamadas de sistema
random_password=Gerar senha para novos usuários?,1,1-Sim,0-Não
extra_real=Mostrar detalhes de localização e telefone?,1,1-Sim,0-Não
delete_root=Permitir remoção de usuários e grupos do sistema?,1,1-Sim,0-Não
secmode=Exibir grupos secundários em formulário de usuário?,1,0-Sim,1-Não,2-Como caixa de texto
membox=Editar membros do grupo usando,1,1-Caixa de texto,0-Seletor de usuários
line5=Restrições de senha,11
passwd_min=Tamanho mínimo de senha,3,Sem mínimo
passwd_dict=Proibir palavras de dicionário?,1,1-Sim,0-Não
passwd_re=Expressão regular Perl para verificar a senha,3,Nenhuma
passwd_same=Proibir senhas contendo o nome do usuário?,1,1-Sim,0-Não
passwd_prog=Programa externo de verificação de senha,3,Nenhum
passwd_progmode=Enviar nome de usuário e senha para o programa,1,1-Como input,0-Como parâmetros
line0=Antes e depois dos comandos,11
pre_command=Comando a rodar antes de aplicar mudanças,0
post_command=Comando a rodar depois de aplicar mudanças,0
line6=Configuração do sistema,11
passwd_file=Arquivo de senhas,3,Gerado
group_file=Arquivo de grupos,0
shadow_file=Arquivo shadow,3
master_file=Arquivo de senhas mestre do BSD,3
gshadow_file=Arquivo shadow de grupo,3
netinfo_domain=Domínio ou diretório de servidor NetInfo a gerenciar,3,Domínio local (<tt>.</tt>)
lock_string=Substituir senha de contas bloqueadas por,0
lock_prepend=Prefixar senha para contas temporariamente desabilitadas,3,Padrão (!)
nscd_restart=Comando para reiniciar nscd,3,Enviar sinal HUP
+44
View File
@@ -0,0 +1,44 @@
line1=Параметры создания домашнего каталога,11
homedir_perms=Права на новые домашние каталоги,0
user_files=Файлы в новые домашние каталоги копировать из,9,40,3
home_base=Каталог для автоматически создаваемых домашних каталогов,3,Не задан
home_style=Способ автоматического создания домашних каталогов,4,0-home/username,1-home/u/username,2-home/u/us/username,3-home/u/s/username
line2=Параметры создания нового пользователя,11
base_uid=Наименьший UID для новых пользователей,0,5
base_gid=Наименьший GID для новых групп,0,5
new_user_group=Создавать новую группу для новых пользователей?,1,1-Да,0-Нет
new_user_gid=Назначать одинаковый ID для нового пользователя и группы?,1,1-Да,0-Нет
alias_check=Проверять конфликты с псевдонимами sendmail?,1,1-Да,0-Нет
delete_only=Удалять только файлы&#44; принадлежащие пользователю?,1,1-Да,0-Нет
max_length=Максимальная длина имени пользователя и группы,3,Не ограничено
line3=Значения&#44; используемые для нового пользователя по умолчанию,11
default_group=Основная группа для новых пользователей,6,По умолчанию
default_secs=Дополнительные группы для новых пользователей,3,Нет
default_shell=Оболочка для новых пользователей,3,Первая в списке
default_min=Минимальный период изменения пароля для новых пользователей,3,Нет
default_max=Максимальный период изменения пароля для новых пользователей,3,Нет
default_warn=Период предупреждения для новых пользователей,3,Нет
default_inactive=Период отсутствия активности для новых пользователей,3,Нет
line4=Параметры показа,11
display_max=Максимальное количество показываемых пользователей,0
sort_mode=Упорядочивать пользователей и группы по,4,0-Очередности в файле,1-Имени,2-Настоящему имени,3-Фамилии,4-Оболочке,5-UID или GID,6-Домашнему каталогу
last_count=Количество показываемых предыдущих входов в систему,3,Не ограничено
display_mode=Показывать пользователей и группы,1,2-Группировать по основным группам,1-Полная информация,0-Только имя
passwd_stars=Скрывать пароли&#44; указанные открытым текстом?,1,1-Да,0-Нет
from_files=Получать информацию о пользователях и группах,1,1-Из файлов,0-Через системные вызовы
random_password=Генерировать для новых пользователей пароль?,1,1-Да,0-Нет
extra_real=Показывать офис и телефоны?,1,1-Да,0-Нет
line5=Ограничения пароля,11
passwd_min=Минимальная длина пароля,3,Не ограничена
passwd_dict=Не допускать паролей&#44; совпадающих со словами из словаря?,1,1-Да,0-Нет
passwd_re=Регулярное выражение perl для проверки паролей,3,Нет
passwd_same=Не допускать пароли&#44; содержащие имя пользователя?,1,1-Да,0-Нет
line0=Команды&#44; выполняемые перед и после,11
pre_command=Команда&#44; выполняемая перед внесением изменений,0
post_command=Команда&#44; выполняемая после внесения изменений,0
line6=Системные параметры,11
passwd_file=Файл паролей,3,Сгенерирован
group_file=Файл групп,0
shadow_file=Файл теневых паролей,3
master_file=Главный пароль BSD,3
gshadow_file=Файл теневых паролей групп,3
+20
View File
@@ -0,0 +1,20 @@
homedir_perms=Rättigheter för nya hemkataloger,0
user_files=Kopiera filer till nya hemkataloger från,9,40,3
base_uid=Lägsta UID för nya användare,0
base_gid=Lägsta GID för nya grupper,0
new_user_group=Skapa ny grupp för nya användare,1,1-Ja,0-Nej
alias_check=Kontrollera sendmail-alias-krockar,1,1-Ja,0-Nej
delete_only=Endast ta bort filer som ägs av användaren?,1,1-Ja,0-Nej
default_group=Standardgrupp för nya användare,6,Standard
display_max=Maximalt antal användare som ska visas,0
last_count=Antal tidigare inloggningar som ska visas,3,Obegränsat
display_mode=Lista med användare och grupper innehåller,1,2-Primary group categorised,1-Alla uppgifter,0-Endast namn
passwd_stars=Dölja lösenord i klartext?,1,1-Ja,0-Nej
from_files=Hämta primära grupper från,1,1-Fil,0-Systemanrop
pre_command=Kommando som ska köras innan ändringar görs,0
post_command=Kommando som ska köras när ändringar har gjorts,0
passwd_file=Lösenordsfil,3,Genererad
group_file=Gruppfil,0
shadow_file=Skugglösenordsfil,3
master_file=BSD-huvudlösenordsfil,3
gshadow_file=Skuggruppfil,3
+54
View File
@@ -0,0 +1,54 @@
line1=Ev dizini seçenekleri,11
homedir_perms=Yeni ev dizinleri izinleri,0
user_files=Yeni ev dizinlerine kopyalacak dosyaların yeri,9,40,3
home_base=Otomatik ev dizinlerinin yeri,3,Belirtilmemiş
home_style=Otomatik ev dizini yeri stili,4,0-home/username,1-home/u/username,2-home/u/us/username,3-home/u/s/username,4-Just base directory,5-home/primary_group/username
line2=Yeni kullanıcı seçenekleri,11
base_uid=Yeni kullanıcılar için en düşük UID,0,5
base_gid=Yeni gruplar için en düşük GID,0,5
uid_mode=Öntanımlı UID girme yöntemi,4,0-Kullanıcı Tarafından,1-Otomatik Arttırma,2-Hesaplanmış
gid_mode=Öntanımlı GID giriş yöntemi,4,0-Kullanıcı Tanımlı,1-Otomatik Arttırma,2-Hesaplanmış
uid_calc=UID Hesaplama Metodu,4,0-Berkeley cksum,1-Özel mkuid programı ile
gid_calc=GID Hesaplama Metodu,4,0-Berkeley cksum,1-Özel mkgid programı
new_user_group=Yeni kullanıcılar için yeni grup oluşturulsun mu?,1,1-Evet,0-Hayır
new_user_gid=Aynı ID kullanıcı ve gruba atansın mı?,1,1-Evet,0-Hayır
md5=Parola şifreleme metodu,1,1-Otomatik olarak bul,0-DES crypt,2-MD5
delete_only=Sadece kullanıcının sahibi olduğu dosyalar silinsin?,1,1-Evet,0-Hayır
max_length=Maksimum kullanıcı ve grup adı uzunluğu,3,Limitsiz
username_re=Kullanıcı adlarının kontrol edileceği Perl düzenli ifades,3,Yok
shells=Kabuk listesinin oluşturulacağı yer,2,sabit-Sabit liste,passwd-Mevcut kullanıcılar,shells-/etc/shells
line3=Yeni kullanıcı öntanımlıları,11
default_group=Yeni kullanıcılar için öntanımlı grup,6,Öntanımlı
default_secs=Yeni kullanıcılar için öntanımlı ikincil gruplar,3,Yok
default_shell=Yeni kullanıcılar için öntanımlı kabuk,3,Listedeki ilk
default_min=Yeni kullanıcılar için öntanımlı minimum gün,3,Yok
default_max=Yeni kullanıcılar için öntanımlı maksimum gün,3,Yok
default_warn=Yeni kullanıcılar için öntanımlı uyarı günü,3,Yok
default_inactive=Yeni kullanıcılar için öntanımlı inaktif gün,3,Yok
default_other=Diğer modüller için oluşturulsun ve güncellensin,1,1-Evet,0-Hayır
line4=Görüntüleme seçenekleri,11
display_max=Görüntülenecek en çok kullanıcı sayısı,0
sort_mode=Kullanıcı ve grupları sıralama düzeni,4,1-Kullanıcı adı,2-Gerçek ismi,3-Soyadı,4-Kabuk,5-UID ya da GID,6-Ev dizini
last_count=Görüntülecek daha önceki girişler,3,Limitsiz
display_mode=Kullanıcı ve grupları görüntüle şekli,1,2-Birincil gruba göre,1-Ayrıntılı,0-Sadece isim
passwd_stars=Düz metin şifreleri saklansın mı?,1,1-Evet,0-hayır
from_files=Kullanıcı ve grup bilgilerini buradan al,1,1-Dosyalar,0-Sistme çağrıları
random_password=Yeni kullanıcılar için parola oluşturulsun mu?,1,1-Evet,0-Hayır
extra_real=Ofis ve telefon ayrıntıları gösterilsin mi?,1,1-Evet,0-Hayır
delete_root=Sistem kullanıcıları ve gruplarının silinmesine izin verilsin mi?,1,1-Evet,0-Hayır
secmode=Kullanıcı formunda ikincil gvruplar gösterilsin mi?,1,0-Evet,0-Hayır
line5=Parola kısıtlamaları,11
passwd_min=Mininmum parola uzunluğu,3,Minimum yok
passwd_dict=Parolalarda sözlükteki kelimelerin kullanılması engellensin?1,1-Evet,0-Hayır
passwd_re=Parolaların kontrol edileceği perl düzenli ifadesi,3,Yok
passwd_same=Parolanın kullanıcı adını içermesi engellensin mi?,1,1-Evet,0-Hayır
line0=Önceki ve sonraki komutlar,11
pre_command=Değişiklikleri uygulamadan önceki komut,0
post_command=Değişiklikleri uyguladıktan sonraki komut,0
line6=Sistem yapılandırması,11
passwd_file=Parola dosyası,3,Oluşturulmuş
group_file=Grup dosyası,0
shadow_file=Shadow parola dosyası,3
master_file=BSD ana parola dosyası,3
gshadow_file=Shadow grup dosyası,3
netinfo_domain=Yönetilecek NetIndo alanı,3,Yerel Alan (<tt>.</tt>)
+44
View File
@@ -0,0 +1,44 @@
line1=Параметри створення домашнього каталогу,11
homedir_perms=Права на нові домашні каталоги,0
user_files=Файли в нові домашні каталоги копіювати з,9,40,3
home_base=Каталог для автоматично створюваних домашніх каталогів,3,Не заданий
home_style=Спосіб автоматичного створення домашніх каталогів,4,0-home/username,1-home/u/username,2-home/u/us/username,3-home/u/s/username
line2=Параметри створення нового користувача,11
base_uid=Найменший UID для нових користувачів,0,5
base_gid=Найменший GID для нових груп,0,5
new_user_group=Створювати нову групу для нових користувачів?,1,1-да,0-немає
new_user_gid=Призначати однаковий ID для нового користувача і групи?,1,1-да,0-немає
alias_check=Перевіряти конфлікти з псевдонімами sendmail?,1,1-да,0-немає
delete_only=Видаляти тільки файли&#44; приналежні користувачу?,1,1-да,0-немає
max_length=Максимальна довжина імені користувача і групи,3,Не обмежене
line3=Значення&#44; використовувані для нового користувача за замовчуванням,11
default_group=Основна група для нових користувачів,6,За замовчуванням
default_secs=Додаткові групи для нових користувачів,3,Немає
default_shell=Оболонка для нових користувачів,3,Перша в списку
default_min=Мінімальний період зміни пароля для нових користувачів,3,Немає
default_max=Максимальний період зміни пароля для нових користувачів,3,Немає
default_warn=Період попередження для нових користувачів,3,Немає
default_inactive=Період відсутності активності для нових користувачів,3,Немає
line4=Параметри показу,11
display_max=Максимальна кількість показуваних користувачів,0
sort_mode=Упорядковувати користувачів і групи по,4,0-черговості у файлі,1-імені,2-сьогоденню імені,3-прізвища,4-оболонці,5-UID чи GID,6-домашньому каталогу
last_count=Кількість показуваних попередніх входів у систему,3,Не обмежено
display_mode=Показувати користувачів і групи,1,2-групувати по основних групах,1-повна інформація,0-тільки ім'я
passwd_stars=Ховати паролі&#44; зазначені відкритим текстом?,1,1-да,0-немає
from_files=Одержувати інформацію про користувачів і групи,1,1-з файлів,0-через системні виклики
random_password=Генерувати для нових користувачів пароль?,1,1-да,0-немає
extra_real=Показувати офіс і телефони?,1,1-да,0-немає
line5=Обмеження пароля,11
passwd_min=Мінімальна довжина пароля,3,Не обмежена
passwd_dict=Не допускати паролів&#44; співпадаючих зі словами зі словника?,1,1-да,0-немає
passwd_re=Регулярне вираження perl для перевірки паролів,3,Немає
passwd_same=Не допускати паролі&#44; що містять ім'я користувача?,1,1-да,0-немає
line0=Команди&#44; виконувані перед і після,11
pre_command=Команда&#44; виконувана перед внесенням змін,0
post_command=Команда&#44; виконувана після внесення змін,0
line6=Системні параметри,11
passwd_file=Файл паролів,3,Згенерований
group_file=Файл груп,0
shadow_file=Файл тіньових паролів,3
master_file=Головний пароль BSD,3
gshadow_file=Файл тіньових паролів груп,3
+20
View File
@@ -0,0 +1,20 @@
homedir_perms=新用户根目录的许可,0
user_files=拷贝文件到新用户根目录的源目录,0
base_uid=新用户的最低 UID 值,0
base_gid=新用户组的最低 GID 值,0
new_user_group=为新用户建立新组,1,1-是,0-否
delete_only=仅删除用户所有的文件?,1,1-是,0-否
default_group=新用户缺省组,6,缺省
display_max=最大可显示的用户数目,0
sort_mode=以名称排序用户和组,1,1-是,0-否
last_count=最大可显示以前登录用户的数目,3,无限
display_mode=显示用户和组的排序形式,1,2-主用户组分类,1-详细,0-只有名称
passwd_stars=隐藏明文密码?,1,1-是,0-否
from_files=得到主用户组的来源,1,1-文件,0-系统调用
pre_command=作改动之前运行的命令,0
post_command=作改动之后运行的命令,0
passwd_file=口令文件,3,已经产生
group_file=用户组文件,0
shadow_file=影子口令文件,3
master_file=BSD 主口令文件,3
gshadow_file=影子组文件,3
+18
View File
@@ -0,0 +1,18 @@
homedir_perms=新使用者家目錄的權限,0
user_files=拷貝檔案到新的目錄中&#44; 從,0
base_uid=新使用者的最小 UID 值,0
base_gid=新群組的最小 GID 值,0
new_user_group=使否位新使用者建立新群組?,1,1-是,0-否
default_group=新使用者的預設群組,6,預設的
display_max=顯示的最大使用者數目,0
sort_mode=使用者與群組的排列方式,1,0-檔案內的順序,1-使用者名稱,2-真實姓名,3-姓氏
last_count=顯示的最近登入數目,3,無限制
display_mode=使用者與群組的顯示方式,1,1-完整詳細資料,0-只有名稱
passwd_stars=是否隱藏純文字密碼?,1,1-是,0-否
pre_command=在產生變更前要執行的指令,0
post_command=在產生變更後要執行指令,0
passwd_file=密碼檔案,3,產生的
group_file=群組檔案,0
shadow_file=Shadow 密碼檔,3
master_file=BSD 主控密碼檔,3
gshadow_file=Shadow 群組檔案,3
+17
View File
@@ -0,0 +1,17 @@
require 'user-lib.pl';
sub cpan_recommended
{
if (defined(&use_md5)) {
eval "use MD5";
local $has_md5 = !$@;
eval "use Digest::MD5";
local $has_digest_md5 = !$@;
if (!$has_md5 && !$has_digest_md5) {
return ( "Digest::MD5" );
}
}
return ( );
}
+38
View File
@@ -0,0 +1,38 @@
noconfig=0
uedit_mode=0
gedit_mode=0
lowuid=0
lowgid=0
ucreate=1
gcreate=1
ugroups=*
logins=*
shells=*
home=/
umultiple=1
uuid=1
gmultiple=1
ggid=1
peopt=1
batch=1
batchdir=/
chuid=1
chgid=1
movehome=1
mothers=1
makehome=1
copy=1
cothers=1
dothers=1
export=2
calcuid=1
calcgid=1
autouid=1
autogid=1
useruid=1
usergid=1
delhome=2
udelete=1
urename=1
gdelete=1
grename=1
+82
View File
@@ -0,0 +1,82 @@
#!/usr/local/bin/perl
# delete_group.cgi
# Delete a group, after asking for confirmation
require './user-lib.pl';
&ReadParse();
@glist = &list_groups();
($group) = grep { $_->{'group'} eq $in{'group'} } @glist;
$group || &error($text{'gedit_egone'});
$| = 1;
&error_setup($text{'gdel_err'});
&can_edit_group(\%access, $group) || &error($text{'gdel_egroup'});
$access{'gdelete'} || &error($text{'gdel_egroup'});
&ui_print_header(undef, $text{'gdel_title'}, "");
if (!$config{'delete_root'} && $group->{'gid'} <= 10) {
print "<b>$text{'gdel_eroot'}</b> <p>\n";
&ui_print_footer("", $text{'index_return'});
exit;
}
if ($in{'confirmed'}) {
# Check for repeat click
if ($group->{'group'} ne $in{'group'} || $in{'group'} eq '') {
print "<b>$text{'gdel_ealready'}</b> <p>\n";
&ui_print_footer("", $text{'index_return'});
exit;
}
# Delete from other modules
if ($in{'others'}) {
print "$text{'gdel_other'}<br>\n";
local $error_must_die = 1;
eval { &other_modules("useradmin_delete_group", $group); };
if ($@) {
print &text('udel_failed', $@),"<p>\n";
}
else {
print "$text{'gdel_done'}<p>\n";
}
}
# Delete from group file
&lock_user_files();
print "$text{'gdel_group'}<br>\n";
&set_group_envs($group, 'DELETE_GROUP');
$merr = &making_changes();
&error(&text('usave_emaking', "<tt>$merr</tt>")) if (defined($merr));
&delete_group($group);
&unlock_user_files();
&made_changes();
&webmin_log("delete", "group", $group->{'group'}, $group);
print "$text{'gdel_done'}<p>\n";
done:
&ui_print_footer("index.cgi?mode=groups", $text{'index_return'});
}
else {
# check if this is anyone's primary group
foreach $u (&list_users()) {
if ($u->{'gid'} == $group->{'gid'}) {
print "<b>",&text('gdel_eprimary', $u->{'user'}),
"</b> <p>\n";
&ui_print_footer("", $text{'index_return'});
exit;
}
}
# Ask if the user is sure
print &ui_confirmation_form("delete_group.cgi",
&text('gdel_sure', $group->{'group'}),
[ [ "group", $group->{'group'} ] ],
[ [ "confirmed", $text{'gdel_del'} ] ],
ui_checkbox("others", 1, $text{'gdel_dothers'},
$config{'default_other'}),
);
&ui_print_footer("index.cgi?mode=groups", $text{'index_return'});
}
+169
View File
@@ -0,0 +1,169 @@
#!/usr/local/bin/perl
# delete_user.cgi
# Delete a user, after asking for confirmation
require './user-lib.pl';
&ReadParse();
&lock_user_files();
@ulist = &list_users();
($user) = grep { $_->{'user'} eq $in{'user'} } @ulist;
$user || &error($text{'uedit_egone'});
&error_setup($text{'udel_err'});
&can_edit_user(\%access, $user) || &error($text{'udel_euser'});
$access{'udelete'} || &error($text{'udel_euser'});
$| = 1;
&ui_print_header(undef, $text{'udel_title'}, "");
if (!$config{'delete_root'} && $user->{'uid'} <= 10) {
print "<b>$text{'udel_eroot'}</b>\n";
&ui_print_footer("", $text{'index_return'});
exit;
}
# Check for repeat click
if ($user->{'user'} ne $in{'user'} || $in{'user'} eq '') {
print "<b>$text{'udel_ealready'}</b>\n";
&ui_print_footer("", $text{'index_return'});
exit;
}
if ($in{'confirmed'}) {
# Run the before command
local @secs;
foreach $g (&list_groups()) {
@mems = split(/,/, $g->{'members'});
if (&indexof($user->{'user'}, @mems) >= 0) {
push(@secs, $g->{'gid'});
}
}
# Go ahead and do it!
&set_user_envs($user, 'DELETE_USER', undef, \@secs);
$merr = &making_changes();
&error(&text('usave_emaking', "<tt>$merr</tt>")) if (defined($merr));
# Delete in other modules first
$in{'others'} = !$access{'dothers'} if ($access{'dothers'} != 1);
if ($in{'others'}) {
print "$text{'udel_other'}<br>\n";
local $error_must_die = 1;
eval { &other_modules("useradmin_delete_user", $user); };
if ($@) {
print &text('udel_failed', $@),"<p>\n";
}
else {
print "$text{'udel_done'}<p>\n";
}
}
# Delete the user
print "$text{'udel_pass'}<br>\n";
&delete_user($user);
print "$text{'udel_done'}<p>\n";
# Delete the user from other groups
print "$text{'udel_groups'}<br>\n";
foreach $g (&list_groups()) {
@mems = split(/,/, $g->{'members'});
$idx = &indexof($user->{'user'}, @mems);
if ($idx >= 0) {
splice(@mems, $idx, 1);
%newg = %$g;
$newg{'members'} = join(',', @mems);
&modify_group($g, \%newg);
}
$mygroup = $g if ($g->{'group'} eq $user->{'user'});
}
print "$text{'udel_done'}<p>\n";
# Delete the user's personal group, if it has no other members
if ($mygroup && !$mygroup->{'members'}) {
local $another;
foreach $ou (&list_users()) {
$another = $ou if ($ou->{'gid'} == $mygroup->{'gid'});
}
if (!$another && $in{'others'}) {
print "$text{'udel_ugroupother'}<br>\n";
local $error_must_die = 1;
eval { &other_modules("useradmin_delete_group",
$mygroup); };
if ($@) {
print &text('udel_failed', $@),"<p>\n";
}
else {
print "$text{'gdel_done'}<p>\n";
}
}
if (!$another) {
print "$text{'udel_ugroup'}<br>\n";
&delete_group($mygroup);
print "$text{'udel_done'}<p>\n";
}
}
&unlock_user_files();
if ($in{'delhome'} && $user->{'home'} !~ /^\/+$/ &&
$access{'delhome'} != 0) {
# Delete home directory
print "$text{'udel_home'}<br>\n";
&lock_file($user->{'home'});
&delete_home_directory($user);
&unlock_file($user->{'home'});
print "$text{'udel_done'}<p>\n";
}
&made_changes();
%p = ( %in, %$user );
delete($p{'pass'});
&webmin_log("delete", "user", $user->{'user'}, \%p);
done:
&ui_print_footer("", $text{'index_return'});
}
else {
# Check if something has changed
if ($user->{'user'} ne $in{'user'}) {
print "<b>$text{'udel_echanged'}</b> <p>\n";
&ui_print_footer("", $text{'index_return'});
exit;
}
# Ask if the user is sure
@buts = ( );
if ($user->{'home'} ne "/" && -d $user->{'home'} &&
$access{'delhome'} != 0) {
# Has a home directory, so check for files owned by others
$size = &disk_usage_kb($user->{'home'});
$msg = &text('udel_sure', &html_escape($user->{'user'}),
"<tt>".&html_escape($user->{'home'})."</tt>", &nice_size($size*1024));
if ($access{'delhome'} != 1) {
push(@buts, [ undef, $text{'udel_del1'} ]);
}
push(@buts, [ "delhome", $text{'udel_del2'} ]);
# check for files owned by other users
@others = &backquote_command("find ".quotemeta($user->{'home'}).
" ! -user ".quotemeta($user->{'uid'})." 2>/dev/null", 1);
}
else {
# No home directory
$msg = &text('udel_sure2',&html_escape($user->{'user'}));
push(@buts, [ undef, $text{'udel_del1'} ]);
}
print &ui_confirmation_form("delete_user.cgi", $msg,
[ [ "user", $user->{'user'} ],
[ "confirmed", 1 ] ],
\@buts,
$access{'dothers'} == 1 ?
&ui_checkbox("others", 1, $text{'udel_dothers'},
$config{'default_other'}) : "",
(@others ? &text('udel_others', "<tt>".&html_escape($user->{'home'})."</tt>",
scalar(@others))."<p>" : "").
($user->{'user'} eq 'root' ? $text{'udel_root'} : ""),
);
&ui_print_footer("", $text{'index_return'});
}
+185
View File
@@ -0,0 +1,185 @@
#!/usr/local/bin/perl
# edit_group.cgi
# Display a form for editing or creating a group
require './user-lib.pl';
&ReadParse();
@glist = &list_groups();
# Get group and show page header
$n = $in{'group'};
if ($n eq "") {
$access{'gcreate'} == 1 || &error($text{'gedit_ecreate'});
&ui_print_header(undef, $text{'gedit_title2'}, "", "create_group");
if ($in{'clone'} ne '') {
($clone_hash) = grep { $_->{'group'} eq $in{'clone'} } @glist;
$clone_hash || &error($text{'ugdit_egone'});
%group = %$clone_hash;
&can_edit_user(\%access, \%group) ||
&error($text{'gedit_eedit'});
$group{'group'} = '';
}
}
else {
($ginfo_hash) = grep { $_->{'group'} eq $n } @glist;
$ginfo_hash || &error($text{'gedit_egone'});
%group = %$ginfo_hash;
&can_edit_group(\%access, \%group) ||
&error($text{'gedit_eedit'});
&ui_print_header(undef, $text{'gedit_title'}, "", "edit_group");
}
@ulist = &list_users();
&build_group_used(\%gused);
# Start of form
print &ui_form_start("save_group.cgi", "post");
print &ui_hidden("old", $n) if ($n ne "");
print &ui_table_start($text{'gedit_details'}, "width=100%", 2, [ "width=30%" ]);
# Group name
print &ui_table_row(&hlink($text{'gedit_group'}, "ggroup"),
$n eq "" ? &ui_textbox("group", undef, 20)
: "<tt>".&html_escape($group{'group'})."</tt>");
# Group ID
if ($n ne "") {
# Existing group, just show field to edit
$gidfield = &ui_textbox("gid", $group{'gid'}, 10);
}
else {
# Work out which GID modes are available
@gidmodes = ( );
$defgid = &allocate_gid(\%gused);
if ($access{'autogid'}) {
push(@gidmodes, [ 1, $text{'gedit_gid_def'} ]);
}
if ($access{'calcgid'}) {
push(@gidmodes, [ 2, $text{'gedit_gid_calc'} ]);
}
if ($access{'usergid'}) {
push(@gidmodes, [ 0, &ui_textbox("gid", $defgid, 10) ]);
}
if (@gidmodes == 1) {
$gidfield = &ui_hidden("gid_def", $gidmodes[0]->[0]).
$gidmodes[0]->[1];
}
else {
$gidfield = &ui_radio("gid_def", $config{'gid_mode'},
\@gidmodes);
}
}
print &ui_table_row(&hlink($text{'gedit_gid'}, "ggid"), $gidfield);
# Group password (rarely used, but..)
print &ui_table_row(&hlink($text{'pass'}, "gpasswd"),
&ui_radio_table("passmode", $group{'pass'} eq "" ? 0 : 1,
[ [ 0, $text{'none2'} ],
[ 1, $text{'encrypted'},
&ui_textbox("encpass", $group{'pass'}, 20) ],
[ 2, $text{'clear'},
&ui_textbox("pass", undef, 15) ] ]));
# Member chooser
@ulist = &sort_users(\@ulist, $config{'sort_mode'});
if ($config{'membox'} == 0) {
# Nicer left/right chooser
print &ui_table_row(&hlink($text{'gedit_members'}, "gmembers"),
&ui_multi_select("members",
[ map { [ $_, $_ ] }
sort { lc($a) cmp lc($b) }
split(/,/ , &html_escape($group{'members'})) ],
[ map { [ $_->{'user'}, &html_escape($_->{'user'}) ] } @ulist ],
10, 1, 0,
$text{'gedit_allu'}, $text{'gedit_selu'}, 150));
}
else {
# Text box
print &ui_table_row(&hlink($text{'gedit_members'}, "gmembers"),
&ui_textarea("members",
join("\n", split(/,/ , $group{'members'})),
5, 30));
}
# Primary members (read-only)
if ($n ne "") {
@upri = grep { $_->{'gid'} == $group{'gid'} } @ulist;
if (@upri) {
@uprilinks = ( );
foreach $u (@upri) {
if (&can_edit_user(\%access, $u)) {
push(@uprilinks, &ui_link("edit_user.cgi?".
"user=$u->{'user'}", &html_escape($u->{'user'}) ) );
}
else {
push(@uprilinks, $u->{'user'});
}
}
$upri = &ui_links_row(\@uprilinks);
}
else {
$upri = $text{'gedit_prinone'};
}
print &ui_table_row(&hlink($text{'gedit_pri'}, "gpri"), $upri, 3);
}
print &ui_table_end();
# Section for on-change and on-create events
if ($n ne "") {
if ($access{'chgid'} == 1 || $access{'mothers'} == 1) {
print &ui_table_start($text{'onsave'}, "width=100%", 2,
[ "width=30%" ]);
# Change file GIDs on save
if ($access{'chgid'} == 1) {
print &ui_table_row(
&hlink($text{'chgid'}, "gchgid"),
&ui_radio("chgid", 0,
[ [ 0, $text{'no'} ],
[ 1, $text{'gedit_homedirs'} ],
[ 2, $text{'gedit_allfiles'} ] ]));
}
# Update in other modules?
if ($access{'mothers'} == 1) {
print &ui_table_row(
&hlink($text{'gedit_mothers'}, "others"),
&ui_radio("others", $config{'default_other'},
[ [ 1, $text{'yes'} ],
[ 0, $text{'no'} ] ]));
}
print &ui_table_end();
}
}
else {
if ($access{'cothers'} == 1) {
print &ui_table_start($text{'uedit_oncreate'}, "width=100%", 2,
[ "width=30%" ]);
# Create in other modules?
print &ui_table_row(
&hlink($text{'gedit_cothers'}, "others"),
&ui_radio("others", $config{'default_other'},
[ [ 1, $text{'yes'} ],
[ 0, $text{'no'} ] ]));
print &ui_table_end();
}
}
# Save/delete/create buttons
if ($n ne "") {
print &ui_form_end([
[ undef, $text{'save'} ],
$access{'gcreate'} ? ( [ 'clone', $text{'gedit_clone'} ] ) : (),
$access{'gdelete'} ? ( [ 'delete', $text{'delete'} ] ) : (),
]);
}
else {
print &ui_form_end([ [ undef, $text{'create'} ] ]);
}
&ui_print_footer("index.cgi?mode=groups", $text{'index_return'});
+651
View File
@@ -0,0 +1,651 @@
#!/usr/local/bin/perl
# edit_user.cgi
# Display a form for editing a user, or creating a new user
require './user-lib.pl';
use Time::Local;
&ReadParse();
# Show header and get the user
@ulist = &list_users();
$n = $in{'user'};
if ($n eq '') {
# Creating a new user
$access{'ucreate'} || &error($text{'uedit_ecreate'});
&ui_print_header(undef, $text{'uedit_title2'}, "", "create_user");
if ($in{'clone'} ne '') {
($clone_hash) = grep { $_->{'user'} eq $in{'clone'} } @ulist;
$clone_hash || &error($text{'uedit_egone'});
%uinfo = %$clone_hash;
&can_edit_user(\%access, \%uinfo) || &error($text{'uedit_eedit'});
$uinfo{'user'} = '';
}
}
else {
# Editing an existing one
($uinfo_hash) = grep { $_->{'user'} eq $n } @ulist;
$uinfo_hash || &error($text{'uedit_egone'});
%uinfo = %$uinfo_hash;
&can_edit_user(\%access, \%uinfo) || &error($text{'uedit_eedit'});
&ui_print_header(undef, $text{'uedit_title'}, "", "edit_user");
}
@tds = ( "width=30%" );
# build list of used shells
%shells = map { $_, 1 } split(/,/, $config{'shells'});
@shlist = ($config{'default_shell'} ? ( $config{'default_shell'} ) : ( ));
push(@shlist, "/bin/sh", "/bin/csh", "/bin/false") if ($shells{'fixed'});
&build_user_used(\%used, $shells{'passwd'} ? \@shlist : undef);
if ($shells{'shells'}) {
open(SHELLS, "</etc/shells");
while(<SHELLS>) {
s/\r|\n//g;
s/#.*$//;
push(@shlist, $_) if (/\S/);
}
close(SHELLS);
}
# Start of the form
print &ui_form_start("save_user.cgi", "post");
print &ui_hidden("old", $n) if ($n ne "");
print &ui_table_start($text{'uedit_details'}, "width=100%", 2, \@tds);
# Username
if ($n eq "" && $config{'new_user_group'} && $access{'gcreate'}) {
$onch = "newgid.value = user.value";
}
if ($access{'urename'} || $n eq "") {
print &ui_table_row(&hlink($text{'user'}, "user"),
&ui_textbox("user", $uinfo{'user'}, 40, 0, undef,
"onChange='$onch'"));
}
else {
print &ui_table_row(&hlink($text{'user'}, "user"),
"<tt>".&html_escape($uinfo{'user'})."</tt>");
print &ui_hidden("user", $uinfo{'user'}),"\n";
}
# User ID
if ($n ne "") {
# Existing user, just show field to edit
$uidfield = &ui_textbox("uid", $uinfo{'uid'}, 10);
}
else {
# Work out which UID modes are available
@uidmodes = ( );
$defuid = &allocate_uid(\%used);
if ($access{'autouid'}) {
push(@uidmodes, [ 1, $text{'uedit_uid_def'} ]);
}
if ($access{'calcuid'}) {
push(@uidmodes, [ 2, $text{'uedit_uid_calc'} ]);
}
if ($access{'useruid'}) {
push(@uidmodes, [ 0, &ui_textbox("uid", $defuid, 10) ]);
}
if (@uidmodes == 1) {
$uidfield = &ui_hidden("uid_def", $uidmodes[0]->[0]).
$uidmodes[0]->[1];
}
else {
$uidfield = &ui_radio("uid_def", $config{'uid_mode'},
\@uidmodes);
}
}
print &ui_table_row(&hlink($text{'uid'}, "uid"), $uidfield);
# Real name
if ($config{'extra_real'}) {
# Has separate name, office, work and home phone parts
local @real = split(/,/, $uinfo{'real'}, 5);
print &ui_table_row(&hlink($text{'real'}, "real"),
&ui_textbox("real", $real[0], 40));
print &ui_table_row(&hlink($text{'office'}, "office"),
&ui_textbox("office", $real[1], 20));
print &ui_table_row(&hlink($text{'workph'}, "workph"),
&ui_textbox("workph", $real[2], 20));
print &ui_table_row(&hlink($text{'homeph'}, "homeph"),
&ui_textbox("homeph", $real[3], 20));
print &ui_table_row(&hlink($text{'extra'}, "extra"),
&ui_textbox("extra", $real[4], 20));
}
else {
# Just a name
$uinfo{'real'} =~ s/,*$//; # Strip empty extra fields
print &ui_table_row(&hlink($text{'real'}, "real"),
&ui_textbox("real", $uinfo{'real'}, 40));
}
# Show input for home directory
if ($access{'autohome'}) {
# Automatic, cannot be changed
$homefield = $text{'uedit_auto'}.
($n eq "" ? "" : " ( <tt>$uinfo{'home'}</tt> )" );
}
else {
if ($config{'home_base'}) {
# Can be automatic
local $grp = &my_getgrgid($uinfo{'gid'});
local $hb = $n eq "" ||
&auto_home_dir($config{'home_base'},
$uinfo{'user'}, $grp) eq $uinfo{'home'};
$homefield = &ui_radio("home_base", $hb ? 1 : 0,
[ [ 1, $text{'uedit_auto'}."<br>" ],
[ 0, $text{'uedit_manual'}." ".
&ui_filebox("home", $hb ? "" : $uinfo{'home'},
40, 0, undef, undef, 1) ] ]);
}
else {
# Allow any directory
$homefield = &ui_filebox("home", $uinfo{'home'}, 25, 0,
undef, undef, 1);
}
}
print &ui_table_row(&hlink($text{'home'}, "home"),
$homefield);
# Show shell drop-down
push(@shlist, $uinfo{'shell'}) if ($n ne "" && $uinfo{'shell'});
if ($access{'shells'} ne "*") {
# Limit to shells from ACL
@shlist = $n ne "" ? ($uinfo{'shell'}) : ();
push(@shlist, split(/\s+/, $access{'shells'}));
$shells = 1;
}
$shells = 1 if ($access{'noother'});
@shlist = &unique(@shlist);
if ($n ne "" && !$uinfo{'shell'}) {
# No shell!
push(@shlist, [ "", "&lt;None&gt;" ]);
}
push(@shlist, [ "*", $text{'uedit_other'} ]) if (!$shells);
$firstshell = ref($shlist[0]) ? $shlist[0]->[0] : $shlist[0];
print &ui_table_row(&hlink($text{'shell'}, "shell"),
&ui_select("shell", $n eq "" ? $config{'default_shell'} || $firstshell
: $uinfo{'shell'},
\@shlist, 1, 0, 0, 0,
"onChange='form.othersh.disabled = form.shell.value != \"*\"'").
($shells ? "" : &ui_filebox("othersh", undef, 40, 1)));
# Get the password, generate random if needed
$pass = $in{'clone'} ne "" ? $uinfo{'pass'} :
$n ne "" ? $uinfo{'pass'} : $config{'lock_string'};
if ($n eq "" && $config{'random_password'}) {
$random_password = &generate_random_password();
}
# Check if temporary locking is supported
if (&supports_temporary_disable()) {
if ($n ne "" && $pass ne $config{'lock_string'} && $pass ne "") {
# Can disable if not already locked, or if a new account
$can_disable = 1;
if ($pass =~ /^\Q$disable_string\E/) {
$disabled = 1;
$pass =~ s/^\Q$disable_string\E//;
}
}
elsif ($n eq "") {
$can_disable = 1;
}
}
# Show password field
$passmode = $random_password ne "" ? 3 :
$pass eq "" ? 0 :
$pass eq $config{'lock_string'} ? 1 :
$pass && $pass ne $config{'lock_string'} ? 2 : -1;
$pffunc = $config{'passwd_stars'} ? \&ui_password : \&ui_textbox;
my @modes;
if ($passmode eq '0' || $config{'empty_mode'}) {
push(@modes, [ 0, $config{'empty_mode'} ? $text{'none1'} : $text{'none2'} ]);
}
push(@modes,[ 1, $text{'nologin'} ],
[ 3, $text{'clear'},
&$pffunc("pass", $config{'random_password'} && $n eq "" ?
$random_password : "", 15, undef, undef,
'autocomplete="off" autocorrect="off" '.
'autocapitalize="none"') ],
$access{'nocrypt'} ?
( [ 2, $text{'nochange'},
&ui_hidden("encpass", $pass) ] ) :
( [ 2, $text{'encrypted'},
&ui_textbox("encpass", $passmode == 2 ? $pass : "", 60) ] ));
print &ui_table_row(&hlink($text{'pass'}, "pass"),
&ui_radio_table("passmode", $passmode, \@modes).
($can_disable ? "&nbsp;&nbsp;".&ui_checkbox("disable", 1,
$text{'uedit_disabled'}, $disabled) : "")
);
# Show SSH public key field. Existing users only display the Webmin-managed
# key, identified by our marker in authorized_keys; unrelated keys stay hidden.
my %sshinfo = %uinfo;
if ($n ne '' && $config{'real_base'} && $config{'home_base'}) {
# Match save_user.cgi, which stores files below real_base for automatic
# homes while leaving the account home set to the visible home_base path.
my $grp = &my_getgrgid($uinfo{'gid'});
if (&auto_home_dir($config{'home_base'}, $uinfo{'user'}, $grp) eq
$uinfo{'home'}) {
$sshinfo{'home'} = &auto_home_dir($config{'real_base'},
$uinfo{'user'}, $grp);
}
}
my $sshkey = $n ne '' ? &get_user_ssh_pubkey(\%sshinfo) : undef;
print &ui_table_row(&hlink($text{'sshkey'}, "sshkey"),
&ui_textarea("sshkey", $sshkey, 4, 60), 3);
print &ui_table_end();
$pft = &passfiles_type();
if (($pft == 1 || $pft == 6) && $access{'peopt'}) {
# Additional user fields for BSD users
print &ui_table_start($text{'uedit_passopts'}, "width=100%", 4, \@tds);
# Last change date
if ($uinfo{'change'}) {
@tm = localtime($uinfo{'change'});
$cday = $tm[3];
$cmon = $tm[4]+1;
$cyear = $tm[5]+1900;
$chour = sprintf "%2.2d", $tm[2];
$cmin = sprintf "%2.2d", $tm[1];
}
print "<td>";
&date_input($cday, $cmon, $cyear, 'change');
print &ui_table_row(&hlink($text{'change2'}, "change2"),
&date_input($cday, $cmon, $cyear, 'change').
" ".&ui_textbox("changeh", $chour, 3).
":".&ui_textbox("changemi", $cmin, 3), 3);
# Expiry date
if ($n eq "") {
if ($config{'default_expire'} =~
/^(\d+)\/(\d+)\/(\d+)$/) {
$eday = $1;
$emon = $2;
$eyear = $3;
$ehour = "00";
$emin = "00";
}
}
elsif ($uinfo{'expire'}) {
@tm = localtime($uinfo{'expire'});
$eday = $tm[3];
$emon = $tm[4]+1;
$eyear = $tm[5]+1900;
$ehour = sprintf "%2.2d", $tm[2];
$emin = sprintf "%2.2d", $tm[1];
}
print &ui_table_row(&hlink($text{'expire2'}, "expire2"),
&date_input($eday, $emon, $eyear, 'expire').
" ".&ui_textbox("expireh", $ehour, 3).
":".&ui_textbox("expiremi", $emin, 3), 3);
# BSD login class
print &ui_table_row(&hlink($text{'class'}, "class"),
&ui_textbox("class", $uinfo{'class'}, 10));
print &ui_table_end();
}
elsif (($pft == 2 || $pft == 5) && $access{'peopt'}) {
# System has a shadow password file as well.. which means it supports
# password expiry and so on
print &ui_table_start($text{'uedit_passopts'}, "width=100%", 4, \@tds);
# Last change date
local $max = $n eq "" ? $config{'default_max'} : $uinfo{'max'};
print &ui_table_row(&hlink($text{'change'}, "change"),
($uinfo{'change'} ? &make_date(timelocal(
gmtime($uinfo{'change'} * 60*60*24)),1) :
$n eq "" ? $text{'uedit_never'} :
$text{'uedit_unknown'}));
if ($pft == 2) {
# Expiry date
if ($n eq "") {
if ($config{'default_expire'} =~
/^(\d+)\/(\d+)\/(\d+)$/) {
$eday = $1;
$emon = $2;
$eyear = $3;
}
}
elsif ($uinfo{'expire'}) {
@tm = localtime(timelocal(gmtime($uinfo{'expire'} *
60*60*24)));
$eday = $tm[3];
$emon = $tm[4]+1;
$eyear = $tm[5]+1900;
}
print &ui_table_row(&hlink($text{'expire'}, "expire"),
&date_input($eday, $emon, $eyear, 'expire'));
}
else {
# Ask at first login?
print &ui_table_row(&hlink($text{'ask'}, "ask"),
&ui_yesno_radio("ask", $uinfo{'change'} eq '0'));
}
# Minimum and maximum days for changing
print &ui_table_row(&hlink($text{'min'}, "min"),
&ui_textbox("min", $n eq "" ? $config{'default_min'} :
$uinfo{'min'}, 5));
print &ui_table_row(&hlink($text{'max'}, "max"),
&ui_textbox("max", $n eq "" ? $config{'default_max'} :
$uinfo{'max'}, 5));
if ($pft == 2) {
# Warning and inactive days. Only available when full shadow
# files are used
print &ui_table_row(&hlink($text{'warn'}, "warn"),
&ui_textbox("warn", $n eq "" ? $config{'default_warn'}
: $uinfo{'warn'}, 5));
print &ui_table_row(&hlink($text{'inactive'}, "inactive"),
&ui_textbox("inactive", $n eq "" ?
$config{'default_inactive'} :
$uinfo{'inactive'}, 5));
}
# Force change at next login
if (($max || $gconfig{'os_type'} =~ /-linux$/) && $pft == 2) {
print &ui_table_row(
&hlink($text{'uedit_forcechange'}, 'forcechange'),
&ui_yesno_radio("forcechange", 0));
}
print &ui_table_end();
}
elsif ($pft == 4 && $access{'peopt'}) {
# System has extra AIX password information
print &ui_table_start($text{'uedit_passopts'}, "width=100%", 4, \@tds);
# Last change date and time
print &ui_table_row(&hlink($text{'change'}, "change"),
($uinfo{'change'} ? &make_date($uinfo{'change'}) :
$n eq "" ? $text{'uedit_never'} :
$text{'uedit_unknown'}));
if ($uinfo{'expire'} =~ /^(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/) {
$emon = $1;
$eday = $2;
$ehour = $3;
$emin = $4;
$eyear = $5;
if ($eyear > 38) {
$eyear += 1900;
}
else {
$eyear += 2000;
}
}
$emon =~ s/0(\d)/$1/; # strip leading 0
print &ui_table_row(&hlink($text{'expire'}, "expire"),
&ui_radio("expire_def", $uinfo{'expire'} eq '' ? 1 :
$uinfo{'expire'} eq '0' ? 2 : 0,
[ [ 1, $text{'uedit_sys'} ],
[ 2, $text{'uedit_never'} ],
[ 0, &date_input($eday, $emon, $eyear, 'expire').
" ".&ui_textbox("expireh", $ehour, 3).
"/".&ui_textbox("expiremi", $emin, 3) ] ]), 3);
# Minimum and maximum ages in weeks
print &ui_table_row(&hlink($text{'min_weeks'}, "min_weeks"),
&ui_opt_textbox("min", $uinfo{'min'}, 5, $text{'uedit_sys'}), 3);
print &ui_table_row(&hlink($text{'max_weeks'}, "max_weeks"),
&ui_opt_textbox("max", $uinfo{'max'}, 5, $text{'uedit_sys'}), 3);
# Warning days
print &ui_table_row(&hlink($text{'warn'}, "warn"),
&ui_opt_textbox("warn", $uinfo{'warn'}, 5, $text{'uedit_sys'}), 3);
# AIX-specific flags
print &ui_table_row(&hlink($text{'flags'}, "flags"),
&ui_checkbox("flags", "admin", $text{'uedit_admin'},
$uinfo{'admin'})."<br>".
&ui_checkbox("flags", "admchg", $text{'uedit_admchg'},
$uinfo{'admchg'})."<br>".
&ui_checkbox("flags", "nocheck", $text{'uedit_nocheck'},
$uinfo{'nocheck'}), 3);
print &ui_table_end();
}
# Group memberships section
print &ui_table_start($text{'uedit_gmem'}, "width=100%", 4, \@tds);
# Primary group
@groupopts = ( );
$gidmode = 0;
if ($n eq "" && $access{'gcreate'}) {
# Has option to create a group
push(@groupopts, [ 2, $text{'uedit_samg'} ]);
push(@groupopts, [ 1, $text{'uedit_newg'},
&ui_textbox("newgid", undef, 20) ]);
$gidmode = $config{'new_user_group'} ? 2 : 0;
}
if ($access{'ugroups'} eq "*" || $access{'uedit_gmode'} >= 3) {
# Group can be chosen with popup window
local $w = 300;
local $h = 200;
if ($gconfig{'db_sizeuser'}) {
($w, $h) = split(/x/, $gconfig{'db_sizeuser'});
}
push(@groupopts, [ 0, $text{'uedit_oldg'},
&ui_textbox("gid", $n eq "" ? $config{'default_group'} :
scalar(&my_getgrgid($uinfo{'gid'})), 13)." ".
&popup_window_button("my_group_chooser.cgi?multi=0", $w, $h,
1, [ [ "ifield", "gid", "group" ] ]) ]);
}
else {
# From fixed menu of groups
$cg = $uinfo{'gid'} ? &my_getgrgid($uinfo{'gid'}) : undef;
@gl = &unique($cg ? ($cg) : (),
&split_quoted_string($access{'ugroups'}));
push(@groupopts, [ 0, $text{'uedit_oldg'},
&ui_select("gid", $cg, \@gl) ]);
}
if (@groupopts == 1) {
$groupfield = $groupopts[0]->[2];
}
else {
$groupfield = &ui_radio_table("gidmode", $gidmode, \@groupopts);
}
print &ui_table_row(&hlink($text{'group'}, "group"), $groupfield, 3);
# Work out which secondary groups the user is in
if ($config{'secmode'} != 1) {
@defsecs = &split_quoted_string($config{'default_secs'});
@glist = &list_groups();
@glist = &sort_groups(\@glist, $config{'sort_mode'});
%ingroups = ( );
foreach $g (@glist) {
@mems = split(/,/ , $g->{'members'});
$ismem = &indexof($uinfo{'user'}, @mems) >= 0;
if ($in{'clone'} ne '') {
$ismem ||= &indexof($in{'clone'}, @mems) >= 0;
}
if ($n eq "") {
$ismem = 1 if (&indexof($g->{'group'}, @defsecs) >= 0);
}
$ingroups{$g->{'group'}} = $ismem;
}
}
if ($config{'secmode'} == 0) {
# Show secondary groups with select menu
@canglist = ( );
foreach $g (@glist) {
next if (!&can_use_group(\%access, $g->{'group'}) &&
!$ingroups{$g->{'group'}});
push(@canglist, [ $g->{'group'}, &html_escape($g->{'group'}) ]);
}
@ingroups = map { [ $_, $_ ] } sort { $a cmp $b }
grep { $ingroups{$_} } (keys %ingroups);
$secfield = &ui_multi_select("sgid", \@ingroups, \@canglist, 5, 1, 0,
$text{'uedit_allg'}, $text{'uedit_ing'});
}
elsif ($config{'secmode'} == 2) {
# Show a text box
@insecs = ( );
foreach $g (@glist) {
if ($ingroups{$g->{'group'}}) {
push(@insecs, $g->{'group'});
}
}
$secfield = &ui_textarea("sgid", join("\n", @insecs), 5, 20);
}
else {
# Don't show
$secfield = undef;
}
if ($secfield) {
print &ui_table_row(&hlink($text{'uedit_2nd'}, "2nd"), $secfield, 3);
}
print &ui_table_end();
if ($n ne "") {
# Editing a user - show options for moving home directory, changing IDs
# and updating in other modules
if ($access{'movehome'} == 1 || $access{'chuid'} == 1 ||
$access{'chgid'} == 1 || $access{'mothers'} == 1) {
print &ui_table_start($text{'onsave'}, "width=100%", 2, \@tds);
# Move home directory
if ($access{'movehome'} == 1) {
print &ui_table_row(
&hlink($text{'uedit_movehome'}, "movehome"),
&ui_yesno_radio("movehome", 1));
}
# Change UID on files
if ($access{'chuid'} == 1) {
print &ui_table_row(
&hlink($text{'uedit_chuid'},"chuid"),
&ui_radio("chuid", 1,
[ [ 0, $text{'no'} ],
[ 1, $text{'home'} ],
[ 2, $text{'uedit_allfiles'} ] ]));
}
# Change GID on files
if ($access{'chgid'} == 1) {
print &ui_table_row(
&hlink($text{'uedit_chgid'},"chgid"),
&ui_radio("chgid", 1,
[ [ 0, $text{'no'} ],
[ 1, $text{'home'} ],
[ 2, $text{'uedit_allfiles'} ] ]));
}
# Modify in other modules
if ($access{'mothers'} == 1) {
print &ui_table_row(
&hlink($text{'uedit_mothers'},"others"),
&ui_yesno_radio("others",
$config{'default_other'} ? 1 : 0));
}
# Rename group, if the same and if editable
@ginfo = &my_getgrgid($uinfo{'gid'});
if ($ginfo[0] eq $uinfo{'user'}) {
($group) = grep { $_->{'gid'} == $uinfo{'gid'} }
&list_groups();
if (&can_edit_group(\%access, $group)) {
print &ui_table_row(
&hlink($text{'uedit_grename'},"grename"),
&ui_yesno_radio("grename", 1));
}
}
print &ui_table_end(),"\n";
}
}
else {
# Creating a user - show options for creating home directory, copying
# skel files and creating in other modules
if ($access{'makehome'} == 1 || $access{'copy'} == 1 ||
$access{'cothers'} == 1) {
print &ui_table_start($text{'uedit_oncreate'}, "width=100%",
2, \@tds);
# Create home dir
if ($access{'makehome'} == 1) {
print &ui_table_row(
&hlink($text{'uedit_makehome'}, "makehome"),
&ui_yesno_radio("makehome", 1));
}
# Copy skel files
if ($config{'user_files'} =~ /\S/ && $access{'copy'} == 1) {
print &ui_table_row(
&hlink($text{'uedit_copy'}, "copy_files"),
&ui_yesno_radio("copy_files", 1));
}
# Create in other modules
if ($access{'cothers'} == 1) {
print &ui_table_row(
&hlink($text{'uedit_cothers'},"others"),
&ui_yesno_radio("others",
$config{'default_other'}));
}
print &ui_table_end();
}
}
if ($n ne "") {
# Buttons for saving and other actions
@buts = ( [ undef, $text{'save'} ] );
# List logins by user
push(@buts, [ "list", $text{'uedit_logins'} ]);
# Link to the mailboxes module, if installed
if (&foreign_available("mailboxes") &&
&foreign_installed("mailboxes", 1)) {
push(@buts, [ "mailboxes", $text{'uedit_mail'} ]);
}
# Link to Usermin for switching user
if (&foreign_available("usermin") &&
&foreign_installed("usermin", 1) &&
(%uacl = &get_module_acl("usermin") &&
$uacl{'sessions'})) {
# Link to Usermin module for switching to some user
&foreign_require("usermin", "usermin-lib.pl");
local %uminiserv;
&usermin::get_usermin_miniserv_config(\%uminiserv);
if (&usermin::can_create_usermin_login_url(\%uminiserv)) {
push(@buts, [ "switch", $text{'uedit_swit'}, undef, 0,
"onClick='form.target=\"_blank\"'" ]);
}
}
# Clone user
if ($access{'ucreate'}) {
push(@buts, [ "clone", $text{'uedit_clone'} ]);
}
# Delete user
if ($access{'udelete'}) {
push(@buts, [ "delete", $text{'delete'} ]);
}
print &ui_form_end(\@buts);
}
else {
# Create button
print &ui_form_end([ [ undef, $text{'create'} ] ]);
}
&ui_print_footer("index.cgi?mode=users", $text{'index_return'});
+103
View File
@@ -0,0 +1,103 @@
#!/usr/local/bin/perl
# export_exec.cgi
# Actually output a user creation batch file
require './user-lib.pl';
&error_setup($text{'export_err'});
$access{'export'} || &error($text{'export_ecannot'});
&ReadParse();
# Validate inputs
if ($in{'to'}) {
$access{'export'} == 2 || &error($text{'export_ecannot'});
$in{'file'} =~ /^\/.+$/ || &error($text{'export_efile'});
&is_under_directory($access{'home'}, $in{'file'}) ||
&error($text{'export_efile2'});
}
if ($in{'mode'} == 4) {
$in{'uid'} =~ /^\d*$/ || &error($text{'export_euid'});
$in{'uid2'} =~ /^\d*$/ || &error($text{'export_euid2'});
}
elsif ($in{'mode'} == 5) {
foreach $g (split(/\s+/, $in{'group'})) {
&my_getgrnam($g) || &error(&text('export_egroup', $g));
}
}
elsif ($in{'mode'} == 8) {
$in{'gid'} =~ /^\d*$/ || &error($text{'export_egid'});
$in{'gid2'} =~ /^\d*$/ || &error($text{'export_egid2'});
}
# Open the output file
if ($in{'to'}) {
&open_tempfile(OUT, ">$in{'file'}", 1) ||
&error(&text('export_eopen', $!));
$fh = "OUT";
&ui_print_header(undef, $text{'export_title'}, "");
}
else {
print "Content-type: text/plain\n\n";
$fh = "STDOUT";
}
# Work out which users are allowed and selected
@ulist = &list_users();
@ulist = &list_allowed_users(\%access, \@ulist);
$faccess{'uedit_mode'} = $in{'mode'};
$faccess{'uedit'} = $in{'mode'} == 2 ? $in{'can'} :
$in{'mode'} == 3 ? $in{'cannot'} :
$in{'mode'} == 4 ? $in{'uid'} :
$in{'mode'} == 8 ? $in{'gid'} :
$in{'mode'} == 5 ?
join(" ", map { "".&my_getgrnam($_) }
split(/\s+/, $in{'group'})) : "";
$faccess{'uedit2'} = $in{'mode'} == 4 ? $in{'uid2'} :
$in{'mode'} == 8 ? $in{'gid2'} : undef;
$faccess{'uedit_sec'} = $in{'mode'} == 5 ? $in{'sec'} : undef;
@ulist = &list_allowed_users(\%faccess, \@ulist);
# Go through all allowed users
$count = 0;
$pft = $in{'pft'};
foreach $u (@ulist) {
@line = ( $u->{'user'}, $u->{'pass'}, $u->{'uid'}, $u->{'gid'},
$u->{'real'}, $u->{'home'}, $u->{'shell'} );
if ($pft == 1 || $pft == 6) {
push(@line, $u->{'class'});
push(@line, $u->{'change'});
push(@line, $u->{'expire'});
}
elsif ($pft == 2) {
push(@line, $u->{'min'}, $u->{'max'}, $u->{'warn'},
$u->{'inactive'}, $u->{'expire'});
}
elsif ($pft == 4) {
local @flags;
push(@flags, 'ADMIN') if ($u->{'admin'});
push(@flags, 'ADMCHG') if ($u->{'admchg'});
push(@flags, 'NOCHECK') if ($u->{'nocheck'});
push(@line, $u->{'min'}, $u->{'max'},
$u->{'expire'}, join(" ", @flags));
}
elsif ($pft == 5) {
push(@line, $u->{'min'}, $u->{'max'});
}
if ($fh eq "STDOUT") {
print $fh join(":", "create", @line),"\n";
}
else {
&print_tempfile($fh, join(":", "create", @line),"\n");
}
$count++;
}
if ($in{'to'}) {
# All done
&close_tempfile($fh);
@st = stat($in{'file'});
print "<p>",&text('export_done',
$count, "<tt>$in{'file'}</tt>", &nice_size($st[7])),"<p>\n";
&ui_print_footer("", $text{'index_return'});
}
+61
View File
@@ -0,0 +1,61 @@
#!/usr/local/bin/perl
# export_form.cgi
# Display a form for exporting a batch file
require './user-lib.pl';
$access{'export'} || &error($text{'export_ecannot'});
&ui_print_header(undef, $text{'export_title'}, "", "export");
print "$text{'export_desc'}<p>\n";
print &ui_form_start("export_exec.cgi");
print &ui_table_start($text{'export_header'}, undef, 2);
# Destination
if ($access{'export'} == 2) {
# Can be to a file
print &ui_table_row($text{'export_to'},
&ui_radio_table("to", 0,
[ [ 0, $text{'export_show'} ],
[ 1, $text{'export_file'},
&ui_filebox("file", undef, 30) ] ]));
}
else {
# Always in browser
print &ui_table_row($text{'export_to'}, $text{'export_show'});
}
# Export type
$pft = &passfiles_type();
print &ui_table_row($text{'export_pft'},
&ui_select("pft", $pft,
[ map { [ $_, $text{'pft_'.$_} ] }
map { /^pft_(\d+)$/ ? ( $1 ) : ( ) }
sort { $a cmp $b } (keys %text) ]));
# Users to include
print &ui_table_row($text{'export_who'},
&ui_radio_table("mode", 0,
[ [ 0, $text{'export_who'} ],
[ 2, $text{'acl_uedit_only'},
&ui_textbox("can", undef, 40)." ".
&user_chooser_button("can", 1) ],
[ 3, $text{'acl_uedit_except'},
&ui_textbox("cannot", undef, 40)." ".
&user_chooser_button("cannot", 1) ],
[ 4, $text{'acl_uedit_uid'},
&ui_textbox("uid", undef, 6)." - ".
&ui_textbox("uid2", undef, 6) ],
[ 5, $text{'acl_uedit_group'},
&ui_textbox("group", undef, 40)." ".
&group_chooser_button("group", 1)."<br>".
&ui_checkbox("sec", 1, $text{'acl_uedit_sec'}, 0) ],
[ 8, $text{'acl_uedit_gid'},
&ui_textbox("gid", undef, 6)." - ".
&ui_textbox("gid2", undef, 6) ],
]));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'export_ok'} ] ]);
&ui_print_footer("", $text{'index_return'});
+80
View File
@@ -0,0 +1,80 @@
# freebsd-lib.pl
# Functions for freebsd format last output
# passfiles_type()
# Returns 0 for old-style passwords (/etc/passwd only), 1 for FreeBSD-style
# (/etc/master.passwd) and 2 for SysV (/etc/passwd & /etc/shadow)
sub passfiles_type
{
return 1;
}
# groupfiles_type()
# Returns 0 for normal group file (/etc/group only) and 2 for shadowed
# (/etc/group and /etc/gshadow)
sub groupfiles_type
{
return 0;
}
# open_last_command(handle, user, [max])
sub open_last_command
{
my ($fh, $user, $max) = @_;
my $quser = quotemeta($user);
$max = " -n ".quotemeta($max) if ($max);
open($fh, "(last -w$max $quser || last$max $quser) |");
}
# read_last_line(handle)
# Parses a line of output from last into an array of
# user, tty, host, login, logout, period
sub read_last_line
{
$fh = $_[0];
while(1) {
chop($line = <$fh>);
if (!$line) { return (); }
if ($line =~ /^(reboot|shutdown)/) { next; }
if ($line =~ /^(\S+)\s+(\S+)\s+(\S+)?\s+(\S+\s+\S+\s+\d+\s+\d+:\d+)\s+\-\s+(\S+)\s+\((.*?\d+:\d+.*?)\)/) {
# root pts/0 10.211.55.2 Tue Nov 22 21:06 - 23:16 (02:10:00)
# root pts/1 10.211.55.2 Wed Jun 29 13:13 - shutdown (7+00:01:20)
return ($1, $2, $3, $4, $5 eq "shutdown" ? "Shutdown" :
$5 eq "crash" ? "Crash" : $5, $6);
}
elsif ($line =~ /^(\S+)\s+(\S+)\s+(\S+)?\s+(\S+\s+\S+\s+\d+\s+\d+:\d+)\s+still/) {
return ($1, $2, $3, $4);
}
}
}
# use_md5()
# Returns 1 if pam is set up to use MD5 encryption
sub use_md5
{
local $md5 = 0;
&open_readfile(CONF, "/etc/login.conf");
while(<CONF>) {
s/\r|\n//g;
s/#.*$//;
$md5 = 1 if (/passwd_format\s*=\s*md5/);
$md5 = 2 if (/passwd_format\s*=\s*blowfish/);
$md5 = 3 if (/passwd_format\s*=\s*sha512/);
$md5 = 4 if (/passwd_format\s*=\s*yescrypt/);
}
close(CONF);
&open_readfile(CONF, "/etc/auth.conf");
while(<CONF>) {
s/\r|\n//g;
s/#.*$//;
$md5 = 1 if (/crypt_default\s*=\s*md5/);
$md5 = 2 if (/crypt_default\s*=\s*blowfish/);
$md5 = 3 if (/crypt_default\s*=\s*sha512/);
$md5 = 4 if (/crypt_default\s*=\s*yescrypt/);
}
close(CONF);
return $md5;
}
1;
+329
View File
@@ -0,0 +1,329 @@
#!/usr/local/bin/perl
# Execute create/modify/delete group commands in a batch file
require './user-lib.pl';
$access{'batch'} || &error($text{'gbatch_ecannot'});
if ($ENV{'REQUEST_METHOD'} eq 'GET') {
&ReadParse();
}
else {
&ReadParseMime();
}
if ($in{'source'} == 0) {
$data = $in{'file'};
$data =~ /\S/ || &error($text{'batch_efile'});
}
elsif ($in{'source'} == 1) {
$data = &read_batch_local_file($in{'local'});
}
elsif ($in{'source'} == 2) {
$data = $in{'text'};
$data =~ /\S/ || &error($text{'batch_etext'});
}
&ui_print_unbuffered_header(undef, $text{'gbatch_title'}, "");
# Force defaults for save options
$in{'chgid'} = 1 if (!$access{'chgid'});
# Work out a good base GID for new groups
&build_group_used(\%gused, \%gtaken);
$newgid = int($config{'base_gid'} > $access{'lowgid'} ?
$config{'base_gid'} : $access{'lowgid'});
# Process the file
&batch_start() if ($in{'batch'});
&lock_user_files();
$lnum = $created = $modified = $deleted = 0;
print "<pre>\n";
$pft = &passfiles_type();
foreach $line (split(/[\r\n]+/, $data)) {
$lnum++;
$line =~ s/^\s*#.*$//;
next if ($line !~ /\S/);
local @line = split(/:/, $line, -1);
local %group;
if ($line[0] eq 'create') {
# Creating a new group
# Validate line
if (!$line[1]) {
print &text('batch_eline', $lnum),"\n";
next;
}
if (@line != 5) {
print &text('batch_elen', $lnum, 5),"\n";
next;
}
if ($line[1] !~ /^[^:\t]+$/) {
print &text('gbatch_egroupname', $lnum),"\n";
next;
}
$group{'group'} = $line[1];
if ($gtaken{$group{'group'}}) {
print &text('gbatch_egroup', $lnum,
$group{'group'}),"\n";
next;
}
if ($line[3] !~ /^\d+$/) {
# make up a GID
while($gused{$newgid}) {
$newgid++;
}
$group{'gid'} = $newgid;
}
else {
# use the given UID
if ($gused{$line[3]} && !$access{'gmultiple'}) {
print &text('gbatch_ecaccess', $lnum,
$text{'gsave_egidused2'}),"\n";
next;
}
$group{'gid'} = $line[3];
}
$gused{$group{'gid'}}++;
$group{'members'} = $line[4];
# Check access control restrictions
if (!$access{'gcreate'}) {
print &text('gbatch_ecaccess', $lnum,
$text{'gsave_ecreate'});
next;
}
local $ch = &check_group(\%group);
if ($ch) {
print &text('gbatch_ecaccess', $lnum, $ch),"\n";
next;
}
if ($line[2] eq '') {
# No password needed
$group{'pass'} = '';
$group{'passmode'} = 0;
}
else {
# Normal password
$group{'pass'} = &encrypt_password($line[2]);
$group{'passmode'} = 3;
$group{'plainpass'} = $line[2];
}
# Run the before command
&set_user_envs(\%group, 'CREATE_GROUP');
$merr = &making_changes();
&error(&text('gsave_emaking', "<tt>$merr</tt>"))
if (defined($merr));
# Create the group!
&create_group(\%group);
# All done
&made_changes();
# Call other modules, ignoring any failures
$error_must_die = 1;
eval {
&other_modules("useradmin_create_group", \%group)
if ($access{'cothers'} == 1 && $in{'others'} ||
$access{'cothers'} == 0);
};
$other_err = $@;
$error_must_die = 0;
print "<b>",&text('gbatch_created', $group{'group'}),"</b>\n";
print "<b><i>",&text('batch_eother', $other_err),"</i></b>\n"
if ($other_err);
$created++;
}
elsif ($line[0] eq 'delete') {
# Deleting an existing group
if (@line != 2) {
print &text('batch_elen', $lnum, 2),"\n";
next;
}
local @glist = &list_groups();
local ($group) = grep { $_->{'group'} eq $line[1] } @glist;
if (!$group) {
print &text('gbatch_enogroup', $lnum, $line[1]),"\n";
next;
}
# Check if deletion is allowed
if (!&can_edit_group(\%access, $group)) {
print &text('gbatch_edaccess', $lnum,
$text{'gdel_egroup'}),"\n";
next;
}
if (!$config{'delete_root'} && $group->{'gid'} <= 10) {
print &text('gbatch_edaccess', $lnum,
$text{'gdel_egroup'}),"\n";
next;
}
# Check if has primary members
local $prim;
foreach $u (&list_users()) {
if ($u->{'gid'} == $group->{'gid'}) {
$prim = $u;
last;
}
}
if ($prim) {
print &text('gbatch_eprimary', $lnum,
$prim->{'user'}),"\n";
next;
}
# Run the before command
&set_user_envs($group, 'DELETE_GROUP');
$merr = &making_changes();
&error(&text('usave_emaking', "<tt>$merr</tt>"))
if (defined($merr));
# Delete from other modules, ignoring errors
$error_must_die = 1;
eval {
&other_modules("useradmin_delete_group", $group)
if ($access{'dothers'} == 1 && $in{'others'} ||
$access{'dothers'} == 0);
};
$other_err = $@;
$error_must_die = 0;
# Delete the user entry
&delete_group($group);
&made_changes();
print "<b>",&text('gbatch_deleted',$group->{'group'}),"</b>\n";
print "<b><i>",&text('batch_eother', $other_err),"</i></b>\n"
if ($other_err);
$deleted++;
}
elsif ($line[0] eq 'modify') {
# Modifying an existing group
if (@line != 6) {
print &text('batch_elen', $lnum, 6),"\n";
next;
}
local @glist = &list_groups();
local ($group) = grep { $_->{'group'} eq $line[1] } @glist;
if (!$group) {
print &text('gbatch_enogroup', $lnum, $line[1]),"\n";
next;
}
%oldgroup = %group = %$group;
$user{'olduser'} = $user->{'user'};
if (!&can_edit_group(\%access, \%group)) {
print &text('gbatch_emaccess', $lnum,
$text{'gsave_eedit'}),"\n";
next;
}
# Update supplied fields
if ($line[2] ne '') {
if (!$access{'grename'}) {
print &text('gbatch_erename',
$lnum, $line[1]),"\n";
}
$group{'group'} = $line[2];
}
if ($line[3] ne '') {
# New normal password
$group{'pass'} = &encrypt_password($line[3]);
$group{'passmode'} = 3;
$group{'plainpass'} = $line[3];
}
else {
# No change
$group{'passmode'} = 4;
}
$group{'gid'} = $line[4] if ($line[4] ne '');
if ($line[5] =~ /^\s+$/ || $line[5] eq 'NONE') {
# No members
$group{'members'} = '';
}
elsif ($line[5]) {
$group{'members'} = $line[5];
}
# Check access control restrictions
local $ch = &check_group(\%group, \%oldgroup);
if ($ch) {
print &text('gbatch_emaccess', $lnum, $ch),"\n";
next;
}
# Run the before command
&set_user_envs(\%group, 'MODIFY_GROUP');
$merr = &making_changes();
&error(&text('usave_emaking', "<tt>$merr</tt>"))
if (defined($merr));
# Change GIDs
if ($oldgroup{'gid'} != $group{'gid'} && $in{'chgid'}) {
if ($in{'chgid'} == 1) {
# Do all the home directories of members
&change_all_home_groups(
$oldgroup{'gid'}, $group{'gid'},
[ split(/,/, $group{'members'}) ]);
}
else {
# Do all files in this group from the root dir
&recursive_change("/", -1, $oldgroup{'gid'},
-1, $group{'gid'});
}
}
# Actually modify the group
&modify_group(\%oldgroup, \%group);
&made_changes();
# Modify in other modules, ignoring errors
$error_must_die = 1;
eval {
&other_modules("groupadmin_modify_group",
\%group, \%oldgroup)
if ($access{'mothers'} == 1 && $in{'others'} ||
$access{'mothers'} == 0);
};
$error_must_die = 0;
$other_err = $@;
print "<b>",&text('batch_modified',$oldgroup{'group'}),"</b>\n";
print "<b><i>",&text('batch_eother', $other_err),"</i></b>\n"
if ($other_err);
$modified++;
}
else {
print &text('batch_eaction', $lnum, $line[0]),"\n";
next;
}
}
print "</pre>\n";
&batch_end() if ($in{'batch'});
&unlock_user_files();
&webmin_log("gbatch", undef, $in{'source'} == 1 ? $in{'local'} : undef,
{ 'created' => $created, 'modified' => $modified,
'deleted' => $deleted, 'lnum' => $lnum } );
&ui_print_footer("gbatch_form.cgi", $text{'batch_return'},
"index.cgi?mode=groups", $text{'index_return'});
# check_group(\%group, [\%oldgroup])
# Check access control restrictions for a group
sub check_group
{
# check if gid is within range
if ($access{'lowgid'} && $_[0]->{'gid'} < $access{'lowgid'}) {
return &text('usave_elowgid', $access{'lowuid'});
}
if ($access{'hiuid'} && $_[0]->{'uid'} > $access{'hiuid'}) {
return &text('usave_ehiuid', $access{'hiuid'});
}
if ($_[1] && !$access{'ggid'} && $_[1]->{'gid'} != $_[0]->{'gid'}) {
return $text{'gsave_eggid'};
}
return undef;
}
+52
View File
@@ -0,0 +1,52 @@
#!/usr/local/bin/perl
# Display a form for doing batch group creation, updates or deletion from
# a text file
require './user-lib.pl';
$access{'batch'} || &error($text{'gbatch_ecannot'});
&ui_print_header(undef, $text{'gbatch_title'}, "");
# Instructions
print &ui_hidden_start($text{'batch_instr'}, "instr", 0, "batch_form.cgi");
print "$text{'gbatch_desc'}<p>\n";
print "<tt>$text{'gbatch_desc2'}</tt><p>\n";
print "$text{'gbatch_descafter'}<br>\n";
print "$text{'gbatch_descafter2'}\n";
print &ui_hidden_end("instr");
print &ui_form_start("gbatch_exec.cgi", "form-data");
print &ui_table_start($text{'gbatch_header'}, undef, 2);
# Source file
print &ui_table_row($text{'batch_source'},
&ui_radio_table("source", 0,
[ [ 0, $text{'batch_source0'}, &ui_upload("file") ],
[ 1, $text{'batch_source1'}, &ui_textbox("local", undef, 40)." ".
&file_chooser_button("local") ],
[ 2, $text{'batch_source2'}, &ui_textarea("text", undef, 5, 60) ]
]));
if ($access{'cothers'} == 1 || $access{'mothers'} == 1 ||
$access{'dothers'} == 1) {
# Do other modules?
print &ui_table_row($text{'gbatch_others'},
&ui_yesno_radio("others", int($config{'default_other'})));
}
# Only run post-command at end?
print &ui_table_row($text{'gbatch_batch'},
&ui_yesno_radio("batch", 0));
if ($access{'chgid'}) {
# Update GIDs on files
print &ui_table_row($text{'gbatch_chgid'},
&ui_radio("chgid", 0, [ [ 0, $text{'no'} ],
[ 1, $text{'home'} ],
[ 2, $text{'uedit_allfiles'} ] ]));
}
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'batch_upload'} ] ]);
&ui_print_footer("", $text{'index_return'});
+66
View File
@@ -0,0 +1,66 @@
#!/usr/local/bin/perl
# Actually output a group creation batch file
require './user-lib.pl';
&error_setup($text{'gexport_err'});
$access{'export'} || &error($text{'gexport_ecannot'});
&ReadParse();
# Validate inputs
if ($in{'to'}) {
$access{'export'} == 2 || &error($text{'export_ecannot'});
$in{'file'} =~ /^\/.+$/ || &error($text{'export_efile'});
&is_under_directory($access{'home'}, $in{'file'}) ||
&error($text{'export_efile2'});
}
if ($in{'mode'} == 4) {
$in{'gid'} =~ /^\d*$/ || &error($text{'gexport_egid'});
$in{'gid2'} =~ /^\d*$/ || &error($text{'gexport_egid2'});
}
# Open the output file
if ($in{'to'}) {
&open_tempfile(OUT, ">$in{'file'}", 1) ||
&error(&text('export_eopen', $!));
$fh = "OUT";
&ui_print_header(undef, $text{'gexport_title'}, "");
}
else {
print "Content-type: text/plain\n\n";
$fh = "STDOUT";
}
# Work out which groups are allowed and selected
@glist = &list_groups();
@glist = &list_allowed_groups(\%access, \@glist);
$faccess{'gedit_mode'} = $in{'mode'};
$faccess{'gedit'} = $in{'mode'} == 2 ? $in{'can'} :
$in{'mode'} == 3 ? $in{'cannot'} :
$in{'mode'} == 4 ? $in{'gid'} : "";
$faccess{'gedit2'} = $in{'mode'} == 4 ? $in{'gid2'} : "";
@glist = &list_allowed_groups(\%faccess, \@glist);
# Go through all allowed users
$count = 0;
foreach $g (@glist) {
@line = ( $g->{'group'}, $g->{'pass'}, $g->{'gid'},
$g->{'members'} );
if ($fh eq "STDOUT") {
print $fh join(":", "create", @line),"\n";
}
else {
&print_tempfile($fh, join(":", "create", @line),"\n");
}
$count++;
}
if ($in{'to'}) {
# All done
&close_tempfile($fh);
@st = stat($in{'file'});
print "<p>",&text('export_done',
$count, "<tt>$in{'file'}</tt>", &nice_size($st[7])),"<p>\n";
&ui_print_footer("", $text{'index_return'});
}
+44
View File
@@ -0,0 +1,44 @@
#!/usr/local/bin/perl
# Display a form for exporting a batch file of groups
require './user-lib.pl';
$access{'export'} || &error($text{'gexport_ecannot'});
&ui_print_header(undef, $text{'gexport_title'}, "", "gexport");
print "$text{'export_desc'}<p>\n";
print &ui_form_start("gexport_exec.cgi");
print &ui_table_start($text{'gexport_header'}, undef, 2);
# Destination
if ($access{'export'} == 2) {
# Can be to a file
print &ui_table_row($text{'export_to'},
&ui_radio_table("to", 0,
[ [ 0, $text{'export_show'} ],
[ 1, $text{'export_file'},
&ui_filebox("file", undef, 30) ] ]));
}
else {
# Always in browser
print &ui_table_row($text{'export_to'}, $text{'export_show'});
}
# Groups to include
print &ui_table_row($text{'gexport_who'},
&ui_radio_table("mode", 0,
[ [ 0, $text{'acl_gedit_all'} ],
[ 2, $text{'acl_gedit_only'},
&ui_textbox("can", undef, 40)." ".
&group_chooser_button("can", 1) ],
[ 3, $text{'acl_gedit_except'},
&ui_textbox("cannot", undef, 40)." ".
&group_chooser_button("cannot", 1) ],
[ 4, $text{'acl_gedit_gid'},
&ui_textbox("gid", undef, 6)." - ".
&ui_textbox("gid2", undef, 6) ] ]));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'export_ok'} ] ]);
&ui_print_footer("", $text{'index_return'});
+154
View File
@@ -0,0 +1,154 @@
<body bgcolor=#ffffff>
<title>Users and Groups</title>
<center><img src="images/useradmin.gif"></center><br>
<h2><i>This help page is incomplete</i></h2>
<hr>
<h3>Introduction</h3>
This module allows you to create, edit and delete Unix users and groups.
Typically, there is one Unix user account for each person who wants to
login to your system. In addition, various system programs will have
their own accounts, such as <tt>uucp</tt> or <tt>www</tt>. Every user
belongs to one or more groups, one of which is the primary group for
the user. <p>
The main <tt>Users and Groups</tt> page shows all the local users and
groups on your system. NIS and NIS+ users and groups will not be shown
in the list, because they are not stored locally and cannot be edited.
However, groups can contain NIS users and users can have an NIS group
as their primary group. <p>
If your machine is an NIS or NIS+ server and the table sources
are not <tt>/etc/passwd</tt> and <tt>/etc/group</tt>, you can change the
<a href="../config.cgi?useradmin">module configuration</a> to edit the
appropriate files. The <tt>Command to run after change</tt> parameter can
be set to something like <tt>cd /var/yp ; make</tt> to update NIS maps
after every change to the password and group files. <p>
<hr>
<h3>Editing an Existing User</h3>
To edit a user, just click on the user's name from the list on the
main page. This will display a form in which you can edit the following
user details :<p>
<ul>
<li><b>Username</b><br>
The name that the user uses to login to the system. Each user
must have a unique login name. <p>
<li><b>Real name</b><br>
The user's real name. This is stored in the comment field in
the password file. <p>
<li><b>Encrypted password</b> and <b>Plain text password</b><br>
The Unix password file stores passwords in one-way encrypted
form only. This means that the form cannot display the user's
plain-text password, only the encrypted form. To set a new
password for a user you can either enter the password into
the <tt>Plain text password</tt> field, or copy and paste an
encrypted string into the <tt>Encrypted password</tt> field. <p>
<li><b>Password type</b><br>
If you choose <tt>No password</tt> here, then no password is
needed to login to the account. If you choose <tt>Locked</tt>,
then no login is allowed. Only if <tt>Normal password</tt> is
chosen will the passwords described above be used. <p>
<li><b>Unix UID</b><br>
The UID is the number that the system <b>really</b> uses for
controlling access to files. Every user should have a unique
UID. If you change the Unix UID, then the <tt>Change UID</tt>
option at the bottom of the page determines what happens to
files owned by that user. <p>
<li><b>Home directory</b><br>
Every user should have a home directory to store personal files.
Typically, user home directories are all located under one
parent directory, such as <tt>/home</tt>. <p>
<li><b>Shell program</b><br>
When a user logs into the system, their shell program is run to
process whatever commands the user types. If a user has a shell
like <tt>/bin/false</tt>, then they will not be able to login.
This is useful for users who should only have FTP or email
access. <p>
<li><b>Primary group</b><br>
A user's primary group is the group which will usually be
assigned to any new files the user creates. If you change the
primary group, the <tt>Change GID</tt> option at the bottom
of the page controls what happens to files owned by that user
and group. <p>
<li><b>Other groups</b><br>
This is a list of all the other groups a user belongs to. Only
local groups will be shown, not NIS or NIS+ groups. <p>
</ul><p>
Some other user properties are only available if your system has a
shadow password file and the module configuration knows about it. They
are :<p>
<ul>
<li><b>foo</b><br>
foo. <p>
</ul><p>
<hr>
<h3>Creating a New User</h3>
To create a new user, click on the <tt>Create New User</tt> link below
the list of existing users on the main page. This will display the same
form as is used for editing a user, but with almost all the fields empty.
The only field that will be automatically filled in for you is the UID,
which Webmin will compute by picking a free UID at the end of a sequence
of existing UIDs. <p>
When a new user is created, the user's home directory can be created as
well. To have webmin create and set the permissions on the directory you
specify, choose <tt>Create home directory</tt> at the bottom of the page.
You should do this for all normal users you add. <p>
The <tt>Files to copy</tt> option in the module preferences can be used
to copy various files (such as <tt>.cshrc</tt> or <tt>.profile</tt>) into
the home directory of a newly created user. You should change this
parameter to a space-separated list of files to copy. <p>
<hr>
<h3>Deleting a User</h3>
To delete an existing user, click on the <tt>Delete</tt> button in the
user details form. This will take you to a page asking if you want to
delete the user's home directory as well. Be very careful when choosing
to do this, as some system users have the root directory as their
home directory. <p>
In general, you should never change the UID, username or shell of system
users such as <tt>root</tt>, <tt>bin</tt> or <tt>nobody</tt>. Doing so
could make your system unusable or unbootable. Do not try to delete any
of these users either, <b>especially</b> <tt>root</tt>. <p>
<hr>
<h3>Editing an Existing Group</h3>
To edit a group, click on the group name from the list of groups on the
main page. This will bring you to a form in which you can edit the
following group properties :
<ul>
<li><b>Group name</b><br>
The unique name for this group. <p>
<li><b>Group GID</b><br>
Like this UID for a Unix user, this is a number that the system
uses to identify the group. Each group should have a unique
GID. <p>
<li><b>Members</b><br>
The list of all users in this group. This can include NIS or
NIS+ users as well, if they are in use on your system. <p>
<li><b>Password</b><br>
Not used? <p>
</ul><p>
<hr>
<h3>Creating a New Group</h3>
To create a new group, click on the <tt>Create new group</tt> link
beneath the list of existing groups. This links to the same form as is
used for editing an existing group, but with all the fields blank except
for the GID. This is automatically filled by finding a free GID for the
new group. <p>
<hr>
<h3>Deleting a Group</h3>
To delete an existing group, click on the <tt>Delete Group</tt> button
on the group details page. This will immediately delete the group without
asking. No files or directories will be deleted though. <p>
<hr>
<a href="/"><img alt="<-" align=middle border=0 src=/images/left.gif></a>
&nbsp;&nbsp;<a href="">Return to module</a><p>
+1
View File
@@ -0,0 +1 @@
<header> المجموعات الثانوية </header> قائمة تضم صفرًا أو أكثر من المجموعات الأخرى التي ينتمي إليها هذا المستخدم. إذا حاول هذا المستخدم الوصول إلى ملف وكانت مجموعة هذا الملف واحدة من المجموعات الثانوية ، فسيتم تطبيق أذونات المجموعة لذلك الملف. <p style=";text-align:right;direction:rtl"> في حالة استخدام مربع نص لإدخال المجموعات ، يجب أن يكون كل اسم مجموعة على سطر منفصل. <p style=";text-align:right;direction:rtl"><footer>
+1
View File
@@ -0,0 +1 @@
<header> Вторични групи </header> Списък с нула или повече други групи, към които принадлежи този потребител. Ако този потребител се опита да получи достъп до файл и групата на този файл е една от второстепенните групи, тогава ще се прилагат груповите разрешения за този файл. <p> Ако използвате текстово поле за въвеждане на групи, всяко име на групата трябва да бъде на отделен ред. <p><footer>
+10
View File
@@ -0,0 +1,10 @@
<header>Grups secundaris</header>
Una llista de zero o més grups addicionals als quals pertany l'usuari.
Si aquest usuari intenta accedir un fitxer i el grup d'aquest fitxer és
un dels grups secundaris, llavors s'aplicaran els permisos d'aquest grup.<p>
Si utilitzes una caixa de text per introduir els grups, cada nom de grup ha d'estar en una línia separada. <p>
<footer>
+1
View File
@@ -0,0 +1 @@
<header> Sekundární skupiny </header> Seznam nula nebo více dalších skupin, do kterých tento uživatel patří. Pokud se tento uživatel pokusí o přístup k souboru a skupina tohoto souboru je jednou ze sekundárních skupin, použijí se oprávnění skupiny pro daný soubor. <p> Pokud pomocí textového pole zadáváte skupiny, musí být název každé skupiny na samostatném řádku. <p><footer>
+1
View File
@@ -0,0 +1 @@
<header> Sekundære grupper </header> En liste med nul eller flere andre grupper, som denne bruger hører til. Hvis denne bruger forsøger at få adgang til en fil, og gruppen af denne fil er en af de sekundære grupper, gælder gruppetilladelserne for den fil. <p> Hvis du bruger et tekstfelt til at indtaste grupper, skal hvert gruppens navn være på en separat linje. <p><footer>
+1
View File
@@ -0,0 +1 @@
<header> Sekundärgruppen </header> Eine Liste mit null oder mehr anderen Gruppen, zu denen dieser Benutzer gehört. Wenn dieser Benutzer versucht, auf eine Datei zuzugreifen, und die Gruppe dieser Datei eine der sekundären Gruppen ist, gelten die Gruppenberechtigungen für diese Datei. <p> Wenn Sie zur Eingabe von Gruppen ein Textfeld verwenden, muss sich jeder Gruppenname in einer separaten Zeile befinden. <p><footer>
+1
View File
@@ -0,0 +1 @@
<header> Δευτερεύουσες ομάδες </header> Μια λίστα με μηδέν ή περισσότερες άλλες ομάδες στις οποίες ανήκει αυτός ο χρήστης. Εάν αυτός ο χρήστης προσπαθήσει να αποκτήσει πρόσβαση σε ένα αρχείο και η ομάδα αυτού του αρχείου είναι μία από τις δευτερεύουσες ομάδες, τότε θα ισχύουν τα δικαιώματα ομάδας για αυτό το αρχείο. <p> Εάν χρησιμοποιείτε ένα πλαίσιο κειμένου για εισαγωγή ομάδων, κάθε όνομα ομάδας πρέπει να βρίσκεται σε ξεχωριστή γραμμή. <p><footer>
+7
View File
@@ -0,0 +1,7 @@
<header>Grupos secundarios</header>
Una lista de cero o más grupos a los cuales pertenece este usuario. Si este
usuario intenta acceder a un archivo y el grupo de ese archivo es uno de
los grupos secundarios, entonces serán aplicados los permisos de grupo que
tenga ese archivo.
<hr>
+1
View File
@@ -0,0 +1 @@
<header> Bigarren mailako taldeak </header> Erabiltzaile horretako beste talde zero edo gehiagoren zerrenda. Erabiltzaile hau fitxategi batean sartzen saiatzen bada eta fitxategi horren taldea bigarren mailako taldeetako bat bada, fitxategi horren taldeko baimenak aplikatuko dira. <p> Taldeak sartzeko testu koadro bat erabiltzen baduzu, talde bakoitzaren izena lerro bereko batean egon behar da. <p><footer>
+7
View File
@@ -0,0 +1,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<body dir="rtl">
گروه هاي ثانويه<p>يک فهرست حاوی صفر یا چند گروه دیگر که اين کاربر عضو آنهاست.
اگر اين کاربر قصد دستيابي به يک پرونده را که گروه مربوط به آن پرونده يکي از گروه
هاي ثانويه او است، داشته باشد، در آن زمان مجوزهاي مربوط به آن گروه برروی پرونده بکار گرفته مي شوند.</p>
<hr>
+1
View File
@@ -0,0 +1 @@
<header> Toissijaiset ryhmät </header> Luettelo nollasta tai useammasta muusta ryhmästä, joihin tämä käyttäjä kuuluu. Jos tämä käyttäjä yrittää käyttää tiedostoa ja kyseisen tiedoston ryhmä on yksi toissijaisista ryhmistä, kyseisen tiedoston ryhmäoikeudet ovat voimassa. <p> Jos käytät tekstikenttää ryhmien kirjoittamiseen, kunkin ryhmän nimen on oltava erillisellä rivillä. <p><footer>
+7
View File
@@ -0,0 +1,7 @@
<header>Groupes secondaires </header>
Une liste de zero ou plusieurs autres groupes auxquels un utilisateur
peut appartenir. Si cet utilisateur tente d'accéder à un fichier et que
le groupe de ce fichier est un des groupes secondaires, les permissions
qu'ont le groupe sur le fichier s'appliqueront.
<hr>
+1
View File
@@ -0,0 +1 @@
<header> Sekundarne grupe </header> Popis nula ili više drugih skupina kojima ovaj korisnik pripada. Ako ovaj korisnik pokuša pristupiti datoteci i skupina te datoteke je jedna od sekundarnih skupina, tada će se primijeniti grupna dopuštenja za tu datoteku. <p> Ako koristite tekstni okvir za unos grupa, naziv svake grupe mora biti u zasebnom retku. <p><footer>
+11
View File
@@ -0,0 +1,11 @@
<header>Secondary groups</header>
A list of zero or more other groups to which this user belongs. If this
user attempts to access a file and the group of that file is one of the
secondary groups, then the group permissions for that file will apply. <p>
If using a text box to enter groups, each group name must be on a
separate line. <p>
<footer>
+1
View File
@@ -0,0 +1 @@
<header> Másodlagos csoportok </header> A nulla vagy több további csoport listája, amelyhez a felhasználó tartozik. Ha ez a felhasználó megpróbál hozzáférni egy fájlhoz, és a fájl csoportja a másodlagos csoportok egyike, akkor a fájlra vonatkozó csoportjogosultságok érvényesek. <p> Ha szövegdobozt használ a csoportok megadásához, akkor minden csoportnévnek külön sorban kell lennie. <p><footer>
+1
View File
@@ -0,0 +1 @@
<header> Gruppi secondari </header> Un elenco di zero o più altri gruppi a cui appartiene questo utente. Se questo utente tenta di accedere a un file e il gruppo di quel file è uno dei gruppi secondari, verranno applicate le autorizzazioni di gruppo per quel file. <p> Se si utilizza una casella di testo per inserire gruppi, ciascun nome di gruppo deve trovarsi su una riga separata. <p><footer>
+1
View File
@@ -0,0 +1 @@
<header>二次グループ</header>このユーザーが属する他の0個以上のグループのリスト。このユーザーがファイルにアクセスしようとし、そのファイルのグループがセカンダリグループの1つである場合、そのファイルのグループ権限が適用されます。 <p>テキストボックスを使用してグループを入力する場合は、各グループ名を別々の行に入力する必要があります。 <p><footer>
+1
View File
@@ -0,0 +1 @@
<header> 보조 그룹 </header> 이 사용자가 속한 0 개 이상의 다른 그룹 목록. 이 사용자가 파일에 액세스하려고 시도하고 해당 파일의 그룹이 보조 그룹 중 하나 인 경우 해당 파일에 대한 그룹 권한이 적용됩니다. <p> 텍스트 상자를 사용하여 그룹을 입력하는 경우 각 그룹 이름은 별도의 줄에 있어야합니다. <p><footer>
+1
View File
@@ -0,0 +1 @@
<header> Kumpulan menengah </header> Senarai sifar atau lebih kumpulan lain yang menjadi milik pengguna ini. Sekiranya pengguna ini cuba mengakses fail dan kumpulan fail tersebut adalah salah satu kumpulan sekunder, maka kebenaran kumpulan untuk fail tersebut akan berlaku. <p> Sekiranya menggunakan kotak teks untuk memasuki kumpulan, setiap nama kumpulan mesti berada pada baris yang berasingan. <p><footer>
+10
View File
@@ -0,0 +1,10 @@
<header>Secundaire groepen</header>
Een lijst van andere groepen waar een gebruiker lid van is. Als
deze gebruiker een bestand wil openenen en de groep van dat bestand is één van de
secundaire groepen, dan zijn de groepsrechten voor dat bestand van toepassing. <p>
Indien u een tekst box gebruikt om groepen in te vullen, moet u iedere groep op een
aparte regel zetten. <p>
<footer>
+11
View File
@@ -0,0 +1,11 @@
<header>Sekundære grupper</header>
En liste med null eller flere andre grupper som denne brukeren tilhører.
Dersom denne brukeren forsøker å få tilgang til en en fil og gruppen
for denne filen er en av de sekundære gruppene, vil gruppetillatelsene
for den filen gjelde. <p>
Dersom du bruker en tekstboks til å angi gruppene må hvert gruppenavn
være på en egen linje. <p>
<footer>
+7
View File
@@ -0,0 +1,7 @@
<header>Grupy dodatkowe</header>
Lista zero lub więcej innych grup, do których należy ten użytkownik. Jeśli
ten użytkownik będzie próbował uzyskać dostęp do pliku i&nbsp;grupa tego
pliku będzie jedną z&nbsp;grup dodatkowych, to prawa dostępu do tego pliku
dla grupy będą miały zastosowanie.
<hr>
+1
View File
@@ -0,0 +1 @@
<header> Grupos secundários </header> Uma lista de zero ou mais outros grupos aos quais esse usuário pertence. Se esse usuário tentar acessar um arquivo e o grupo desse arquivo for um dos grupos secundários, as permissões de grupo para esse arquivo serão aplicadas. <p> Se estiver usando uma caixa de texto para inserir grupos, cada nome de grupo deverá estar em uma linha separada. <p><footer>
+1
View File
@@ -0,0 +1 @@
<header> Grupos secundários </header> Uma lista de zero ou mais outros grupos aos quais esse usuário pertence. Se esse usuário tentar acessar um arquivo e o grupo desse arquivo for um dos grupos secundários, as permissões de grupo para esse arquivo serão aplicadas. <p> Se estiver usando uma caixa de texto para inserir grupos, cada nome de grupo deverá estar em uma linha separada. <p><footer>
+7
View File
@@ -0,0 +1,7 @@
<header>Вторичные группы</header>
Список 0 или больше других групп к которым принадлежит пользователь. Если
этот пользователь предпримет попытку получить доступ к файлу имеющему
группу совпадающую с одной из вторичных групп пользователя, то вступают в
силу права группы к которой этот файл принадлежит.
<hr>
+1
View File
@@ -0,0 +1 @@
<header> Sekundárne skupiny </header> Zoznam nulových alebo viacerých ďalších skupín, do ktorých tento používateľ patrí. Ak sa tento používateľ pokúsi získať prístup k súboru a skupina tohto súboru je jednou zo sekundárnych skupín, uplatnia sa skupinové povolenia pre tento súbor. <p> Ak na zadávanie skupín používate textové pole, názov každej skupiny musí byť na samostatnom riadku. <p><footer>

Some files were not shown because too many files have changed in this diff Show More