一、用户的类别
在 linux 系统中用户可以分为两大类:管理员与普通用户。管理员 root 具有最高权限,其 ID 号为 0;普
通用户的 ID 号为 1-65535, 普通用户又可以分为两类:系统用户与一般用户,系统用户的 ID 号为 1-499(系
统户用通常没有家目录,即不可以登录),而一般用户的 ID 号为 500-65535。
对于用户组也可以分为管理员组 root 和普通用户组,普通用户组也分为系统组与一般组。当从用户视
角对用户组进行划分时,分为私用组,基本组以及额外组。
私有组: 创建用户时, 如果没有为其指定所属的组, 系统会自动为其创建一个与用户名同名的组 基本组, 有效用户组: 显示在 /etc/passwd 中 GID 字段组, 为用户的基本组 额外组, 附加组: 默认组以外的其它组 /etc/group |
二、用户与用户组相关配置文件
/etc/passwd: 用户及其属性信息
此文件中存放的为用户与其相关的属性信息。可以分为 7 段,分别用':'隔开,它们分别代表的意义为:用户名:密码:UID:GID:注释:家目录:默认 SHELL。此配置文件的权限为 644,即其他用户都可以查看次文件内容。所以文件的密码段用 x 表示,而实际密码存放在 / etc/shadow 文件中
- [ ~]# ls -l /etc/passwd
- -rw-r--r-- 1 root root 1529 3月 8 16:09 /etc/passwd
- [ ~]# cat /etc/passwd
- root:x:0:0:root:/root:/bin/bash
- bin:x:1:1:bin:/bin:/sbin/nologin
- daemon:x:2:2:daemon:/sbin:/sbin/nologin
- adm:x:3:4:adm:/var/adm:/sbin/nologin
- lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
/etc/shadow: 用户密码及其相关属性
用户实际存放密码的配置文件。次文件的权限为 000,即任何人都不能查看,当然次权限对于 root 用户不起作用,root 用户还是可以对次文件进行操作。此文件的信息每一行可以分为 8 段,每一行代表一个用户的密码信息,分别用':'隔开。其每一段代表的意义为:
用户名: 密码: 最近一次修改密码的时间: 最短使用期限: 最长使用期限: 警告时间: 非活动时间: 过期时间
如果密码字段包含一些不是 crypt(3) 合法结果的字符,比如 ! 或 *,用户将无法使用 unix 密码登录 (但是可以通过其它方法登录系统)。此字段可以为空,此时认证为特定的登录名时,不要求密码。
- [ ~]# cat /etc/shadow
- root:$1$aRbkAvfC$zoFwPeuviOTZIZCrHQ0z51:16429:0:99999:7:::
- bin:*:15980:0:99999:7:::
- ...
- ftp:*:15980:0:99999:7:::
- nobody:*:15980:0:99999:7:::
- vcsa:!!:16429::::::
- abrt:!!:16429::::::
- ntp:!!:16429::::::
/etc/group: 组及其属性信息
用户组及其属性信息。每一行代表一个用户组,每一行信息可以分为 4 段,分别表示:
组名:密码:GID: 以此组为其附加组的用户列表
与 / etc/passwd 配置文件相似,其第二段密码信息也是用 x 表示。实际密码存放的文件为 / etc/gshadow
- [ ~]# cat /etc/group
- root:x:0:
- bin:x:1:bin,daemon
- daemon:x:2:bin,daemon
- sys:x:3:bin,adm
- adm:x:4:adm,daemon
/etc/gshadow:组密码及其相关属性
次文件存放用户组密码及相关属性信息。每一行代表一个用户组,用户组信息可以分为 4 段,分别表示为:组名: 密码:用户组成员:管理员
- [ ~]# cat /etc/gshadow
- root:::
- bin:::bin,daemon
- daemon:::bin,daemon
- sys:::bin,adm
- adm:::adm,daemon
- tty:::
创建用户时的默认配置文件:
/etc/default/useradd:新增用户的默认属性
- [ ~]# cat /etc/default/useradd
- # useradd defaults file
- GROUP=100 #新建用户默认组,Centos、redhat等系统不会生效
- HOME=/home #用户家目录创建的地方
- INACTIVE=-1 #密码过期后是否会失效的配置值,-1代表永远不是失效
- EXPIRE= #过期时间
- SHELL=/bin/bash #默认shell
- SKEL=/etc/skel #新建用户家目录参考目录,此目录下的内容会自动复制到新建用户家目录
- CREATE_MAIL_SPOOL=yes#是否为新建用户创建邮箱
/etc/login.def: 用户配置信息
- [ ~]# cat /etc/login.defs
- #
- # Please note that the parameters in this configuration file control the
- # behavior of the tools from the shadow-utils component. None of these
- # tools uses the PAM mechanism, and the utilities that use PAM (such as the
- # passwd command) should therefore be configured elsewhere. Refer to
- # /etc/pam.d/system-auth for more information.
- #
- # *REQUIRED*
- # Directory where mailboxes reside, _or_ name of file, relative to the
- # home directory. If you _do_ define both, MAIL_DIR takes precedence.
- # QMAIL_DIR is for Qmail
- #
- #QMAIL_DIR Maildir
- MAIL_DIR /var/spool/mail
- #邮箱目录。修改或删除用户账户时需要处理邮箱,如果没有指定,将使用编译时指定的默认值。
- #MAIL_FILE .mail
- #定义用户邮箱文件的位置(相对于主目录)。
- # Password aging controls:
- #
- # PASS_MAX_DAYS Maximum number of days a password may be used.
- # PASS_MIN_DAYS Minimum number of days allowed between password changes.
- # PASS_MIN_LEN Minimum acceptable password length.
- # PASS_WARN_AGE Number of days warning given before a password expires.
- #
- PASS_MAX_DAYS 99999
- #一个密码可以使用的最大天数。如果密码比这旧,将会强迫更改密码。如果不指定,就假定为 -1,这会禁用这个限制。
- PASS_MIN_DAYS 0
- PASS_MIN_LEN 8
- PASS_WARN_AGE 7
- #
- # Min/max values for automatic uid selection in useradd
- #
- UID_MIN 500
- UID_MAX 60000
- #
- # Min/max values for automatic gid selection in groupadd
- #
- GID_MIN 500
- GID_MAX 60000
- #useradd,groupadd 或 newusers 创建的常规组的组 ID 的范围。
- #
- # If defined, this command is run when removing a user.
- # It should remove any at/cron/print jobs etc. owned by
- # the user to be removed (passed as the first argument).
- #
- #USERDEL_CMD /usr/sbin/userdel_local
- #
- # If useradd should create home directories for users by default
- # On RH systems, we do. This option is overridden with the -m flag on
- # useradd command line.
- #
- CREATE_HOME yes
- #指示是否为新用户默认创建主目录。此设置并不应用到系统用户,并且可以使用命令行覆盖
- # The permission mask is initialized to this value. If not specified,
- # the permission mask will be initialized to 022.
- UMASK 077
- #文件模式创建掩码初始化为此值。如果没有指定,掩码初始化为 022。
- # This enables userdel to remove user groups if no members exist.
- #
- USERGROUPS_ENAB yes
- # Use SHA512 to encrypt password.
- ENCRYPT_METHOD SHA512
/etc/skel: 创建用户时自动添加到用户家目录的配置文件
三、创建用户与密码管理 sueradd/userdel/passwd
useradd [options] LOGIN 创建用户
-u UID: [UID_MIN, UID_MAX], 定义在 / etc/login.defs -g GID:指明用户所属基本组,可为组名,也可以 GID -c "COMMENT": 用户的注释信息 -d /PATH/TO/HOME_DIR: 以指定的路径为家目录 -s SHELL: 指明用户的默认 shell 程序,可用列表在 / etc/shells 文件中 -G GROUP1[,GROUP2,...[,GROUPN]]]: 为用户指明附加组; 组必须事先存在 -r 创建系统用户,不会为用户创建家目录,默认 shell 为 / sbin/nologin -D 创建用户时并改变默认值设定: /etc/default/useradd -m 创建用户时, 强制给用户创建家目录 -M 创建用户, 但不创建家目录; |
- [ ~]# useradd abc -c 'test user' #创建用户abc
- [ ~]# cat /etc/passwd
- root:x:0:0:root:/root:/bin/bash
- bin:x:1:1:bin:/bin:/sbin/nologin
- ...
- [ ~]# cat /etc/shadow #查看用户密码
- root:$1$aRbkAvfC$zoFwPeuviOTZIZCrHQ0z51:16429:0:99999:7:::
- bin:*:15980:0:99999:7:::
- daemon:*:15980:0:99999:7:::
- adm:*:15980:0:99999:7:::
- ...
- abc:x:501:501:test user:/home/abc:/bin/bash #abc用户密码段为'!!'用户此时没有密码
- [ ~]# passwd abc #为用户生成密码
- 更改用户 abc 的密码 。
- 新的 密码:
- 无效的密码: 过于简单化/系统化
- 无效的密码: 过于简单
- 重新输入新的 密码:
- passwd: 所有的身份验证令牌已经成功更新。
- [ ~]# cat /etc/shadow #abc用户密码已经生成
- root:$1$aRbkAvfC$zoFwPeuviOTZIZCrHQ0z51:16429:0:99999:7:::
- bin:*:15980:0:99999:7:::
- daemon:*:15980:0:99999:7:::
- adm:*:15980:0:99999:7:::
- ...
- abc:$6$3O5koICf$prZGFRXOL8h8LdyibypFxf/2jgxxWe0AVE2Znp477hi7KlmJZdZs.BnZRnQsFeqZSTg6PyLwnnu9fr0Yfm9AG.:17235:0:99999:7:::
userdel [OPTION]... login
-r: 删除用户时,同时删除家目录
- [ ~]# ls /home/ #当前用户家目录
- abc dir1 mylinux python_web samba shell
- [ ~]# userdel mylinux #删除用户mylinux
- [ ~]# userdel -r abc #删除用户abc,同时删除家目录
- [ ~]# ls /home/
- dir1 mylinux python_web samba shell
passwd [OPTIONS] UserName: 修改指定用户的密码,仅 root 用户拥有权限使用此命令
passwd: 修改自己的密码
-l: 锁定指定用户 -u: 解锁指定用户 -n mindays: 指定最短使用期限 -x maxdays: 最大使用期限 -w warndays:提前多少天开始警告 -i inactivedays: 非活动期限; 如:echo "PASSWORD" | passwd --stdin USERNAME |
- [ ~]# passwd -l abc1
- 锁定用户 abc1 的密码 。
- passwd: 操作成功
- [ ~]# su abc1 #锁定用户对root无效,还是可以切换至被锁定用户
- bash-4.1$ whoami
- abc1
- bash-4.1$ su abc1 #普通用户无法切换至锁定用户
- 密码:
- su: 密码不正确
- bash-4.1$ whoami
- abc2
- bash-4.1$
- [ ~]# passwd -u abc1 #解锁此用户
- 解锁用户 abc1 的密码 。
- passwd: 操作成功
- bash-4.1$ whoami
- abc2
- bash-4.1$ su abc1 #解锁用户abc1后,普通用户可以切换至此用户
- 密码:
- bash-4.1$ whoami
- abc1
- [ ~]# for i in `seq 10`; do useradd abcd$i ;echo '123456'|passwd --stdin abcd$i;done #批量创建用户,为用户添加密码
- 更改用户 abcd1 的密码 。
- passwd: 所有的身份验证令牌已经成功更新。
- 更改用户 abcd2 的密码 。
- passwd: 所有的身份验证令牌已经成功更新。
- 更改用户 abcd3 的密码 。
- passwd: 所有的身份验证令牌已经成功更新。
- 更改用户 abcd4 的密码 。
- passwd: 所有的身份验证令牌已经成功更新。
- 更改用户 abcd5 的密码 。
- passwd: 所有的身份验证令牌已经成功更新。
- 更改用户 abcd6 的密码 。
- passwd: 所有的身份验证令牌已经成功更新。
- 更改用户 abcd7 的密码 。
- passwd: 所有的身份验证令牌已经成功更新。
- 更改用户 abcd8 的密码 。
- passwd: 所有的身份验证令牌已经成功更新。
- 更改用户 abcd9 的密码 。
- passwd: 所有的身份验证令牌已经成功更新。
- 更改用户 abcd10 的密码 。
- passwd: 所有的身份验证令牌已经成功更新。
- [ ~]# cat /etc/passwd
- ...
- abcd1:x:503:503::/home/abcd1:/bin/bash
- abcd2:x:504:504::/home/abcd2:/bin/bash
- abcd3:x:505:505::/home/abcd3:/bin/bash
- abcd4:x:506:506::/home/abcd4:/bin/bash
- abcd5:x:507:507::/home/abcd5:/bin/bash
- abcd6:x:508:508::/home/abcd6:/bin/bash
- abcd7:x:509:509::/home/abcd7:/bin/bash
- abcd8:x:510:510::/home/abcd8:/bin/bash
- abcd9:x:511:511::/home/abcd9:/bin/bash
- abcd10:x:512:512::/home/abcd10:/bin/bash
- [ ~]# for i in `seq 10`; do userdel abcd$i;done #批量删除用户
- [ ~]# cat /etc/passwd
- ...
- hacluster:x:495:496:heartbeat user:/var/lib/heartbeat/cores/hacluster:/sbin/nologin
- abc1:x:500:500::/home/abc1:/bin/bash
- abc2:x:501:501::/home/abc2:/bin/bash
- abc3:x:502:502::/home/abc3:/bin/bash
chage [options] [LOGIN] 修改用户密码属性
-d 最近一次修改密码的时间 -E, --expiredate 过期时间 -I, --inactive 失效时间 -m, --mindays 最短使用期限 -M, --maxdays 最长使用期限 -W, --warndays 警告时间 |
四、修改用户属性 usermod/chsh/chfn
chsh: 修改用户默认 shell
chfn: 修改用户注释
usermod [OPTION] login 修改用户属性
-u UID: 新 UID -g GID: 新基本组 -s SHELL:新的默认 SHELL -c 'COMMENT':新的注释信息 -l login_name: 新的用户名字 -L: 锁定用户 -U: 解锁用户 -f INACTIVE: 设定非活动期限; -d HOME: 新的家目录; 原有家目录中的文件不会同时移动至新的家目录; 若要移动则同时使用 -m 选项 -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组, 原来的附加组将会被覆盖; 若保留原有, 则要同时使用 -a 选项 |
五、查看用户相关信息与切换用户 id/finger/pwck/su
finger: 查看用户账号信息
- [ ~]# finger abc1
- Login: abc1 Name:
- Directory: /home/abc1 Shell: /bin/bash
- Never logged in.
- No mail.
- No Plan.
pwck: 检查用户完整性
- [ ~]# pwck /etc/passwd
- 用户"adm":目录 /var/adm 不存在
- 用户"uucp":目录 /var/spool/uucp 不存在
- 用户"gopher":目录 /var/gopher 不存在
- 用户"ftp":目录 /var/ftp 不存在
- 用户"abrt":目录 /etc/abrt 不存在
- 用户"saslauth":目录 /var/empty/saslauth 不存在
- 用户"mysql":目录 /application/mydata 不存在
id [OPTION]... [USER] 查看用户 ID
-u: 显示 UID, 跟 -n 一起使用则显示用户名 -g: 显示基本组 ID, 跟 -n 一起使用则显示基本组名 -G: 显示所有组 ID, 跟 -n 一起使用则显示所有组名 |
- [ ~]# id root
- uid=0(root) gid=0(root) 组=0(root)
- [ ~]# id -u root
- 0
- [ ~]# id -g root
- 0
- [ ~]# id -G root
- 0
su [options...] [-] [user [args...]] 用户切换
-: 使用指定用户的环境变量,不带此参数使老用户环境变量 -c: 执行指定用户操作,但不切换用户 |
- [ ~]# echo $PATH
- /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
- [ ~]# su abc1 #带环境变量切换
- bash-4.1$ echo $PATH
- /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
- [ ~]# su - abc1
- -bash-4.1$ echo $PATH #不带环境变量切换
- /usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
- [ ~]# su -c whoami abc1 #使用abc1用户执行命令,但不登陆此用户
- abc1
- [ ~]# su -c 'ls -l /home' abc1
- 总用量 72
- drwx------ 2 abc1 abc1 4096 3月 10 10:37 abc1
- drwx------ 2 abc2 abc2 4096 3月 10 10:52 abc2
- drwx------ 2 abc3 abc3 4096 3月 10 10:36 abc3
- drwx------ 2 503 503 4096 3月 10 10:49 abcd1
- drwx------ 2 512 512 4096 3月 10 10:49 abcd10
- drwx------ 2 504 504 4096 3月 10 10:49 abcd2
- drwx------ 2 505 505 4096 3月 10 10:49 abcd3
- drwx------ 2 506 506 4096 3月 10 10:49 abcd4
- drwx------ 2 507 507 4096 3月 10 10:49 abcd5
- drwx------ 2 508 508 4096 3月 10 10:49 abcd6
- drwx------ 2 509 509 4096 3月 10 10:49 abcd7
- drwx------ 2 510 510 4096 3月 10 10:49 abcd8
- drwx------ 2 511 511 4096 3月 10 10:49 abcd9
- drwxr-xr-x 3 root root 4096 3月 6 19:27 dir1
- drwx------ 2 abc1 abc1 4096 3月 8 16:09 mylinux
- drwxr-xr-x 3 root root 4096 2月 21 19:11 python_web
- drw-r--r-x 2 abc1 abc1 4096 4月 29 2016 samba
- drwxr-xr-x 2 root root 4096 9月 3 2016 shell
六、用户组相关命令 groupadd/groupdel/groupmod/gpasswd/newgrp
newgrp: 临时切换基本组
如果用户本不属于此组,则需要组密码
groupadd [OPTION]... group_name 创建用户组
-g GID: 指明 GID 号;[GID_MIN, GID_MAX] -r: 创建系统组; |
- [ home]# groupadd abcd1
- [ home]# cat /etc/group
- root:x:0:
- bin:x:1:bin,daemon
- ...
- haclient:x:496:
- abc1:x:500:
- abc2:x:501:
- abc3:x:502:
- abcd1:x:4002: #新建的用户组
- [ home]# groupadd -g 4500 abcd2 #创建指定GID用户组
- [ home]# cat /etc/group
- root:x:0:
- bin:x:1:bin,daemon
- daemon:x:2:bin,daemon
- ...
- abc2:x:501:
- abc3:x:502:
- abcd1:x:4002:
- abcd2:x:45000
groupdel: 删除用户组
groupmod [OPTION]... group 用户组属性更改
-n group_name: 新的组名 -g GID: 新的 GID; |
- [ home]# groupmod -g 4501 abcd2 #修改用户组GID
- [ home]# cat /etc/group
- root:x:0:
- bin:x:1:bin,daemon
- daemon:x:2:bin,daemon
- sys:x:3:bin,adm
- ...
- abc1:x:500:
- abc2:x:501:
- abc3:x:502:
- abcd1:x:4002:
- abcd2:x:4501:
gpasswd [OPTION] GROUP 用户组密码设置
-a user: 将 user 添加至指定组中; -d user: 将用户 user 从指定附加组中移除 -A user1,user2,...: 设置有管理权限的用户列表 |
- [ home]# gpasswd -a abc1 abcd2 #将用户组abcd2添加用户
- 正在将用户"abc1"加入到"abcd2"组中
- [ home]# gpasswd -a abc2 abcd2
- 正在将用户"abc2"加入到"abcd2"组中
- [ home]# cat /etc/gshadow
- root:::
- bin:::bin,daemon
- daemon:::bin,daemon
- sys:::bin,adm
- ...
- abc1:!::
- abc2:!::
- abc3:!::
- abcd1:!::
- abcd2:!::abc1,abc2
- [ home]# cat /etc/passwd #passwd文件中只显示基本组GID,没有显示附加组
- root:x:0:0:root:/root:/bin/bash
- bin:x:1:1:bin:/bin:/sbin/nologin
- daemon:x:2:2:daemon:/sbin:/sbin/nologin
- ...
- abc1:x:500:500::/home/abc1:/bin/bash
- abc2:x:501:501::/home/abc2:/bin/bash
- abc3:x:502:502::/home/abc3:/bin/bash
- [ home]# id abc1
- uid=500(abc1) gid=500(abc1) 组=500(abc1),4501(abcd2)
- [ home]# gpasswd -d abc1 abcd2 #将用户abc1从abcd2用户组中移除
- 正在将用户"abc1"从"abcd2"组中删除
- [ home]# id abc1
- uid=500(abc1) gid=500(abc1) 组=500(abc1)
来源: http://www.bubuko.com/infodetail-1977285.html