<pre name="code" class="php">用户与组管理 ================================================== 一:账号的管理 --------------------------------------------------------------------------------------------- (1)useradd:创建一个新的用户或更新默认的新用户信息 SYNOPSIS useradd [options] LOGIN useradd -D useradd -D [options] OPTIONS -c, --comment COMMENT:是一个简短的登录描述,默认是用户的全名。 ~]# useradd -c 'login description' test -d, --home-dir HOME_DIR:指定用户家目录:目标路径不能事先存在,否则会有警告,不会得利skel相关的文件给用户 ~]# mkdir /home/test1 ~]# ls /home mdx test1 ~]# useradd -d /home/test1 test1 useradd: warning: the home directory already exists. Not copying any file from skel directory into it. useradd:警告:这个家目录已经存在,不能复制任何文件到skel目录里 ~]# useradd -d /home/test2 test2 -D, --defaults:创建用户默认选项 -b, --base-dir BASE_DIR -e, --expiredate EXPIRE_DATE -f, --inactive INACTIVE -g, --gid GROUP -s, --shell SHELL -e, --expiredate EXPIRE_DATE:用户帐户将被禁用的日期,日期格式为:YYYY-MM-DD ~]# vi /etc/default/useradd EXPIRE= (默认为空) ~]# useradd -e 2016-03-09 user ~]# chage -l user ... Account expires : Mar 09, 2016 (用户过期时间) ... -f, --inactive INACTIVE:密码过期后的天数,直到该帐户被永久禁用。0:在密码过期时禁用该帐户,1:禁用该功能。 ~]# vi /etc/default/useradd (查看默认值) INACTIVE=-1 -g, --gid GROUP:指定主组(组id或者组名) ~]# id test uid=1001(test) gid=1001(test) groups=1001(test) ~]# useradd -g 1001 test1 或者 useradd -g test test1 ~]# id test1 uid=1003(test1) gid=1001(test) groups=1001(test) -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:用户的附加组。每个组由一个逗号分隔,中间没有空格。 ~]# useradd -G test,test1,test2,test3 user ~]# id users ~]# uid=1004(user) gid=1005(user) groups=1005(user),1001(test),1002(test2),1003(test3),1004(test1) -m, --create-home:强制创建家目录 ~]# vi /etc/login.defs 56 # If useradd should create home directories for users by default 57 # On RH systems, we do. This option is overridden with the -m flag on 58 # useradd command line. 59 # 60 CREATE_HOME yes (如果选项为no的话需要指定 -m 强制创建家目录,默认为yes) ~]# useradd user (默认为yes状态) ~]# ls /home mdx user ~]# vi /etc/login.defs CREATE_HOME no (修改为no) ~]# useradd test (默认为不创建家目录) ~]# ls /home mdx user ~]# useradd -m test1 (强制创建家目录) ~]# ls /home mdx test1 user -M, --no-create-home:不创建家目录,甚至系统/etc/login.defs设置为yes ~]# vi /etc/login.defs CREATE_HOME yes (默认值为yes) ~]# useradd -M user ~]# ls /home mdx -p, --password PASSWORD:指定用户默认登录密码 ~]# useradd -p 123456 user -r, --system:创建一个系统账户 ~]# useradd -r user ~]# ls /home mdx ~]# id user uid=992(user) gid=990(user) groups=990(user) -s, --shell SHELL:用户的登录 shell 名,默认为留空,让系统根据 /etc/default/useradd 中的 SHELL 变量选择默认的登录shell。 -u, --uid UID:指定用户uid ~]# useradd -u 2000 user ~]# id user uid=2000(user) gid=2000(user) groups=2000(user) 注意:用户id必须为唯一的,除非使用了 -o 选项。此值必须非负,默认使用大于等于UID_MIN,且大于任何其他用户 ID 最小值。 --------------------------------------------------------------------------------------------- (2)usermod:修改用户帐户 SYNOPSIS: usermod [options] LOGIN OPTIONS: -c, --comment COMMENT:用户密码文件注释字段的新值。它通常使用 chfn 修改 -d, --home HOME_DIR:修改家目录为新的位置,但一般应该同时使用-m选项以保证原家目录中的文件会移动到新目录中; ~]# ls /home mdx user ~]# usermod -md /home/user1 user ~]# ls /home mdx user1 -g, --gid GROUP:用户新主租 a选项,表示为用户添加新的附加组; ~]# id user uid=1003(user) gid=1003(user) groups=1003(user) ~]# id test uid=1002(test) gid=1002(test) groups=1002(test) ~]# usermod -g user test (覆盖) ~]# id test uid=1002(test) gid=1003(user) groups=1003(user) -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改时会覆盖原有的附加组,同名的附加组不变,一同使用 -a 表示追加 ~]# id user uid=1003(user) gid=1003(user) groups=1003(user) ~]# usermod -G test1,test2,test3 user ~]# id user uid=1003(user) gid=1003(user) groups=1003(user),1004(test2),5003(test1),5004(test3) ~]# usermod -G test user (覆盖原来的组) ~ ]# id user uid=1003(user) gid=1003(user) groups=1003(user),5002(test) ~]# usermod -aG test1,test2,test3 user (一同使用-a 追加到原来的组) ~]# id user uid=1003(user) gid=1003(user) groups=1003(user),5002(test),1004(test2),5003(test1),5004(test3) -l, --login NEW_LOGIN:修改用户名。家目录,邮箱等不会改变 ~]# usermod -l aaa user (usermod -l 新用户名 原用户名) ~]# id aaa uid=1003(aaa) gid=1003(user) groups=1003(user) -s, --shell SHELL:修改用户登录shell ~]# usermod -s abc aaa -u, --uid UID:修改用户uid ~]# id test1 uid=5003(test1) gid=5003(test1) groups=5003(test1) ~]# usermod -u 4000 test1 ~]# id test1 uid=4000(test1) gid=5003(test1) groups=5003(test1) -L, --lock:锁定用户的密码。这会在用户加密的密码之前放置一个“!” ~]# usermod -L test1 ~]# vi /etc/shadow test1:!!:16870:0:99999:7::: -U, --unlock:解锁用户的密码。这将移除加密的密码之前的“!” ~]# usermod -U test1 ~]# vi /etc/shadow test1:!:16870:0:99999:7::: --------------------------------------------------------------------------------------------- (3)userdel:删除用户帐户和相关文件 SYNOPSIS: userdel [options] LOGIN OPTIONS: -r, --remove:家目录和用户邮箱一起删除 ~]# userdel -r test --------------------------------------------------------------------------------------------- (4)passwd:密码管理命令(输入的时候,屏幕上不会有任何提示 如:**) SYNOPSIS: root用户:(无需输入原密码,密码可以简单化) root]# passwd test2 New password: (新密码) Retype new password: (再次输入新密码) passwd: all authentication tokens updated successfully. 当前用户:(输入原密码,新密码必须符合规范) mdx]$ passwd (current) UNIX password: (原密码) New password: (新密码) Retype new password: (再次输入新密码) 密码规范: (1) 不能少于8个字符。 (2) 不能使用与过去的密码太相似的密码。 (3) 应该使用四类字符中的至少三类。 DESCRIPTION: -l:锁定密码 -u:解锁解密 -d:清除密码 --stdin:从标准输入接收密码。 echo "PASSWORD" | passwd --stdin USERNAME --------------------------------------------------------------------------------------------- (5)id:打印真实有效的用户和组 SYNOPSIS: id [OPTION]... [USER] DESCRIPTION: mdx]# id test uid=1001(test) gid=1001(test) groups=1001(test),1000(mdx) -g, --group:打印有效的用户主组id mdx]# id -g test 1001 -G, --groups:打印所有的附加组 mdx]# id -G test 1001 1000 -u, --user:打印有效的用户id mdx]# id -u test 1001 --------------------------------------------------------------------------------------------- (6)su:用户切换 SYNOPSIS: su [options...] [-] [user [args...]] OPTIONS: 切换用户: (1) 不读取目标用户的配置文件(非登录式切换,半切换); su USERNAME (2) 读取目标用户的配置文件(登录式切换,完全切换); su -l USERNAME su - USERNAME -c command, --command=command:仅以指定的用户的身份运行此处指定的命令,而不执行真正的身份切换操作; --------------------------------------------------------------------------------------------- (7)chfn:改变用户信息 SYNOPSIS: chfn [-f full-name] [-o office] ,RB [ -p office-phone] [-h home-phone] -u] [-v] [user‐ name] OPTIONS -f, --full-name full-name:指定真实用户名 -o, --office office:指定办公室地址 -p, --office-phone office-phone:设定办公室电话 -h, --home-phone home-phone:设置家里手机号码 --------------------------------------------------------------------------------------------- (8)chsh: 改变登录shell SYNOPSIS chsh [-s shell] [-l] [-u] [-v] [username] OPTIONS -s, --shell shell:设定登录shell -l, --list-shells:打印shell列表并退出 --------------------------------------------------------------------------------------------- 二:用户组的管理 --------------------------------------------------------------------------------------------- 详解:/etc/group 格式:test:x:1007: 组名:密码点位符:GID:以此组为附加组的用户列表,以逗号分隔 --------------------------------------------------------------------------------------------- (1)groupadd:添加组 SYNOPSIS: groupadd [options] group OPTIONS: -g GID:指明GID。 mdx]# groupadd -g 2000 test1 mdx]# tail -1 /etc/group test1:x:2000: -r, --system:系统组。 mdx]# groupadd -r test2 mdx]# !tail -1 /etc/group test2:x:990: --------------------------------------------------------------------------------------------- (2)groupmod:修改组 SYNOPSIS: groupmod [options] GROUP OPTIONS: -g GID:改变组id mdx]# cat /etc/group | grep ^test2 test2:x:990: mdx]# groupmod -g 3000 test2 mdx]# cat /etc/group | grep ^test2 test2:x:3000: -n, --new-name NEW_GROUP:修改组名。 mdx]# cat /etc/group | grep ^test2 test2:x:3000: mdx]# groupmod -n test3 test2 mdx]# cat /etc/group | grep ^test2 (test2组不存在) mdx]# cat /etc/group | grep ^test3 test3:x:3000: --------------------------------------------------------------------------------------------- (3)groupdel:删除组 SYNOPSIS: groupdel [options] GROUP OPTIONS: mdx]# cat /etc/group | grep ^test3 test3:x:3000: mdx]# groupdel test3 mdx]# cat /etc/group | grep ^test3 mdx]# --------------------------------------------------------------------------------------------- (4)gpasswd:管理组 /etc/group 和 /etc/gshadow SYNOPSIS: gpasswd [option] group OPTIONS: 修改组密码: mdx]# gpasswd test Changing the password for group test New Password: Re-enter new password: mdx]# grep ^test /etc/gshadow test:$6$4ixwfMX2abZ6Ug7$0HKG5LLycTh.nBhNYjth1r1kERPS6PZIfyyy6A15b/TNehEjKl3ua.TDOHBQwk.YIzyVb6.9mVrOPXh0GoO/J1:: -a, --add user:添加用户到组 mdx]# gpasswd -a mdx test Adding user mdx to group test mdx]# grep ^test /etc/group test:x:1001:mdx -d, --delete user:从组删除用户 mdx]# gpasswd -d user test Removing user user from group test mdx]# grep ^test /etc/group test:x:1001: -r, --remove-password:删除密码,密码为空。 ~]# gpasswd -r test ~]# grep ^test /etc/gshadow test::: -R, --restrict:限制用户登入组,只有组中的成员才可以用newgrp加入该组 ~]# gpasswd -R test -A, --administrators user,...:指定管理员 ~]# gpasswd -A mdx test ~]# grep ^test /etc/gshadow test:!:mdx:mdx,user -M, --members user,...:指定组成员(覆盖原来) ~]# grep ^test /etc/group test:x:1001:user,mdx,test1,test2 test1:x:1003: test2:x:1004: ~]# gpasswd -M mdx test ~]# grep ^test /etc/group test:x:1001:mdx test1:x:1003: test2:x:1004: --------------------------------------------------------------------------------------------- (5)newgrp:登录到一个新的组 SYNOPSIS: newgrp [-] [group] OPTIONS: ~]$ newgrp test Password: --------------------------------------------------------------------------------------------- (6)chage:改变用户密码终止日期 参数意思: -m, --mindays MIN_DAYS :密码可更改的最小天数。为零时代表任何时候都可以更改密码。 -M, --maxdays MAX_DAYS :密码保持有效的最大天数。 -W, --warndays WARN_DAYS :用户密码到期前,提前收到警告信息的天数。 -E, --expiredate EXPIRE_DATE: 帐号到期的日期。过了这天,此帐号将不可用。(YYYY-MM-DD) -d 上一次更改的日期。(YYYY-MM-DD) -I, --inactive INACTIVE: 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。 -l 例出当前的设置。 root]$ chage -l mdx -d:最近一次密码修改时间 : Mar 01, 2016 密码过期时间 : never 密码失效时间 : never -E:帐户过期时间 : never -m:两次改变密码之间相距的最小天数 : 0 -M:两次改变密码之间相距的最大天数 : 99999 -W:在密码过期之前警告的天数 :7