温故Linux 操作系统01:用户管理与权限设定
1.什么是用户?
1.用户是操作者在系统中的身份
2.用户是系统最底层的安全机制的一部分
3.用户在系统中以字符和稳健的形式存在
Linux中的用户类型分为三类:
第一类:root(超级管理员),UID(userID)为0,这个用户有极大的权限,可以直接无视很多的限制,包括读写执行的权限。(了解刷机的小伙伴应该都知道root代表什么意思)
第二类:系统用户,UID为1~499。一般是不会被登入的。
第三类就是普通用户,UID范围一般是500~65534。这类用户的权限会受到基本权限的限制,也会受到来自管理员的限制(在后面会讲到权限相关)。不过要注意nobody这个特殊的帐号,UID为65534,这个用户的权限会进一步的受到限制,一般用于实现来宾帐号。
1.1用户组
用户组(group)
就是具有相同特征的用户(user)的集合体(比如同一个Linux系统下的一个开发和一组开发的这种关系);我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现。
1.2用户储存文件
用户储存文件即代表用户的“信息”所存储在的文件。
下面为常见用户储存文件和其所存储的信息:
用户与组信息存放位置 | 说明 | 注释 |
---|---|---|
/etc/passwd | 存放用户基本信息 | 记录了每个用户的一些基本属性,并对所有用户可读,每一行记录对应一个用户,属性之间通过冒号分隔。 用户名称:密码:uid:gid:用户说明:用户家目录:用户默认开启的shell (默认shell的指定有哪些可以查看系统中/etc/shells文件) ------>可用man 5 passwd命令查看每个冒号前后代表什么 |
/etc/shadow | 存放用户安全信息(包含密码) | 因为/etc/passwd文件对所有用户是可读的,为了安全起见把密码从/etc/passwd中分离出来放入这个单独的文件,该文件只有root用户有权限,从而保证密码的安全性。 用户:密码:最后一次密码修改该时间:最短有效期:最长有效期:警告期:非活跃期:帐号到期日 |
/etc/group | 存放用户组基本信息 | 组名称:组密码:组id:附加组成员 |
/etc/skel/ .* | 存放用户默认骨架目录(创建新用户时,默认复制目录下所有文件) | |
/home/username | 用户家目录 |
2.用户管理
2.1用户建立
useradd 参数 用户名字
-u ##指定用户uid
(如:useradd -u xiaoming)
-g ##指定用户初始组信息,这个组必须已经存在
(如没有组需创建组,组的创建见2.3节)
-G ##指定附加组,这个组必须存在
-c ##用户说明
(亦指用户的别名,如: useradd -c “明总“ xiaoming)
-d ##指定用户家目录
(如:useradd -d /home/lee xiaoming)
-s ##指定用户所使用的shell,/etc/shells记录了用户能使用shell的名字
(如:useradd -s /bin/sh kaifa为指定用户的默认shell
注:cat /etc/shells为查看系统中有哪些shell)
2.2用户删除
userdel -r 用户名称
(-r必须要加,表示删除用户信息及用户的系统配置)
2.3组的建立与删除
groupadd ##建立新组,gid+1
如:groupadd group1
groupadd -g gid ##建立新组,并指定gid
groupdel 组名字 ##删除组
2.4查看用户
whoami ##查看当前用户
id 参数 用户
-u ##用户uid
-g ##用户初始组id
-G ##用户所在附加组id
-n ##显示名称而不是id数字
-a ##显示所有信息(id -a xiaoming 等同于 id xiaoming)
2.5用户信息更改
usermod 参数 用户
-l ##更改用户名称
(usermod -l ming xiaoming ##将xiaoming的用户名改为ming,l表示登录)
-u ##更改uid
(usermod -u 8888 xiaoming ## 将xiaoming的uid改为8888)
-g ##更改gid
-G ##更改附加组
(没有附加组则添加此附加组,usermod -G " " xiaoming 为删除所有附加组)
-aG ##(额外)添加附加组
-c ##更改说明
-d ##更改家目录指定
-md ##更改家目录指定及家目录名称,注意:新建dir
(如:usermod -md /home/lee xiaoming)
-s ##更改shell
-L ##冻结帐号
-U ##解锁
2.6用户的切换操作
gnome-session-quit --force ##注销当前用户再用其他用户登录
su - 用户名称 ##“-”表示用户身份切换时同时切换当前用户环境;
执行时高级用户切换到低级用户不需要密码,低级
用户切换到高级需要密码,评级用户切花也需要密码
2.7用户密码信息的修改
先用vim /etc/passwd
命令查看密码信息得到
以xiaoming用户为例,xiaoming为用户名,x为密码,第一个1001为uid,第二个1001为gid,明总为别名即说明,/home/xiaoming为家目录,/bin/bash为默认shell
passwd ##修改当前用户的密码
passwd xiaoming ##更改xiaoming用户的密码
(如果是普通用户,只能修改自己的密码,且需要知道原始密码)
echo qwerdf|passwd --stdin xiaoming ##将密码修改为qwerdf一步完成(非交互式改密码)
passwd -e xiaoming ##密码最后一次被修改的时间
passwd -l xiaoming ##密码被锁,会在密码前加!!
passwd -u xiaoming ##解除密码
passwd -n 0 xiaoming ##修改最短有限期为0,用户xiaoming在登录时强制要求改密码
passwd -n 1 xiaoming ##修改最短有限期为1,用户在1天之内不能修改密码
passwd -x 7 xiaoming ##修改最长有效期为7,用户在7天内必须改密码
passwd -w 2 xiaoming ##修改警告期为2(密码过期前2天警告)
passwd -i 1 xiaoming ##修改非活跃为1(密码过期1天仍可登录)
passwd -d xiaoming ##删除xiaoming用户密码
passwd -S xiaoming ##查看xiaoming用户状态
passwd无法修改用户到期日
chage:只能修改密码的相关日期,但是不能修改密码
chage -d 0 xiaoming ##修改用户xiaoming密码的最后一次修改时间为0
chage -m 10 xiaoming ##修改用户xiaoming密码的最短有效期为10
chage -M 20 xiaoming ##修改用户xiaoming密码的最长有效期为20
chage -W 1 xiaoming ##修改用户xiaoming密码的警告期为1
chage -I 2 xiaoming ##修改用户xiaoming密码的非活跃天数为2
chage -E “2019-12-12” xiaoming ##修改用户xiaoming密码的到期日为2019-12-12
注:查看密码状态命令行
watch -n 1 passwd -S xiaoming ##查看密码状态
watch -n 1 “passwd -S xiaoming;tail -n 1 /etc/shadow" ##动态监控密码状态
注:passwd(普通用户修改密码的时候)
①必须知道当前用户的原始密码;
②密码不能和账号类似;
③密码不能是有序的数字或者纯字母
④密码如果是纯数字或 字母要>8;
root用户密码忘记怎么办?
1.重新启动系统
2.在系统启动阶段按上下健停止系统系统引导
3.选择启动引导标题,按“E”进行编辑
4.找到linux16引导条目这一行,从这行最后删除到ro选项,并把ro改为rw,然后添加rd.break选项
5.ctrl+x启动设定过后的系统引导条目
6.进入系统后执行chroot /sysroot切换到真实的系统环境
7.passwd root修改超级用户密码
8.建立文件/.autorelabel让系统从新扫描所有文件
9.exit两次使系统自动重新启动
3.用户权限的下放
3.1权限下放的配置文件
在系统中超级用户下可以下放给普通用户不能执行的操作下放权限的配置文件为:/etc/sudoers
3.2下放权限的方法
超级用户(root)执行visudo进入编辑/etc/sudoers模式
vim /etc/sudoers
在vim里第100行会有授权命令(标红)模块,各部分解释为:
被授权的用户名 主机名称=(用户身份) 授权命令名即权限(绝对路径which命令名)
例如给用户xiaoming 下放创建和删除用户权限
xiaoming ALL=(root) /usr/sbin/useradd
xiaoming ALL=(root) /usr/sbin/userdel
3.3执行下放权限的命令
su -l xiaoming ##切换为xiaoming用户
sudo useradd xiaohong ##添加xiaohong用户
sudo userdel -r xiaohong l ##删除xiaohong用户
##如果第一次执行sudo需要输入当前用户密码,在/etc/sudoers中如果设置如下:
test desktop0.example.com=(root) NOPASSWD: /usr/sbin/useradd
表示用户调用sudo命令的时候不需要自己密码
下放多个命令(命令集合)与多个用户集合
下放多个命令(命令集合)
visudo ##vim编辑/etc/sudoers文件
Cmnd_Alias CTRL_USER = /usr/sbin/useradd,/usr/sbin/userdel,/usr/sbin/usermod ##集合的名字Ctrl_user
用户集合
visudo ##vim编辑/etc/sudoers文件
User_Alias ADMIN = xiaoming,xiaohong