什么是用户
用户是操作者在系统中的身份;
用户是系统最底层的安全机制的一部分;
用户在系统中以字符和文件的形式存在。
用户的查看
(1). 查看当前用户命令 whoami
执行 whoami 命令之后,系统会把当前用户的名称显示出来。
(2). 系统中用户的查看
命令 id
功能: 查看指定用户的id信息
常用参数:
- id -u 查看用户的uid
- id -g 查看用户的gid
- id -G 查看用户所在的所有组的id
- id -a 查看用户所有信息
- id -un 查看用户名字
- id -gn 查看用户初始组名称
- id -Gn 查看用户所在所有组名称
示例操作:
id 后名不加用户的话,查看的就是当前用户的信息;id 后加用户名时,就查看的是指定用户的信息;id 后加的用户不存在时就会报错,如下
下面看一下其它参数的操作以及格式:
用户在系统中的存储方式
Linux系统中的用户是在几个固定的文件中存储的,用户在文件中又是以字符串的形式记录的。一般存储用户信息的文件有以下几个:(1). /etc/passwd 用户信息文件
文件中每一列代表的含义为:
用户名字:用户密码:用户uid:用户gid:用户说明:用户家目录:用户使用的shell
(2). /etc/group 用户组信息文件
文件中每一列代表的含义:
用户组名称:用户组密码:用户组id:附加用户成员
(3). /etc/shadow 用户认证信息文件(只有root用户有访问权限)
文件中每一列代表的含义:
用户名称:密码:密码使用天数:最短有效期:密码最长有效期:密码警告期:密码非活跃期:密码到期日:
(4). /etc/skel/.* 用户的基本信息配置(默认开启shell的配置,用户的骨文件)
(5). /home/username 用户的家目录
用户新建以及用户管理的命令
(1). 新建用户命令useradd 新建用户
可加参数:
- useradd -u 指定用户的uid
- useradd -g 指定用户初始组,这个组一定要存在
- useradd -G 指定附加组,组同样要存在
- useradd -c 用户说明
- useradd -d 指定用户家目录
- useradd -s 指定用户使用的shell,shell种类参看/etc/shells
(2). 删除用户
userdel -r 删除用户
(3). 新建组的命令
groupadd 建立用户组
groupadd -g 新建组,-g表示指定用户组的id
(4). 删除用户组
groupdel 删除用户组
(5). 更改用户信息
命令: usermod
可加参数及含义:
- usermod -l 更改用户的名称
- usermod -u 改变用户uid
- usermod -g 改变用户初始组
- usermod -G 改变用户附加组
- usermod -aG 增加用户附加组
- usermod -d 改变用户家目录的指向
- usermod -md 改变用户家目录信息和家目录名称
- usermod -s 改变用户的shell
- usermod -c 改变用户的说明文字
- usermod -L 冻结用户
- usermod -U 解锁用户
示例操作:
对用户以及用户组进行操作,实质上是对 /etc/passwd和/etc/group 文件中的内容进行增加,修改和删除,并且只要改变用户, /home/ 就会改变其对应的家目录。我们可以通过 watch 命令实时监控它们的变化,命令如下:
[root@localhost ~]# watch -n 1 "tail -n 3 /etc/passwd /etc/group;ls -l /home/"
执行命令之后,进入实时监控界面,这是它们最初的状态:
另外再打开一个shell进行用户操作的命令,首先用 usersdd 建立一个用户:
再用userdel 删除用户:
可以发现userdel 删除用户之后,它的家目录并没有被删掉,因此删除时要加 -r 参数,才能把用户的所有都删除掉:
下面使用不同的参数新建用户:
指定用户说明时,如果说明中包含空格,则一定要加双引号,如下:
新建组的操作:
加了 -g 参数之后,就可以指定组的id了,如下:
用户信息修改操作:
冻结用户,可以在/etc/shadow 查看用户密码状态:
当冻结用户之后,密码前加了感叹号表示用户为冻结状态:
解锁用户:
用户的切换操作
使用以下命令可以进行用户注销,从而可以登录其它的用户:gnome-session-quit --force
还有命令 su 功能是切换账户的
格式: su - 用户名称
su - 中的" - "表示在用户身份切换时,同时切换当前用户的环境
在 su - 切换用户时,高级用户切换到低级用户时不需要密码,低级用户切换到高级用户时需要,平级用户切换时也同样需要。
注意:因为每次 su 切换用户时都会占用系统内存,所以每次 su 切换到其它用户操作之后必须退出,然后再次切换到其它用户。
修改密码操作
命令: passwd命令: chage
当后面不加用户名称时,表示修改当前用户的密码;当后面加用户名称时,表示修改指定用户密码(只有root用户可以操作)。
passwd可加参数:
- passwd -l Lock, 会将 /etc/shadow 第二栏最前面加上 ! 使密码失效
- passwd -u Unlock 的意思
- passwd -S 列出密码相关参数 ,亦即 shadow 文件内的大部分信息。
- passwd -n 后面接天数,多久不可修改密码天数
- passwd -x 后面接天数 ,多久内必须要更动密码
- passwd -w 后面接天数 ,密码过期前的警告天数
- passwd -i 后面接“日期”,密码失效日期
- passwd -e 会改变用户最后一次更改密码时间为0(用户在登录时会被强制修改密码)
- passwd -d 清空密码
chage可加参数:
- chage -l 列出该帐号的详细密码参数
- chage -d 后面接日期, 修改 shadow 第三字段,格式 YYYY-MM-DD
- chage -E 后面接日期 ,修改 shadow 第八字段,格式 YYYY-MM-DD
- chage -I 后面接天数, 修改 shadow 第七字段 ( 密码非活跃期 )
- chage -m 后面接天数 , 修改 shadow 第四字段 ( 密码最短有效期 )
- chage -M 后面接天数 , 修改 shadow 第五字段 ( 密码最长有效期 )
- chage -W 后面接天数, 修改 shadow 第六字段 ( 密码警告期 )
示例操作:
可以使用下面命令实时监控密码状态,密码状态在/etc/shadow 文件中:
watch -n 1 tail -n 3 /etc/shadow
相关参数的操作:
chage相关参数操作:
用下面命令监控密码信息状态:
watch -n 1 "passwd -S westos;tail -n 3 /etc/shadow"
参数操作示例:
注意:普通用户修改密码时
1.必须知道当前用户的初始密码
2.密码不能和名称相似
3.密码不可以是有序的数字或有序的纯字母
4.密码如果是纯数字或字母时应大于8位
用户权限下放操作
命令: sudosudo 能把某些超级权限针对性的下放,并且不需要普通用户知道 root 密码 ,所以 sudo 相对于权限无限制性的 su 来说 ,还是比较安全的。
权限下放流程:
sudo 执行命令的流程是当前用户切换到 root, 然后以 root 身份执行命令,执行完成后, 直接退回到当前用户;而这些的前提是要通过 sudo 的配置文件 /etc/sudoers 来进行授权。
权限下放动作的配置文件: /etc/sudoers
可以通过vim /etc/sudoers 进行编辑 (但无语法检测)
这个文件也可以用命令 visudo 编辑 (但有语法检测)
授权的文件内容写法格式:
授权目标用户 主机名称 =(授权用户得到的新用户身份) 授权用户执行命令
查看某些信息的命令:
(1). 怎么去查看主机名 ?
(2). 怎么查看命令所在的文件 ?
操作示例:
需要用 visudo 命令在100行左右增加内容
(1). westos用户能在localhost主机执行useradd(但要westos密码)
执行 visudo ,增加下面的内容:
测试:
通过输入普通用户密码,成功下放权限。
(2). westos用户能在localhost主机执行useradd(但不需要westos密码)
执行 visudo ,增加下面的内容:
测试:
不需要输入普通用户密码,就可以成功下放权限。
sudo文件中的别名设定方式
假如我们要给多个用户下放权限,并且需要下放多个命令的时候,一条一条的添加可能有点麻烦,这时需要用的别名设置,把多个用户放到一个集合里面,并且把多个命令放到集合里面,这样就不用多次繁琐的添加了。
操作示例:
用 visudo 命令打开sudo文件,在里面添加内容:
Cmnd_Alias 代表定义了一个下放权限的命令的集合, CTRLUSER是给这个集合起了一个别名;
同理User_Alias 代表定义了一个用户的集合, ADMIN 则是给这个集合起的别名。
下面是测试示例:
通过切换两个用户进行测试,这两个用户都可以执行被下放权限的命令。