1.用户存在和组存在的意义
-(1)用户存在的意义:用户概念在系统中是系统安全机制的一部分,用于控制权力(没有它之后这个安全机制就消失了)
(2)组存在的意义:共享资源(开放权力)
组:初始组和附加组
2.用户的查看
(1)查看当前用户
whoami
(2)系统中用户的查看
id ##查看指定用户id信息
id -u ##查看用户的uid
id -g ##查看用户的gid(effective)
id -G ##查看用户所在的所有组的id(即这个用户都属于哪些个组)
id -n ##显示名字而不显示id数字
注意:-n和-u,-g,-G配合使用,用来显示用户id,组id,所有组id的名字,而不是id号
3.用户切换
(1)su - 用户名称
注意: a:此时切换到student用户身份的环境下,不再是root的环境,不能再去访问root的桌面,此时pwd是/home/student
b :su - 中 “-” 标示在用户身份切换时同时切换当前用户的环境
c:su - 执行时高级用户切换到低级用户不需要密码,低级用户切换到高级需要,平级用户切换切换也需要
"注意:每次su切换到其他用户操作之后必须退出,然后再次切换到其他用户
d:在root下,
su - student
su -root
此时不是回到了最初的root下,要exit退出(每su 一次,都会多一个进程)
例子:
[root@localhost Desktop] # su - student
结果演示:
(2)su 用户名称
注意:不加- ,则只切换用户身份,不切换用户环境;切换后,桌面还是属于原来的用户,只有打开的shell框改变了用户
例子:
[root@localhost Desktop] # su student
结果演示:
此时可以student的用户身份下访问root权限下桌面上的文件,pwd 依旧是/root/Desktop
4.用户在系统中的存储方式
(1) /etc/passwd ---------- 用户信息文件
文件内容的格式:
用户名称:密码:uid:gid:说明:家目录:默认shell
(2)/etc/group ------------- 用户组信息文件
文件内容的格式:
组的名字:组密码:组id:组成员
(3)/etc/shadow ------------- 认证信息文件
(4)/etc/skel/.* ----------- 默认开启shell的配置,用户的骨文件
创建用户后,要将这个文件中的内容复制到家目录中
(5)/home/username ---------- 用户的家目录
5.用户管理命令
(1)用户的删除 --------- userdel命令
<1> userdel ##可以用于删除用户帐号及相关档案
userdel student ##删除用户但不删除用户的配置文件
此时若想彻底删除用户,则要删除 /var/spool/mail/用户名 /home/用户名 两个文件
[root@localhost Desktop]# rm -fr /var/spool/mail/jone /home/jone
<2> userdel -r student ##删除用户并删除用户的配置文件,HOME目录下的档案也会被移除
注意:userdel不允许移除正在线上使用着的帐号,必须kill此帐号现在在系统上执行的程序才能进行帐号删除
(2)用户建立 --------- useradd命令
以下命令的演示均是在用户信息监控命令 watch -n 1 'tail -n 3 /etc/passwd /etc/group; ls -l /home' 下操作的:
<1>useradd ##建立用户
"注意":建立用户时,读取/etc/login.defs 文件内容确定规则(默认id范围 1000-60000)
<2>useradd -u 8888 westos ##指定用户uid
<3>useradd -g 6666 westos ##指定用户初始组id,6666用户组必须是存在的"
注意:要先建立组,组名可以和用户名相同,也可以和用户名不同
<4>useradd -G 72 westos ##指定用户的附加组id
注意:72用户组必须存,此时的组名不能和初始用户组组名相同(附加组名不能和用户名重名)
<5>useradd -c "hello" westos ##指定用户的说明
<6>useradd - d /home/lee westos ##指定用户的家目录
<7>useradd -s /bin/sh westos ##指定用户的默认shell
<8>groupadd 组名 ##建立用户组
<9>groupadd -g 888 组名 ##建立用户组并指定用户组的id
<10>groupdel 组名 ##删除用户组(组没有配置文件)
(3)更改用户信息 ------- usermod命令
<1> usermod -l 新名称 westos ##更改用户的名称
<2>usermod -u 8888 linux ##更改用户uid
<3>usermod -g 21 linux ##更改用户的初始组
<4>usermod -G 72 linux ##更改用户的附加组
<5>usermod -aG 21 linux ##添加用户的附加组
<6>usermod -G "" linux ##删除用户所有附加组的身份
<7>usermod -c "hahahah" linux ##指定用户说明文字
<8>usermod -d /home/lee linux ##更改用户家目录的指向(使家目录指向另外一个)
<9>usermod -md /home/lee westos ##更改用户家目录(将家目录更改)
<10>usermod -s /bin/sh linux ##更改用户的shell
注意: /etc/shells 包含了所有shell文件
6.用户认证信息
在 /etc/shadow 中记录用户认证信息,此文件一共有九列:
用户名称:用户密码:用户密码最后一次被更改的时间("从1970,1,1日开始"的使用时间):用户密码最短有效期:用户密码最 长有效期:密码警告期限:用户非活跃天数:用户到期日:用户自定义列,目前没有启用
<1>passwd -S westos ##查看westos用户密码信息
<2>passwd westos ##更改westos密码
注意:
普通用户改密码时
1.必须知道当前原始密码
2.密码不能和帐号名称相似
3.密码不能是纯数字或纯字母
4.密码不能是有序的字母和数字的组合
注意: 以下命令演示都是在 watch -n 1 “tail -n 1 /etc/shadow” 监控下演示
<3>passwd -l westos ##在用户密码前加入“!!”,冻结
把密码锁定,锁定强度高于usermod -L
<4>passwd -u westos ##解冻
注意:密码为空时,!!不能用passwd -u 命令解开;可以又由 usermod -U 命令解开一层,不能完全解开。
<5>usermod -L westos ##在用户密码前加入“!”
usermod -U westos ##解锁用户
注意:在密码不为空时,可以通过使用两次解开passwd -l 锁;
<6>passwd -d westos ##清空westos密码
<7>passwd -e westos ##会改变用户最后一次更改密码时间为0,用户在登陆时会被强制更改密码
chage -d 0 westos ##用户密码最后一次被更改的时间#两个命令功能类似
<8>passwd -n 1 westos ##用户密码最短有效期
chage -m 1 westos
<9>passwd -x 30 westos ##设定用户密码最长有效期为30
chage -M 40 westos
<10>passwd -w 2 westos ## 密码警告期限
chage -W 2 westos
<11>passwd -i 1 westos ##用户非活跃天数
chage -I 1 westos
<12>chage -E 2018-11-11 westos ##用户到期日
#westos用户在2018-11-11日会被冻结(从当前日期到设定日期的天数加上当前天数)
7.用户授权
(1)权力下放文件/etc/sudoers
此文件可以用vim直接编辑,但是不提供语法检测
也可以使用visudo编辑此文件,visudo命令提供语法检测
(2)下方方式
在 *visudo文件中添加授权内容:
用户 主机名称=(得到的用户身份 ) 命令
例子:
westos localhost=(root) /usr/sbin/useradd ##westos用户可以在localhost主机以root用户身份执行useradd命令
westos localhost=(root) NOPASSWD: /usr/sbin/useradd
##twestos用户可以在localhost主机以root用户身份免密执行useradd命令
"注意:在文件中加入内容后,切换至用户权限,执行赋予的命令时,命令之前要有sudo"