用户/组管理
相关目录,用ls查看文件列表
root用户的家目录(即主目录) /root
普通用户家目录的主目录 /home
配置文件的目录 /etc
存放用户环境变量的公共模板文件夹 ls -a /etc/skel
用户和组的相关文件,可以用cat、nl、head、tail、grep命令查看
组账号文件 /etc/group
用户账号数据库文件 /etc/passwd
用户密码文件(影子文件) /etc/shadow
用户和组的策略文件 /etc/login.defs
用户和组管理的命令
查看用户id信息 id [用户名]
创建组 groupadd 组名 命令操作会影响到/etc/group文件的内容
删除组 groupdel 组名
组的成员管理 gpasswd [-a|-d] 用户名 组名
创建用户 useradd [选项] 用户名 操作会影响到/etc/passwd文件的内容
设置登录密码 passwd [选项] [用户名]
临时切换用户 su - 用户名
退出登录 exit
删除用户 userdel [-r] 用户名 操作会影响到/etc/passwd文件的内容
用户的锁定/解锁 usermod [-L|-U] 用户名
修改密码的有效期 chage [选项] 用户名 操作会影响到/etc/shadow文件的内容
账户信息的UID、GID规则:
温馨提示:以下信息可通过cat /etc/login.defs来查询
特点 root用户 普通用户或组 保留ID范围 SYS系统服务账户
账户UID标准 0 1000~60000 1~200 201~999
组账号GID标准 0 1000~60000 1~200 201~999
登录 允许 允许(但可控制) 不允许 不允许
命令提示 # $
用户管理
groupadd,groupdel
useradd,usermod,userdel
passwd,chage
一、用户/组基本概念
Users and groups:
. Every process (running program) on the system runs as a particular user.
. Every file is owned by a particular user.
. Access to files and directories are restricted by user.
. The user associated with a running process determines the files and directories accessible to that
process.
. 系统中每一个运行的进程都需要一个特别的用户
. 每一个文件都有一个特别的拥有者
. 设置文件的访问权限需要针对于用户来设置
. 进程所关联的用户将决定它对文件的访问权限
查看当前登录的用户信息:
[root@xiaochen ~]# id
uid=0(root) gid=0(root) groups=0(root)
查看文件的owner:
[root@xiaochen ~]# ll /home/
drwx------. 4 alice alice 4096 Jun 2 15:59 alice
drwx------. 2 root root 16384 Jun 1 23:09 lost+found
drwxr-xr-x 2 root root 4096 Jun 2 15:33 xiaochen
查看运行进程的用户:
[root@xiaochen ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 19356 1536 ? Ss 03:53 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S 03:53 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 03:53 0:00 [migration/0]
和用户组相关的一些文件:
[root@xiaochen ~]# man 5 passwd
[root@xiaochen ~]# man 5 shadow
[root@xiaochen ~]# man 5 group
[root@xiaochen ~]# man 3 crypt
用户数据文件
/etc/passwd
root x:0:0:root:/root:/bin/bash
第一段:用户名
第二段:密码占位符
第三段:uid
第四段:gid
第五段:描述
第六段:家目录
第七段:用户shell类型
用户密码文件
/etc/shadow root:1MYG2NDG6$a1wtyr5GDM2esAPjug0YP0:15636:0:99999:7:: :
第一列:用户名
第二列:密码位 (有密码 无密码 !帐号锁定 !!密码锁定 *该用户永久不能登录系统)
idsalt$encrypted
加密算法$id:
$1: MD5
$5: SHA-256
$6: SHA-512
注释:加密算法就是用明文的密码和一个叫做salt的函数通过crypt()函数完成加密的,salt由a-z A-Z
0-9 . / 组成,用来决定使用4096种不同内建表格的哪一种
第三列:最后一次修改密码时间
第四列:密码最短有效天数(即密码至少使用的天数,0无限制) -n
第五列:密码最长有效天数(99999 永久生效) -x
第六列:密码过期前警告时间(默认是7天,在这期间可使用就旧密码) -w
第七列:密码过期后的宽限时间(密码过期后预留给账户修改密码的时间) -i
第八列:帐号失效期
第九列:保留列
/etc/group root 0:
第一列:组名
第二列:组密码占位符
第三列:gid
第四列:[用户列表]
系统约定: RHEL7
uid: 0 特权用户
uid: 1~999 系统用户
uid: 1000~60000 普通用户
The root user
. uid is 0
UID是0
. all power
所有权力
. This user has the power to override normal privileges on the file system
该用户有权力覆盖文件系统上的普通权限
. installing or removing software and to manage system files and directorie
安装或删除软件并管理系统文件和目录
. Most devices can only be controlled by root
大多数设备只能由root控制
用户组和策略文件
/etc/login.defs
查看login.defs文件内容:nl /etc/login.defs
查看login.defs中不包含#号开头和空白行的内容,并显示行号:grep -v “^#” /etc/login.defs |grep -v “^$”|nl
说明:grep -v 表示反向匹配(即不包含指定的关键字),#表示以#号开头,$表示空白行。
二、用户/组管理
用户组:
[root@xiaochen ~]# groupadd hr
[root@xiaochen ~]# groupadd sale
[root@xiaochen ~]# groupadd it
[root@xiaochen ~]# groupadd fd
[root@xiaochen ~]# groupadd net01 -g 2000 //添加组net01,并指定gid 2000
[root@xiaochen ~]# grep ‘net01’ /etc/group //查看/etc/group中组net01信息
[root@xiaochen ~]# groupdel net01 //删除组net01
用户:
useradd creates users
==创建用户 未指定选项==
[root@xiaochen ~]# useradd user01
. 未指定该用户的主组
. 未指定该用户的附加组
. 未指定用户的HOME
. 未指定用户的SHELL
. 未指定用户的UID…
[root@xiaochen ~]# grep ‘user01’ /etc/passwd /etc/shadow /etc/group
/etc/passwd:user01: x:507:512::/home/user01:/bin/bash
/etc/shadow:user01:!!:16589:0:99999:7:::
/etc/group:user01:x512:
[root@xiaochen ~]# id user01
uid=507(user01) gid=512(user01) groups=512(user01)
[root@www ~]# ls /home/
user01
[root@www ~]# ls /var/spool/mail/
user01
小结:
如果创建一个用户时,未指定任何选项,系统在/home生成和用户同名的文件夹作为用户的家目
录,没有指定shell的时候,默认是登陆shell,没有指定uid的时候默认分配一个uid,且分配的uid值时
passwd文件中最大的一个普通用户占用的uid值的下一个数字,会自动生成和用户名相同的组作为用户的
Primary Group和附加组,且一般情况下gid的值和uid的值相同,除非相同的这个gid值被其他的组占用了,
他会自动的向下查找,直到找到一个没有被占用的gid作为当前主组的gid。
==删除用户==
userdel deletes users
[root@xiaochen ~]# userdel user10 //删除用户user10,但不删除用户
家目录和mail spool
[root@xiaochen ~]# ll -d /home/user10/
drwx------ 3 506 510 4096 09-01 21:14 /home/user10/
[root@xiaochen ~]# ll /var/spool/mail/user10
-rw-rw---- 1 506 mail 0 09-01 21:14 /var/spool/mail/user10
[root@xiaochen ~]# userdel -r user2 //删除用户user2,同时删除用户家目录和
mail spool
==创建用户 指定选项==
[root@xiaochen ~]# useradd user02 -u 503 //创建用户usr02,指定uid
[root@xiaochen ~]# useradd user03 -d /aaa //创建用户user03 指定家目录
[root@xiaochen ~]# useradd user05 -s /sbin/nologin //创建用户并指定shell
[root@xiaochen ~]# useradd user04 -g hr //创建用户并指定主组
[root@xiaochen ~]# useradd user07 -G hr,it,fd //创建用户,指定附加组
[root@xiaochen ~]# useradd user10 -u 4000 -s /sbin/nologin
[root@xiaochen ~]# useradd user04 -M //创建用户user04,不创建家目录
[root@xiaochen ~]# useradd -o -u 0 admin //创建相同uid的帐号
==用户密码==
[root@xiaochen ~]# passwd alice
[alice@xiaochen ~]$ passwd
更改用户 alice 的密码 。
为 alice 更改 STRESS 密码。
(当前)UNIX 密码: //输入的是alice刚刚设置过的密码
新的 密码: //输入的是alice新的密码,不可以是简单的数字,也不可以是基于字
典的单词
passwd: 所有的身份验证令牌已经成功更新。
修改密码信息
passwd -l jim 锁定密码
passwd -u jim 解锁密码
passwd -S robin 查看密码状态
passwd -d user01 删除已命名帐号的密码(只有根用户才能进行此操作)
passwd -e alice 等价于 chage -d 0 alice 强制用户在下一次登录时修改密码
passwd -n robin 等价于 chage -m robin 设置密码的最短有效时限
passwd -x robin 等价于 chage -M robin 设置密码的最长有效时限
passwd -w rboin 等价于 chage -W robin 在密码过期前多少天开始提醒用户
passwd -i robin 等价于 chage -I robin 当密码过期后经过多少天该帐号会被禁用
chage -l alice 查看用户密码信息
==组成员管理==
注意:gpasswd将用户添加到组或从组中删除,只针对已存在的用户
[root@xiaochen ~]# gpasswd -M user01,user02 it //将某些成员添加到某个组
[root@xiaochen ~]# gpasswd -a user07 it //将某个用户加入到某个组
[root@xiaochen ~]# gpasswd -d user07 it //删除用户usr07从it组
修改用户的信息 usermod
usermod modifies existing users
==修改UID,SHELL==
[root@xiaochen ~]# usermod --help
[root@xiaochen ~]# useradd user10
[root@xiaochen ~]# grep ‘user10’ /etc/passwd
user10:x509:509::/home/user10:/bin/bash
[root@xiaochen ~]# usermod -u 2000 user10 //修改用户uid
[root@xiaochen ~]# usermod -s /sbin/nologin user10 //修改用户shell
[root@xiaochen ~]# usermod -G hr,it,fd user10 //直接覆盖用户原有附加组
[root@xiaochen ~]# usermod -a -G yw,kf user10 //在原有基础上添加附加组
==帐号锁定,解锁==
[root@station80 ~]# useradd user1000
[root@station80 ~]# passwd user1000
[root@station80 ~]# grep ‘user1000’ /etc/shadow
user1000:1Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7:::
[root@station80 ~]# usermod -L user1000
[root@station80 ~]# grep ‘user1000’ /etc/shadow
user1000:!1Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7:::
登录测试,帐号锁定之后,普通用户登录不上
[root@station80 ~]# usermod -U user1000
[root@station80 ~]# grep ‘user1000’ /etc/shadow
user1000:1Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7:::
登录测试
==设置账号过期==
[root@station80 ~]# date
2013年 03月 11日 星期一 15:36:19 CST
[root@station80 ~]# usermod -e 2012-12-11 user1000
[root@station80 ~]# grep ‘user1000’ /etc/shadow
user1000:1Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7::16415:
登录测试
[jyj@xiaochen ~]$ su - user1000
Password:
Your account has expired; please contact your system administrator
su: incorrect password
常用的管理命令
id
选项 功能 实例
–help 显示此帮助信息并退出 id --help
–version 显示版本信息并退出 id --version
-u 仅显示有效用户ID id -u adm
-g 仅显示有效的用户组ID id -g root
-G 显示所有组的ID(包括主组和附属组) id -G lp
-r 显示真实ID 而非有效ID,与-ugG 一起使用 id -r -u root
-Z 仅显示当前用户的Selinux安全环境 id -Z
-n 显示组名称而非数字,不与-ugG 一起使用 id -n -u root
-a 忽略,仅为与其他版本相兼容而设计 id -a
useradd
选项 功能 实例
-h 即–help,显示此命令的帮助信息 useradd -h
-b 为新用户指定家目录的主目录 useradd -D -b /home
-D 显示或修改创建新用户的默认配置 useradd -D
-c 为新建的用户设置备注(context)信息 useradd lily -c “my girl friend”
-d 给新用户指定家目录(directory) useradd sky -d /opt/sky
-e 指定账号的过期日期(有效期限) useradd u1 -e 2018-10-01
-f 新账户的密码不活动期(即宽限天数) useradd u2 -f 20
-u 用户uid号 useradd u3 -u 888
-U 创建与用户同名的组 useradd u4 -U
-g 主组,必须是已存在的组 useradd u5 -g 0
-G 附属组 useradd u6 -G root,adm,lp
-m 创建家目录 useradd u7 -m
-M 不创建家目录 useradd -M u8
-N 不创建与用户同名的组 useradd -N u9
-r 创建系统账号 useradd -r u10
-s 指定用户登录的shell,常见的shell有bash、sh、nologin、false等。 用cat /etc/shells可查。 useradd -s /sbin/nologin u11
-o --non-unique,允许使用不唯一的UID号 useradd -o -u 0 u12
-p 创建用户时指定加密后的密码。(此密码无法登录) useradd -p 01 u13
-Z 指定selinux安全参数
userdel
选项 功能 实例
-h 即–help,显示此命令的帮助信息 userdel -h
-r 删除用户的家目录和邮件 userdel -r u100
-f 即–force,强制删除用户的文件 userdel -f u111
-Z 即–selinux-user,删除用户的selinux映射信息
passwd
选项 功能 实例
-? 即–help,显示此命令的帮助信息 passwd -?
-S 显示已命名帐号的密码状态(只有root能查) passwd -S root
-k 保持(keep)身份验证令牌不过期 passwd -k root
-d 删除已命名帐号的密码(只有root能做) passwd -d u15
-l 即–lock,锁定用户账号(只有root能做) passwd -l adm
-u 即–unlock,解锁用户账号(只有root能做) passwd -u adm
-e 终止指定帐户的密码expire(只有root能做) passwd -e adm
-f 即–force,强制执行操作(只有root能做)
-x 即–maximum,密码的最长有效时限(只有root能做) passwd -x 120 adm
-n 即–minimum,密码的最短有效时限(只有root能做) passwd -n 60 adm
-w 即–warning,密码过期前的警告时间(只有root能做) passwd -w 12 adm
-i 即–inactive,密码过期多少天后禁用账号(只有root能做) passwd -i 3 adm
–stdin 从标准输入读取密码令牌(只有root能做) echo 01 | passwd --stdin adm
–usage 显示此命令能使用方法(命令的帮助信息) passwd --usage
usermod
选项 功能 实例
-h 即–help,显示此命令的帮助信息 usermod -h
-c 即–comment,修改用户的描述信息 usermod root -c “admin user”
-d 修改用户的家目录。(新家目录提前准备好) usermod u19 -md /opt/u19 (搬家)
-e 即–expiredate,修改账号过期的日期 usermod adm -e 2019-05-20
-f 即–inactive,修改密码过期后的宽限时间 usermod adm -f 8
-g 修改用户的gid值。 usermod u19 -g 5
-G 给用户设置新的附属组 usermod adm -G root,lp,bin
-a 将一个用户追加到指定的组中 usermod adm -a root
-l 修改用户的登录名称(即修改用户名) usermod u20 -l u200
-L 锁定用户[锁定后,shadow中的密码左侧有!号] usermod adm -L
-U 解锁用户 usermod adm -U
-m 给用户搬家。
-o 允许使用不唯一的UID号 usermod u19 -o -u 0
-p 修改加密后的密码(不是登录密码) usermod adm -p 01
-s 修改用户登录的shell usermod u19 -s /sbin/nologin
-u 修改用户的uid值 usermod u19 -u 999
-Z 修改用户的selinux参数
groupadd
选项 功能 实例
-h 即–help,显示此命令的帮助信息 groupadd -h
-g 创建组时指定组的gid号 groupadd -g 520 g1
-o 允许创建不唯一的gid的组 groupadd -o -g 0 g2
-p 即–passwd,指定组管理员加密后的密码 groupadd -p 01 g3
-r 即–system,创建一个系统组,组号范围是201~999 groupadd -r g4
-k 覆盖/etc/login.defs中的默认值
-f 即–force,如果指定的gid存在,也会强制创建组 groupadd -f -g 123 g5
groupmod
选项 功能 实例
-h 即–help,显示此命令的帮助信息 groupmod -h
-g 修改组的gid号 groupmod -g 300 g7
-n 即–new-name,修改组名 groupmod -n g70 g7
-o 允许使用不唯一的gid号(即允许用相同的组号) groupmod -o -g 0 g9
-p 即–password,修改组加密后的密码 groupmod -p 01 g9
gpasswd
选项 功能 实例
-a 即–add,在组中添加一个用户 gpasswd adm -a root
-d 即–delete,从组中删除一个用户 gpasswd adm -d root
-r 即–remove-password,删除组管理的密码 gpasswd -r adm
-R 即–restrict,restrict access to GROUP to its members
-M 即–members,重新设置组的成员列表 gpasswd adm -M root,bin,lp
-A 即–administrators,给组重新设置多个组长(即组管理员) gpasswd adm -A root
groups
查看用户的组信息:groups [选项] 用户名
实例:查看当前用户的组信息,查看root、adm、games、lp用户的组信息。