unix 用户和组管理.doc_第1页
unix 用户和组管理.doc_第2页
unix 用户和组管理.doc_第3页
unix 用户和组管理.doc_第4页
unix 用户和组管理.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

管理 IBM AIX 中的用户和组是管理员的重要责任之一。可以以许多种方式管理用户和组:可以通过 AIX System Management Interface Tool (SMIT) 管理它们,也可以手工编辑配置文件或使用命令行命令。本文讨论 AIX 上与用户和组相关的配置文件,以及用来帮助管理用户和组的命令行工具。 先了解文件,然后了解命令在学习 AIX 中用来创建、修改和维护用户和组的命令之前,一定要了解在幕后发生的情况。例如,应该了解相关文件及其作用。 下面是影响用户本身的一些文件:AIX 中的命令请记住,本文讨论的命令和方法应该可以在配置文件中有本地用户和组的 AIX 系统上使用。如果系统处理来自远程源(例如 Network Information System,即 NIS)的用户和组,那么不应该使用 chuser 和 chgroup 等命令。 /etc/passwd /etc/security/.profile /etc/security/limits /etc/security/passwd /etc/security/user /usr/lib/security/mkuser.default /etc/passwd/etc/passwd 文件包含用户的基本信息,它可能是 UNIX 和 Linux 用户最熟知的用户管理文件。清单 1 给出 /etc/passwd 文件的示例。 清单 1. /etc/passwd 文件示例root:!:0:0:/:/usr/bin/kshdaemon:!:1:1:/etc:bin:!:2:2:/bin:sys:!:3:3:/usr/sys:adm:!:4:4:/var/adm:uucp:!:5:5:/usr/lib/uucp:guest:!:100:100:/home/guest:nobody:!:4294967294:4294967294:/:lpd:!:9:4294967294:/:lp:*:11:11:/var/spool/lp:/bin/falseinvscout:*:6:12:/var/adm/invscout:/usr/bin/kshsnapp:*:200:13:snapp login user:/usr/sbin/snapp:/usr/sbin/snappdipsec:*:201:1:/etc/ipsec:/usr/bin/kshnuucp:*:7:5:uucp login user:/var/spool/uucppublic:/usr/sbin/uucp/uucicopconsole:*:8:0:/var/adm/pconsole:/usr/bin/kshesaadmin:*:10:0:/var/esa:/usr/bin/kshsshd:*:206:201:/var/empty:/usr/bin/kshatc:!:8000:400:Adam Cormany,Sr UNIX Admin:/home/atc:/bin/kshamdc:!:8001:401:AMDC:/home/amdc:/bin/kshpac:!:8002:400:PAC,Jr UNIX Admin:/home/pac:/bin/kshatc2:!:8003:402:ATCv2:/home/atc2:/bin/ksh可以看到这个文件使用冒号 (:) 作为分隔符,每个条目按以下格式包含 7 个字段(为了便于阅读,在分隔符前后添加了空格): Username : Password Flag : UID : GID : GECOS : Home : Shell/Command下面逐一解释这些字段: Username。这是与用户账户相关联的登录名/用户名。 Password Flag。这个字段因 UNIX 和 Linux 的风格而异。在 AIX 上,第二个字段可以包含两个字符之一:! 或 *。如果显示 !,那么已经为此用户设置了密码。如果还没有设置密码,就会出现 *。密码本身存储在 /etc/security/passwd 中。 UID。User Identifier (UID) 是用户的数字标识符。 GID。Group Identifier (GID) 与 UID 相似,但是它与组相关联。GID 在 /etc/group 中定义。 GECOS。General Electric Comprehensive Operating System (GECOS) 信息存储在第五个字段中。这里存储用户的姓名、电话号码和其他一般个人信息。 Home。这是用户的主目录。 Shell/Command。通常情况下,最后一个字段包含在用户登录时启动的 shell。管理员也可以通过修改这个字段执行其他命令而不是 shell(例如 /bin/false),从而限制访问。 /etc/security/.profile/etc/security/.profile 文件可以节省宝贵的时间和减少麻烦。在使用 mkuser 命令创建用户时,执行 /usr/lib/security/mkuser.sys 脚本。这个脚本创建用户的目录,设置正确的权限,“创建” 用户的 .profile。mkuser.sys 脚本实际上是把 /etc/security/.profile 文件复制到新用户的主目录中。 如果您正在构建新系统,或者一个新部门有 100 名员工需要在系统上建立账户,那么一定要先修改 /etc/security/.profile 文件,然后再开始创建用户账户。如果已经创建了账户,然后意识到需要对某个变量或其他设置做简单的修改,就不得不手工修改每个用户的 profile。可以使用脚本简化这个过程,但是如果提前修改了 /etc/security/.profile,会简单得多。 清单 2 给出一个 /etc/security/.profile 文件示例。清单 2. /etc/security/.profile 文件示例PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:.export PATHif -s $MAIL # This is at Shell startup. In normalthen echo $MAILMSG # operation, the Shell checksfi # periodically./etc/security/limits/etc/security/limits 文件包含所有 ulimit,即用户的系统资源限制。表 1 列出 /etc/security/limits 文件中的字段及其用途。 表 1. /etc/security/limits 中的字段软限制硬限制说明fsizefsize_hard用户可以创建的文件的大小corecore_hard用户可以创建的核心文件的大小cpucpu_hard允许的系统时间量datadata_hard进程数据段的大小stackstack_hard进程堆栈段的大小rssrss_hard允许的物理内存量nofilesnofiles_hard同时打开的文件描述符数量nprocnproc_hard同时运行的进程数量软限制和硬限制的区别是什么?在最大值(硬限制)范围内,用户或应用程序可以动态地修改软限制。硬限制 就是参数可以设置的最大值。如果把参数设置为数字值太困难(例如,如果开发人员不知道程序将使用的内存量或它需要打开的文件数量),那么可以把参数设置为 -1,这表示无限制。 但是,不必为每个用户设置所有 ulimit。/etc/security/limits 文件包含一个 default 部分,它为每个用户定义一组标准值,如果用户没有设置定制的值,就会使用这些值。如果 default 部分不存在,系统会设置预先确定的限制。 IBM 的默认值如下:* Attribute Value* = =* fsize_hard set to fsize* cpu_hard set to cpu* core_hard -1* data_hard -1* stack_hard 8388608* rss_hard -1* nofiles_hard -1清单 3 给出一个 /etc/security/limits 文件示例。清单 3. /etc/security/limits 文件示例default: fsize = 4194303 core = 16384 cpu = -1 data = 262144 rss = 65536 stack = 65536pac: fsize = 131072 fsize_hard = 262144 core = 262144假设用户 “pac” 是一位初级 UNIX 管理员,他的软限制值 fsize 由 default 部分的 4,194,303 降低到 131,072;但是,允许他在需要时把这个值增加到 262,144。另外,pac 经常把自己的程序弄坏。因此,把他的 core ulimit 增加到 262,144。 /etc/security/passwd/etc/security/passwd 文件包含 AIX 用户的密码信息。在这个文件中,每个用户有三个字段: password。加密的密码。 注意:如果这个字段只包含星号 (*),那么账户被锁定,直到设置密码为止。 lastupdate。最后一次更新密码的时间(系统纪元以来的秒数)。 flags。对修改用户密码的限制。可以设置三个标志: o ADMIN。如果设置,那么只有根用户可以修改用户的密码。 o ADMCHG。如果设置,那么在用户下一次登录或执行 su 时提示修改密码。 o NOCHECK。如果设置,那么忽略 /etc/security/user 中的任何其他限制。 清单 4 提供一个 /etc/security/password 文件示例。清单 4. /etc/security/password 文件示例amdc: password = oBQaUkPkUryCY lastupdate = 1243972006 flags = ADMCHG在这个示例中,用户 “amdc” 的密码是在 2009 年 6 月 2 日星期二 15:46:46 EDT 设置的。当用户下一次登录或执行 su 时,会提示修改密码。 您可能想知道如何把系统纪元以来的秒数转换为可读性更好的表示法,为此我编写了一个 Perl 脚本。这个脚本的核心如下: # perl -e use POSIX; print strftime(%cn, localtime(1243972006);Tue Jun 2 15:46:46 EDT 2009/etc/security/user现在,要接触到 AIX 用户管理的核心了。除了 /etc/passwd 中的基本信息之外,/etc/security/user 文件包含最重要的用户设置。表 2 说明一些参数。 表 2. /etc/security/user 文件中的参数参数格式说明account_lockedTRUE | FALSE锁定账户;如果设置为 True,用户就无法登录。adminTRUE | FALSE如果设置为 True,用户就具有管理权力。expiresMMDDHHYY如果到达此日期,账户就会过期并被锁定。histexpire0-260用户在这个期限内不能重用密码(星期数)。histsize0-50 以前使用过的不能重用的密码数量。loginTRUE | FALSE如果设置为 True,用户可以登录。maxage0-52密码的有效期(星期数)。minage0-52用户在此期限之后才能修改密码(星期数)。rloginTRUE | FALSE如果设置为 True,那么可以远程访问此账户。suTRUE | FALSE如果设置为 True,那么其他用户可以使用 su 访问此账户。 参数的完整列表请查看 AIX 系统上的 /etc/security/user,或访问 AIX Information Center。与 /etc/security/limits 一样,如果没有为账户指定值,就使用 default 部分设置所有字段。 /usr/lib/security/mkuser.default/usr/lib/security/mkuser.default 文件包含在通过 mkuser 创建新的 AIX 用户时使用的值。清单 5 提供这个文件的示例。 清单 5. /usr/lib/security/mkuser.default 文件示例user: pgrp = staff groups = staff shell = /usr/bin/ksh home = /home/$USERadmin: pgrp = system groups = system shell = /usr/bin/ksh home = /home/$USER在这个文件中可以定义许多参数。完整的列表请参见 man chuser 或访问 IBM Systems Information Center。 回页首基本命令既然您已经熟悉了命令背后的文件,现在就来看看命令本身。学习如何创建用户以及在创建用户之后修改用户。 mkuser要了解的第一个命令是 mkuser。如果没有 mkuser,其他命令都没什么用。使用这个命令创建 AIX 用户并设置初始值。下面是在创建用户时要记住的几条简单规则: 用户名不能以下面的字符开头: o 连字符或减号 (-) o 加号 (+) o At 符号 () o 波浪号 () 用户名不能是 ALL 或 default,因为这些名称是为操作系统保留的。 用户名不能包含: o 冒号 (:) o 引号 单引号或双引号 ( 或 ) o 镑符或数字符 (#) o 逗号 (,) o 等号 (=) o 斜杠 反斜杠或前向斜杠 ( 或 /) o 问号 (?) o 反引号或勾号 () o 空白(空格或制表符) o 换行符 在 AIX 5.2 和更早的版本上,用户名的长度必须小于等于 8 个字符。从 AIX 5.3 开始,最大字符数增加到了 255。 为了在 AIX 5.3 和更高版本上检查这个设置,可以使用 getconf: # getconf LOGIN_NAME_MAX9或 lsattr:# lsattr -El sys0SW_dist_intr false Enable SW distribution of interrupts Trueautorestart true Automatically REBOOT OS after a crash Trueboottype disk N/A Falsecapacity_inc 1.00 Processor capacity increment Falsecapped true Partition is capped Falseconslogin enable System Console Login Falsecpuguard enable CPU Guard Truededicated true Partition is dedicated Falseenhanced_RBAC true Enhanced RBAC Mode Trueent_capacity 1.00 Entitled processor capacity Falsefrequency 2656000000 System Bus Frequency Falsefullcore true Enable full CORE dump Truefwversion IBM,EL340_075 Firmware version and revision levels Falseid_to_partition 0X80000CE988400001 Partition ID Falseid_to_system 0X80000CE988400000 System ID Falseiostat false Continuously maintain DISK I/O history Truekeylock normal State of system keylock at boot time Falselog_pg_dealloc true Log predictive memory page deallocation events Truemax_capacity 1.00 Maximum potential processor capacity Falsemax_logname 9 Maximum login name length at boot time Truemaxbuf 20 Maximum number of pages in block I/O BUFFER CACHE Truemaxmbuf 0 Maximum Kbytes of real memory allowed for MBUFS Truemaxpout 0 HIGH water mark for pending write I/Os per file Truemaxuproc 800 Maximum number of PROCESSES allowed per user Truemin_capacity 1.00 Minimum potential processor capacity Falseminpout 0 LOW water mark for pending write I/Os per file Truemodelname IBM,8203-E4A Machine name Falsencargs 256 ARG/ENV list size in 4K byte blocks Truenfs4_acl_compat secure NFS4 ACL Compatibility Mode Truepre430core false Use pre-430 style CORE dump Truepre520tune disable Pre-520 tuning compatibility mode Truerealmem 3784704 Amount of usable physical memory in Kbytes Falsertasversion 1 Open Firmware RTAS version Falsesed_config select Stack Execution Disable (SED) Mode Truesystemid IBM,021082744 Hardware system identifier Falsevariable_weight 0 Variable processor capacity weight False要修改这个设置,只需使用 chdev 调整 v_max_logname 参数(在 lsattr 输出中显示为 max_logname),把它设置为所需的最大字符数加一,加一是为了容纳终止字符。例如,如果希望用户名的长度是 128 个字符,那么应该把 v_max_logname 设置为 129: # chdev -l sys0 -a max_logname=129sys0 changed请注意,这一修改直到重新引导操作系统之后才会生效。重新引导服务器之后,可以检查修改是否已经生效了: # getconf LOGIN_NAME_MAX128但是请记住,如果环境包含 AIX 5.3 之前的 IBM RS/6000 服务器,或者操作系统无法处理超过 8 个字符的用户名,而且依靠 NIS 或其他身份验证机制,那么应该继续使用 8 个字符的用户名。 要想用默认设置创建用户并分配下一个可用的 UID,只需执行 mkuser 加上用户名: # mkuser xander# finger xanderLogin name: xanderDirectory: /home/xander Shell: /usr/bin/kshNo Plan.很容易,不是吗?现在试一下更有意思的操作。通过添加在 chuser 手册页 (man chuser) 上找到的一些值,可以包含用户的 GECOS 信息并把用户的 core ulimit 改为 524,288,见 清单 6。 清单 6. 修改用户的 core ulimit# mkuser core=524288 gecos=Xander Cormany,317.555.1234 xander# finger xanderLogin name: xander In real life: Xander CormanySite Info: 317.555.1234Directory: /home/xander Shell: /usr/bin/kshNo Plan.# su - xander -c ulimit -atime(seconds) unlimitedfile(blocks) unlimiteddata(kbytes) unlimitedstack(kbytes) 4194304memory(kbytes) unlimitedcoredump(blocks) 524288nofiles(descriptors) unlimitedthreads(per process) unlimitedprocesses(per user) unlimited与 /etc/passwd 中的其他字段一样,GECOS 的值不应该包含冒号 (:)。添加冒号就会影响对字段位置的解释,所有期望值会向右移。例如,如果用户试图在 /etc/passwd 的 GECOS 字段中设置 Xander:Cormany 值,Xander 实际上会在正确的字段中,而 Cormany 成为右边字段(即主目录)的值。另外,GECOS 字段不能以 !# 结尾。 大多数管理员其实并不使用这样的命令行,但是了解 SMIT(man smit 或 man smitty)等实用程序在幕后做的工作是很重要的。如果您愿意使用 SMIT,过程很简单。下面是使用 SMIT 创建具有相同属性的同一用户的示例。在用户创建屏幕上直接输入 SMIT,然后使用快速路径 mkuser: # smitty mkuser图 1 显示 SMIT 实用程序。图 1. smitty mkuser 过程填写用户名、GECOS 字段和 core ulimit 之后,按 Enter 创建用户。当 SMIT 返回命令成功完成的消息时,按 F10 或 Esc + 0 退出程序。可以使用 清单 7 中的代码检查用户。 清单 7. 检查 SMIT 是否成功地创建了用户# finger xanderLogin name: xander In real life: Xander CormanySite Info: 317.555.1234Directory: /home/xander Shell: /usr/bin/kshNo Plan.# su - xander -c ulimit -atime(seconds) unlimitedfile(blocks) unlimiteddata(kbytes) unlimitedstack(kbytes) 4194304memory(kbytes) unlimitedcoredump(blocks) 524288nofiles(descriptors) unlimitedthreads(per process) unlimitedprocesses(per user) unlimitedchuser现在到了比较难的部分。但是等等:Xander 的经理 Ann 刚才来告诉您 Xander 的 core ulimit 应该是 1,048,576(有人忘记乘以 2 了)。没问题:只需用 chuser 修改 ulimit。 chuser 命令的语法与 mkuser 非常相似,使用相同的属性。清单 8 提供 chuser 命令的示例。 清单 8. chuser 命令# chuser core=1048576 xander# su - xander -c ulimit -atime(seconds) unlimitedfile(blocks) unlimiteddata(kbytes) unlimitedstack(kbytes) 4194304memory(kbytes) unlimitedcoredump(blocks) 1048576nofiles(descriptors) unlimitedthreads(per process) unlimitedprocesses(per user) unlimited可以使用快速路径在 SMIT 中方便地访问这些命令。smitty chuser 会把您直接带到用户修改屏幕。 chsh有时候希望改变 shell。AIX 中的默认 shell 是 Korn shell,即 ksh。改变 shell 的方法是执行 chsh 并提供用户名,然后选择所需的 shell,见 清单 9。 清单 9. 改变用户的 shell# finger xanderLogin name: xander In real life: Xander CormanySite Info: 317.555.1234Directory: /home/xander Shell: /usr/bin/kshNo Plan.# chsh xander Current available shells: /bin/sh /bin/bsh /bin/csh /bin/ksh /bin/tsh /bin/ksh93 /usr/bin/sh /usr/bin/bsh /usr/bin/csh /usr/bin/ksh /usr/bin/tsh /usr/bin/ksh93 /usr/bin/rksh /usr/bin/rksh93 /usr/sbin/uucp/uucico /usr/sbin/sliplogin /usr/sbin/snappd xanders current login shell: /usr/bin/ksh Change (yes) or (no)? yes To?/usr/bin/csh# finger xanderLogin name: xander In real life: Xander CormanySite Info: 317.555.1234Directory: /home/xander Shell: /usr/bin/cshNo Plan.chfn在为 Xander 创建 AIX 用户时,管理员在 GECOS 信息中的姓名中出现了输入错误。要纠正这个错误,应该使用 chfn 命令。这个命令与 chsh 很相似,它显示当前值,询问用户是否希望修改它,然后把值改为输入的值。清单 10 提供一个示例。 清单 10. chfn 命令示例# finger xanderLogin name: xander In real life: Zander CormanySite Info: 317.555.1234Directory: /home/xander Shell: /usr/bin/kshNo Plan.# chfn xander xanders current gecos: Zander Cormany,317.555.1234 Change (yes) or (no)? yes To?Xander Cormany,317.555.1234# finger xanderLogin name: xander In real life: Xander CormanySite Info: 317.555.1234Directory: /home/xander Shell: /usr/bin/kshNo Plan.纠正 GECOS 信息看起来可能意义不大,但是这对系统上的其他管理员和用户有帮助。例如,如果您试图找到 Xander 的账户,但是没有记住他的用户名,就可以在 GECOS 信息中搜索他的姓名。搜索他的姓(已经在 GECOS 字段中正确地输入了),可以快速地显示他的用户名。finger 命令在 /etc/passwd 中用户名和 GECOS 信息的第一个字段中的真实姓名中搜索字符串: # finger cormanyLogin name: atc In real life: Adam CormanyDirectory: /home/cormany Shell: /bin/kshNo Plan.Login name: xander In real life: Xander CormanySite Info: 317.555.1234Directory: /home/xander Shell: /usr/bin/kshNo Plan.lsuser从各个用户文件收集某一用户的所有信息看起来可能很繁琐。好在 AIX 提供了一个简便的命令,可以一下子收集所有数据。lsuser 命令从各个管理文件收集指定用户的所有属性。这对于许多任务非常有帮助,比如对比用户、生成要备份的所有用户的完整列表和解决某一账户的问题。 可以使用 -f 开关查看一个用户的属性,它按特定的结构显示所有信息。清单 11 提供输出的示例。 清单 11. lsuser -f 的输出# lsuser -f xanderxander: id=214 pgrp=staff groups=staff home=/home/xander shell=/usr/bin/ksh gecos=Xander Cormany,317.555.1234 login=true su=true rlogin=true daemon=true admin=false sugroups=ALL admgroups= tpath=nosak ttys=ALL expires=0 auth1=SYSTEM auth2=NONE umask=22 registry=files SYSTEM=compat logintimes= loginretries=0 pwdwarntime=0 account_locked=false minage=0 maxage=0 maxexpired=-1 minalpha=0 minother=0 mindiff=0 maxrepeats=8 minlen=0 histexpire=0 histsize=0 pwdchecks= dictionlist= default_roles= fsize=-1 cpu=-1 data=-1 stack=-1 core=1048576 rss=-1 nofiles=-1 roles=如果要对比用户,只需把开关由 -f 改为 -c 并通过逗号分隔的参数添加要对比的用户。清单 12 提供输出示例。 清单 12. lsuser -c 的输出# lsuser -c xander,atc#name:id:pgrp:groups:home:shell:gecos:login:su:rlogin:daemon:admin:sugroups:tpath:ttys:expires:auth1:auth2:umask:registry:SYSTEM:loginretries:pwdwarntime:account_locked:minage:maxage:maxexpired:minalpha:minother:mindiff:maxrepeats:minlen:histexpire:histsize:fsize:cpu:data:stack:core:rss:nofilesxander:214:staff:staff:/home/xander:/usr/bin/ksh:Xander Cormany,317.555.1234:true:true:true:true:false:ALL:nosak:ALL:0:SYSTEM:NONE:22:files:compat:0:0:false:0:0:-1:0:0:0:8:0:0:0:-1:-1:-1:-1:1048576:-1:-1#name:id:pgrp:groups:home:shell:gecos:login:su:rlogin:daemon:admin:sugroups:tpath:ttys:expires:auth1:auth2:umask:registry:SYSTEM:loginretries:pwdwarntime:account_locked:minage:maxage:maxexpired:minalpha:minother:mindiff:maxrepeats:minlen:histexpire:histsize:fsize:cpu:data:stack:core:rss:nofiles:time_last_login:time_last_unsuccessful_login:tty_last_login:tty_last_unsuccessful_login:host_last_login:host_last_unsuccessful_login:unsuccessful_login_countcormany:215:staff:staff,support:/home/cormany:/bin/ksh:Adam Cormany:true:true:true:true:false:ALL:nosak:ALL:0:SYSTEM:NONE:22:NIS:compat:0:0:fa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论