首页 > 代码库 > 三、 用户管理
三、 用户管理
一、用户的类别
在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文件中
[root@mylinux ~]# ls -l /etc/passwd -rw-r--r-- 1 root root 1529 3月 8 16:09 /etc/passwd [root@mylinux ~]# 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密码登录(但是可以通过其它方法登录系统)。此字段可以为空,此时认证为特定的登录名时,不要求密码。
[root@mylinux ~]# 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
[root@mylinux ~]# 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段,分别表示为:组名:密码:用户组成员:管理员
[root@mylinux ~]# cat /etc/gshadow root::: bin:::bin,daemon daemon:::bin,daemon sys:::bin,adm adm:::adm,daemon tty:::
创建用户时的默认配置文件:
/etc/default/useradd:新增用户的默认属性
[root@mylinux ~]# 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: 用户配置信息
[root@mylinux ~]# 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 创建用户, 但不创建家目录; |
[root@mylinux ~]# useradd abc -c ‘test user‘ #创建用户abc [root@mylinux ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin ... [root@mylinux ~]# 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用户密码段为‘!!‘用户此时没有密码 [root@mylinux ~]# passwd abc #为用户生成密码 更改用户 abc 的密码 。 新的 密码: 无效的密码: 过于简单化/系统化 无效的密码: 过于简单 重新输入新的 密码: passwd: 所有的身份验证令牌已经成功更新。 [root@mylinux ~]# 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: 删除用户时,同时删除家目录
[root@mylinux ~]# ls /home/ #当前用户家目录 abc dir1 mylinux python_web samba shell [root@mylinux ~]# userdel mylinux #删除用户mylinux [root@mylinux ~]# userdel -r abc #删除用户abc,同时删除家目录 [root@mylinux ~]# 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 |
[root@mylinux ~]# passwd -l abc1 锁定用户 abc1 的密码 。 passwd: 操作成功 [root@mylinux ~]# su abc1 #锁定用户对root无效,还是可以切换至被锁定用户 bash-4.1$ whoami abc1 bash-4.1$ su abc1 #普通用户无法切换至锁定用户 密码: su: 密码不正确 bash-4.1$ whoami abc2 bash-4.1$ [root@mylinux ~]# passwd -u abc1 #解锁此用户 解锁用户 abc1 的密码 。 passwd: 操作成功 bash-4.1$ whoami abc2 bash-4.1$ su abc1 #解锁用户abc1后,普通用户可以切换至此用户 密码: bash-4.1$ whoami abc1 [root@mylinux ~]# 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: 所有的身份验证令牌已经成功更新。 [root@mylinux ~]# 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 [root@mylinux ~]# for i in `seq 10`; do userdel abcd$i;done #批量删除用户 [root@mylinux ~]# 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: 查看用户账号信息
[root@mylinux ~]# finger abc1 Login: abc1 Name: Directory: /home/abc1 Shell: /bin/bash Never logged in. No mail. No Plan.
pwck: 检查用户完整性
[root@mylinux ~]# 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 一起使用则显示所有组名 |
[root@mylinux ~]# id root uid=0(root) gid=0(root) 组=0(root) [root@mylinux ~]# id -u root 0 [root@mylinux ~]# id -g root 0 [root@mylinux ~]# id -G root 0
su [options...] [-] [user [args...]] 用户切换
-:使用指定用户的环境变量,不带此参数使老用户环境变量 -c:执行指定用户操作,但不切换用户 |
[root@mylinux ~]# echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [root@mylinux ~]# 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 [root@mylinux ~]# 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 [root@mylinux ~]# su -c whoami abc1 #使用abc1用户执行命令,但不登陆此用户 abc1 [root@mylinux ~]# 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: 创建系统组; |
[root@mylinux home]# groupadd abcd1 [root@mylinux 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: #新建的用户组 [root@mylinux home]# groupadd -g 4500 abcd2 #创建指定GID用户组 [root@mylinux 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; |
[root@mylinux home]# groupmod -g 4501 abcd2 #修改用户组GID [root@mylinux 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,...: 设置有管理权限的用户列表 |
[root@mylinux home]# gpasswd -a abc1 abcd2 #将用户组abcd2添加用户 正在将用户“abc1”加入到“abcd2”组中 [root@mylinux home]# gpasswd -a abc2 abcd2 正在将用户“abc2”加入到“abcd2”组中 [root@mylinux home]# cat /etc/gshadow root::: bin:::bin,daemon daemon:::bin,daemon sys:::bin,adm ... abc1:!:: abc2:!:: abc3:!:: abcd1:!:: abcd2:!::abc1,abc2 [root@mylinux 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 [root@mylinux home]# id abc1 uid=500(abc1) gid=500(abc1) 组=500(abc1),4501(abcd2) [root@mylinux home]# gpasswd -d abc1 abcd2 #将用户abc1从abcd2用户组中移除 正在将用户“abc1”从“abcd2”组中删除 [root@mylinux home]# id abc1 uid=500(abc1) gid=500(abc1) 组=500(abc1)
本文出自 “随风而飘” 博客,请务必保留此出处http://yinsuifeng.blog.51cto.com/10173491/1905062
三、 用户管理