文章目录
1.用户及用户组存在的意义
1.用户是操作者在系统中的身份标识
2.组是逻辑概念,是用户的集合
3.用户的存在为了限制权限
4.组的存在为了归类用户便于管理权限
2.用户在系统中的存储方式
1.用户在系统中就是文件中的字符串
2.每个字符串映射了该用户所用到的系统资源
vim /etc/ passwd
可见用户都是以字符串的方式存在与系统当中。
3.深入分析用户涉及到的配置文件及内容
路径 | 信息 |
---|---|
/etc/passwd | 用户信息库 |
/etc/group | 组信息库 |
/home/用户同名目录 | 默认用户家目录 |
/etc/skel/所有文件 | 用户环境配置文件模板 |
/etc/shadow | 用户认证信息 |
/etc/gshadow | 组认证信息 |
用户信息库:/etc/passwd
用户的信息包括:用户的名字,用户的密码(x为密码,安全起见已转移到其他文文件。密码在/etc/shadow),用户的id(二进制的十六为来表示用户id 0~65534,超级用户id为0,rhel7中系统id为1~99,登陆用户为1000~65534),用户的初始族id(主组),用户的说明,用户的家目录,用户所使用的shall。
用户组信息库: /etc/group
用户组信息库包括:组名称,组的密码(被移植到/etc/gshadow),组的id,组的附加成员。
home/用户同名目录
/etc/skel/所有文件
新用户建立时,系统会把/etc/skel/所有文件全部复制到家目录里。
/etc/shadow 用户认证信息
用户认证信息包括:用户的名称,用户的密码,用户密码最后一次被修改时间(是从1970年1月1日开始算起),用户密码最短有效期(这个期间改不了密码),最长有效期(这段时间里必须要修改密码,否则密码会过期),警告期(还有几天密码过期的提示警告),密码的非活跃天数(最后冻结时间过后的缓冲时间),账号的到期日。
/etc/gshadow组认证信息
组认证信息包括:组的名称,组的密码,组的管理员,组成员。
当我们记不住这么多路信息时,可以使用man 5+(相对路径)名称 来查询:
4.用户信息的查看
先建立一个新用户,再用cat /etc/ passwd
命令查看。
可以看到我们新建的xng用户信息
或者用getett查看用户信息。
或者用 whoimi查看当前用户
还有一个查看用户信息的命令: id
命令 | 功能 |
---|---|
id -u | 查看用户的uid |
id -g | 查看用户的gid |
id -G | 查看用户所在的所有组的id |
id -n | 显示名字而不显示id |
5.用户身份的切换方式及环境
图形中的注销命令:点击右上角,选择用户,选择log out。
选择log out,然后登陆其他用户。但这种当法效率比较低。
我们可以使用在shall中以命令的方式切换用户。
[root@workstation Desktop]# gnome-session-quit --force
在shall中也可以用su对用户进行切换。
su 和 su-
su | 只切换用户身份,不切换用户环境 |
su - | 切换用户身份及用户 |
注意:
1.切换的用户必须为已经存在的用户。
2.不要在shall中频繁使用su -(每切换一次会产生一个bash,托慢系统运行速度,占用系统资源。用完及时退出exit)
3.超级用户切换到普通命令不需要密码,普通用户切换到别的用户需要输入密码。
6.用户及用户组的建立及删除
为了使实验现象明显,我们可以建立一个监控,来监控/etc/passwd 和 /etc/group的后5行。
watch -n 1 'tail -n 5 /etc/passwd /etc/group ; ls -l /group'
groupadd 和 groupdel
userdel和 useradd
在使用userdel删除用户信息时,我们看到:用户信息被删除,但是用户的配置文件没有被删除。于是当我们删除用户时要用 usedel -r 来删除。
useradd的常用参数
useradd | 功能 |
---|---|
-u | 指定用户的 uid |
-g | 指定用户的 gid |
-G | 指定用户的附加组 |
-c | 指定用户的说明 |
-d | 指定用户的家目录 , 默认为 /home/username |
-s | 指定用户的默认shell |
7.用户及用户组的信息管理
在不删除用户的前提下修改用户及组的信息
groupmod -g 修改主组信息
usermod -l 修改用户名称
usermod -u 用户id的修改…usermod相关的命令还有很多:
usermod | 功能 |
---|---|
-l | 修改用户名称 |
-u | 修改用户的 uid |
-g | 修改用户的 gid |
-aG | 指定用户的附加组 |
-c | 修改用户的说明 |
-md | 修改用户的家目录 , 默认为 /home/username |
-s | 修改用户的 shell 类型 |
注意:usermod -G修改附加组信息时,会将原来组信息删掉。如果只是添加附加组信息而不更改原有组的信息就必须用 usermod -aG来添加。
8.用户认证文件的内容分析
/etc/shadow 用户认证信息文件
每行被划分为9列,前边已经说过含义。建立一个监控来监控这些信息:
watch -n 1 tail -n 1 /etc/shadow
我们可以直接用超级用户passwd来修改密码
1.用户名称2.用户密码3.密码已经使用时间4.密码最短有效期5.密码最长有效期6.密码到期前警告7.密码非活跃天数8.密码到期日。前文已经说过了。
注意:将最后一次密码被更改的天数改为0时,登陆时强制修改密码。
9.用户认证管理
passwd:可以管理用户的密码属性,但不是所有属性都能修改i。
chage:可以修改密码的所有属性,但是不能该密码。
passwd | 功能 |
---|---|
-e | 最后一次被更改的时间 |
-n | 最短有效期 |
-x | 最长有效期 |
-w | 警告期 |
-i | 非活跃天数 |
-d | 删除密码 |
-l | 锁定账号 |
-u | 解锁账号 |
-S | 对密码进行查看 |
chage | 功能 |
---|---|
-l | 查看密码信息 |
-d | 修改密码最后一次更改时间 |
-m | 修改密码的最短有效期 |
-M | 修改密码的最长有效期 |
-W | 修改密码的警告期 |
-I | 设定账号非活跃天数 |
-E | 设定账号的最后到期日 |
10.用户权力的下放
我们知道,只有超级用户可以新建用户。当我们以普通用户身份建立新用户时会出现什么情况呢?
我们可以看到是不行的,要想student用户也可以新建用户,可以将超级用户的权力下放给stutent用户。
sudo 能把某些超级权限针对性的下放 , 并且不需要普通用户知道 root 密码 , 所以 sudo 相
对于权限无限制性的 su 来说 , 还是比较安全的
sudo 能把某些超级权限针对性的下放 , 并且不需要普通用户知道 root 密码 , 所以 sudo 相
对于权限无限制性的 su 来说 , 还是比较安全的sudo 执行命令的流程是当前用户切换到 root,
然后以 root 身份执行命令 , 执行完成后 , 直接退回到当前用户 ; 而这些的前提是要通过
sudo 的配置文件 /etc/sudoers 来进行授权。
查看主机名和useradd的相对路径。
在shall注解输入visudo进入配置文件
在visudo配置文件101行处添加student用户的root权限的useradd权限的下放,保存退出。visudo会自动检测语法错误,若有语法错误,则会出现警告。
无报错后切换到student普通用户进行用户新建
依然不行。所以我们必须要用sudo去调用执行的命令才能读取到我们编写过的visudo文件,直接执行命令是不读取文件的。
下放成功!但是需要输入student密码,我们可以添加NOPASSWD来实现免密操作:
student workstation.lab.example.com=(root) NOPASSWD: /usr/sbin/useradd。