用户/组的基本概念
- 系统上的每个进程(运行的程序)都是作为特定用户运行
- 每个文件是由一个特定的用户拥有
- 访问文件和目录受到用户的限制
- 与正在运行的进程相关联的用户确定该进程可访问的文件和目录
查看当前登录的用户信息
[root@server1 ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
/etc/passwd文件下存放的是用户信息
root:x:0:0:root:/root:/bin/bash
以冒号分隔,总共七位分别代表
用户名:密码占位符:uid:gid:描述信息:家目录:shell(登陆后执行的命令)
/etc/shadow文件下存放的是用户密码
root:$6$LzACtM8wU3cLR0F.$jvcopmBzLxpl48mGdDOderIpeGjCmcfUCf.8G0hRifYkCh5AJY50413oBVxGIUidrUBtEZ1SmpFj475x56cO.1::0:99999:7:::
用户名:哈希值:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
/etc/group文件下存放的是组的信息
[root@server1 etc]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
组名:口令:组标识号gid:组内用户列表
系统uid的约定
uid:0 root用户
uid:1-999 centos7以后中的系统用户,用来约束系统中的服务
uid:1000+ 普通用户
用户管理
用户的增删改查:
useradd,userdel, usermod,/etc/passwd
用户组的增删改查:
groupadd,groupdel,groupmod,/etc/group, gpasswd
设置,更改用户密码
passwd,chage
用户
添加用户
- useradd 命令
useradd [选项] 用户名
-u:指定uid
-g:指定gid
-c:用户注释信息
-d:指定家目录,如果此目录不存在,则同时使用-m选项,可以创建家目录
-m:创建用户的家目录
-s:指定shell
-G:指定附加组
-r:创建系统用户
如果创建一个用户时,未指定任何选项,系统会创建一个和用户名相同的组作为用户的主组
-g -G 仅适用useradd创建用户时使用
-g -G 指定的组必须事先存在
删除用户
- userdel 命令
userdel [选项] 用户名
-r:连同用户的家目录一起删除
userdel -r 用户名
修改用户
- usermod 命令
usermod [选项] 用户
-c<备注>:修改用户组行号的备注文字
-a:追加,默认的修改是覆盖
-d<登入目录>:修改用户登入时的目录(家目录)
-e<有效期限>:修改账号的有效期限
-f<缓冲天数>:修改在密码过期后多少天即关闭账号
-g<群组>:修改用户所属的群组
-G<群组>:修改用户所属的附加群组
-l<帐号名称>:修改用户帐号名称
-L:锁定用户密码,使密码无效
-s<shell>:修改用户登入后所使用的shell usermod -s /sbin/nologin user03
-u<uid>:修改用户ID
-U:解除密码锁定
查找用户
用户的信息存放在/etc/passwd文件下
cat /etc/passwd
用户密码管理
- passwd 命令
passwd [选项] 用户名
-k:保持身份验证令牌不过期
-d:删除已命名帐号的密码(只有root用户才能进行此操作)
-l:锁定指名帐户的木马(仅限root用户)
-u:解锁指名帐户的密码(仅限root用户)
-n mindays:指定最短使用期限 (仅限root用户)
-x maxdays:最大使用期限 (仅限root用户)
-w warndays:提前多少天开始警告 (仅限root用户)
-i inactivedays:非活动期限 (仅限root用户)
--stdin:从标准输入接收用户密码(仅限root用户)
echo "PASSWD" | passwd --stdin username
passwd 用户 :root用户给普通用户修改密码
- chage 命令
用于更改用户密码过期信息
chage [选项] 用户
选项:
-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”
-E, --expiredate 过期日期 将帐户过期时间设为“过期日期”
-h, --help 显示此帮助信息并推出
-I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态
-l, --list 显示帐户年龄信息
-m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”
-M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数”
-R, --root CHROOT_DIR chroot 到的目录
-W, --warndays 警告天数 将过期警告天数设为“警告天数”
chage -m 0 -M 90 -W 7 -I 14 user01
[root@xwz ~]# useradd user01
[root@xwz ~]# echo 123456 |passwd --stdin user01
更改用户 user01 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@xwz ~]# chage -d 0 user01 # 强制用户在下次登录的时候换密码
用户组
添加用户组
- groupadd 命令
groupadd [选项] 组名
-g:指定gid
groupadd hr
groupadd sale
groupadd fd -g 4000
groupadd net01 -g 2000
删除用户组
- groupdel 命令
groupdel 组名
groupdel net01
修改用户组
- groupmod 命令
groupmod [选项] 组名
-g:修改组的ID,要指定新的gid
-n:修改组名,指定新组名
-o:允许使用重复的GID
groupmod -n finance fd 改名
groupmod -g 5000 finance 改gid
- usermod 命令
usermod [选项] 组名 用户名
-G:覆盖原有的附加组
-aG:增加新的附加组(不会覆盖)
当用户已存在时,使用usermod命令将用户添加到附加组中
usermod -G hr user05
usermod -G fd,it user05
usermod -aG sale user05
查找用户组
用户组信息存放在/etc/group文件下
cat /etc/group
用户组成员管理
- gpasswd 命令
当用户已存在,gpasswd命令用于将一个用户添加到组或从组中删除
gpasswd [选项] 组
-a:添加用户到用户组
-d:从组中删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组
创建itadmin,并且将其加入it组
useradd itadmin
gpasswd -a itadmin it
sudo提权
通常普通的权限比较低,如果想要给普通root权限的话需要进行sudo提权,sudo提权的思路是将普通用户加入到wheel组中即可
usermod -aG wheel 用户名
当普通用户权限较低时,可以切换到root用户执行相关命令
[centos@wdy ~]$ useradd u1
-bash: /usr/sbin/useradd: 权限不够
[centos@wdy ~]$ su - root
密码:
[root@wdy ~]# useradd u1
当普通用户权限较低时,将普通用户添加到wheel组中,在执行命令前加速sudo即可
[root@wdy ~]# vim /etc/sudoers #配置文件
%wheel ALL=(ALL) NOPASSWD: ALL
[root@wdy ~]# usermod -aG wheel centos #将centos这个用户加入到wheel组下,centos就具备了提权到root的功能
[root@wdy ~]# su - centos
[centos@wdy ~]$ sudo useradd user01