前言
回顾前面:
没想到上一篇能在知乎获得千赞呀,Linux也快期末考试了,也有半个月没有写文章了。这篇主要将Linux下的用户和权限知识点再整理一下。
那么接下来就开始吧,如果文章有错误的地方请大家多多包涵,不吝在评论区指正哦~
一、Linux下的用户
Linux是一个多用户的系统,我们可以多个用户同时登陆Linux~
- 账户实质上就是一个用户在系统上的标识。
Linux中的账户包括
- 用户账户
- 普通用户账户:在系统上的任务是进行普通工作
- 超级用户账户(或管理员账户):在系统上的任务是对普通用户和整个系统进行管理。
- 组账户(组是用户的集合)
- 标准组:标准组可以容纳多个用户
- 私有组:私有组中只有用户自己
当一个用户同属于多个组时,将这些组分为
- 主组(初始组):用户登录系统时的组。
- 附加组:登录后可切换的其他组
上面也说了,账户的实质上就是用户在系统上的标识,这些标识是用文件保存起来的:
- 用户名和 UID 被保存在
/etc/passwd
文件中,文件权限(-rw-r--r--)
- 组和GID 被保存在
/etc/group
文件中,文件权限(-r--------)
- 用户口令(密码)被保存在
/etc/shadow
文件中 ,文件权限(-rw-r--r-- )
- 组口令被保存在
/etc/gshadow
文件中 ,文件权限(-r--------)
也就是说:我们创建的用户,这个用户的信息由不同的文件来保存着。
有了上面的知识点,下面我来简述一下创建用户的时候会发生什么:
- 用户名和 UID 被保存在
/etc/passwd
这个文件中,用户的口令通常用shadow passwords
保护 - 当用户登录时,他们被分配了一个主目录和一个运行的程序(通常是 shell)
- 若没有指定他所属于的组,RHEL/CentOS就建立一个和该用户同名的私有组,且用户被分配到这个私有组中
再来回顾一下:账户的实质上就是用户在系统上的标识,这些标识是用文件保存起来的。也就是说:我们是可以直接编辑修改系统账户文件来维护账户。
- 但是不建议这样做,如果明确要这样做的话,最好使用命令检测一下你编辑的语法是否有问题:
pwck
:验证用户账号文件,认证信息的完整性。该命令检测文件“/etc/passwd”
和“/etc/shadow”
的每行中字段的格式和值是否正确grpck
:验证组账号文件,认证信息的完整性。该命令检测文件“/etc/group”
和“/etc/gshadow”
的每行中字段的格式和值是否正确。
既然不建议我们直接编辑文件的方式来管理用户,那么Linux是肯定有现成的命令给我们使用的:
1.1管理Linux用户的命令
用户管理:
useradd
usermod
userdel
组管理:
groupadd
groupmod
groupdel
批量管理用户:
- 成批添加/更新一组账户:
newusers
- 成批更新用户的口令:
chpasswd
组成员管理:
- 向标准组中添加用户
gpasswd -a <用户账号名> <组账号名>
usermod -G <组账号名> <用户账号名>
- 从标准组中删除用户
gpasswd -d <用户账号名> <组账号名>
口令维护(禁用、恢复和删除用户口令):
- 设置用户口令:
passwd [<用户账号名>]
- 禁用用户账户口令
passwd -l <用户账号名>
- 查看用户账户口令状态
passwd -S <用户账号名>
- 恢复用户账户口令
passwd -u <用户账号名>
- 清除用户账户口令
passwd -d <用户账号名>
口令时效设置:
- 修改
/etc/login.defs
的相关配置参数
设置已存在用户的口令时效:
chage
命令
用户切换命令:
su
- 直接切换为超级用户
sudo
- 直接使用 sudo 命令前缀执行系统管理命令。执行系统管理命令时无需知道超级用户的口令,使用普通用户自己的口令即可
更多资料查询:
用户相关的命令:
id
:显示用户当前的uid、gid和用户所属的组列表groups
:显示指定用户所属的组列表whoami
:显示当前用户的名称w/who
:显示登录用户及相关信息newgrp
:用于转换用户的当前组到指定的组账号,用户必须属于该组才可以正确执行该命令
1.2Linux用户的练习题
用cat命令,观察如下文件:/etc/passwd , /etc/shadow, /etc/group,/etc/gshadow;显示useradd命令添加用户参数的默认值
建立linux账户jkXX(XX为学生学号末两位),要求用户组为users,并设置密码;观察/etc/passwd和/etc/shadow文件的变化;退出root账户,用jkXX账户登录,在其主目录下建立一个myfirst文件,并用长格式列出myfirst文件
用root账户登录;添加组jsj;设置用户jkXX为jsj组用户,观察/etc/passwd、/etc/group和/etc/gshadow文件变化
添加一个新用户airXX(XX为学生学号末两位),观察新用户airXX的用户id和组id;然后删除该用户,注意不要在命令中加选项,观察用户文件和组文件的变化;观察airXX用户的目录是否存在;
shadow文件中密码为*号和!!代表什么?
答:*
代表账户禁用;!!
代表密码锁定。
airXX用户组id是多少?这个组是什么类型的组?这样做有什么好处?
答:air08用户组id是501,这个组属于私有组。每个未指定组的用户会建立一个同名的组,这样的组称为私有组,只有一个用户,既有利于防止信息泄露,也也有利于防止不合理的授权。总之,有利于安全管理。
默认情况下删除用户,但却保留了用户的主目录,这样做有什么好处?
答:保留用户目录,防止将用户目录下有价值的资料误删除。
用cat命令,观察文件/etc/passwd;仿照passwd文件的格式,用vi编辑一个新的文件,文件名为userXX(XX为学生学号末两位),文件包括3条记录,用户名分别为jkXX(XX为学生学号末两位),peter,jason,他们的用户id大于1000,组id大于1000,要求peter和jason同组;用命令newusers根据文件userXX的内容批量生成用户;观察/etc/passwd文件的变化。
用cat命令,观察文件/etc/shadow;用vi编辑一个新文件,文件名为mimaXX(XX为学生学号末两位),文件包括3条记录,每条记录用户名与上一步骤要求相同,密码自行设置,用户名和密码用冒号:隔开;用命令chpasswd根据文件mimaXX的内容批量生成密码;观察文件/etc/shadow变化;用命令chpasswd -m再次批量生成密码,观察文件/etc/shadow变化;