系统用户和用户组说明
系统用户配置文件(/etc/passwd)
vim /etc/passwd
初始组:是指创建用户之后自动生成的组,只能有一个组,并且可以更改;
附属组:指用户可以加入多个组,并拥有多个权限, 附加组可以有多个。
用户和用户组的关系:
一个用户---------->一个组 1vs1
一个用户---------->多个组 1vsn
多个用户---------->一个组 nvs1
多个用户---------->多个组 nvsn
系统用户密码配置文件(/etc/shadow)
1.vim /etc/shadow
第一字段 Root: 用户
第二字段 密码 加密密码[加密算法升级为SHA512散列加密算法,比MD5更高],如果密码位为”!!“或”**“则代表密码失效,不能登录.
2. 强行修改密码的方法
第一步:安装python模块
Yum install python-pip
第二步:优化pip源
在~/.pip/pip.conf文件中编辑
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
第三步:执行命令
python -c "from passlib.hash import sha512_crypt; import getpass; print(sha512_crypt.using(rounds=5000).hash(getpass.getpass()))"
系统用户组文件
cat /etc/group
cat /etc/gshadow
注:普通用户变成超级用户只需要把普通用户的UID变成0即可,但是用户所在的目录还是家目录。
用户管理命令
- useradd 用户创建
格式:useradd [选项] 用户名
-u:指定用户的UID
-g:指定用户的初始组
-G:指定用户的附属组
-M:不让用户有家目录
-s:指定用户的shell
-c:用户解释说明 - usermod 修改用户
-u:指定用户的UID
-g:指定用户的初始组
-G:指定用户的附属组
-s:指定用户的shell
-c:用户解释说明
-L :锁定账户
-U: 解锁账户 - passwd 修改密码
-S 查看密码状态
-l 锁定密码
-u 解锁密码 - userdel 删除用户
-r: 彻底删除用户 - groupadd 添加用户组
格式:groupadd oldboy - groupmod 修改用户组
-g:修改组id
-n :修改组名
例如:groupmod -g 1100 oldboy - gpasswd
-a 用户名 把用户加入组
-d 用户名 把用户从组中删除 - 查看系统用户的其它命令
(1)w命令
W: 查看系统当前登录用户,查看负载情况。
[root@oldboy ~]# w
22:57:40 up 2 min, 1 user, load average: 0.38, 0.44, 0.19
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 22:56 4.00s 0.02s 0.00s w
登录拥护 本地/远程 IP 登录时间 登录了多长时间 CPU运行情况 干了什么事
Tty:本地登录
Pts:远程登录
当root用户和其他普通用户同时编辑一个文件时,如果root用户不想让其他普通用户编写,可以写一条语句,告诉其他用户:
echo "you are very good " >>/dev/pts/0
(2)last命令:查看用户历史登录信息
[root@oldboy ~]# last | head -3
root pts/1 10.0.0.1 Mon Jul 29 23:01 still logged in
root pts/0 10.0.0.1 Mon Jul 29 22:56 still logged in
reboot system boot 3.10.0-957.el7.x Mon Jul 29 22:55 - 23:03 (00:08)
01 02 03 04 05
01:系统登录用户;
02:系统用户登录方式;
03:系统用户登录IP地址;
04:系统用户登录时间;
05:系统用户登录状态;
(3)Lastlog:查看系统所有的用户登录信息
[root@oldboy ~]# lastlog | head -3
Username Port From Latest
root pts/1 10.0.0.1 Mon Jul 29 23:01:36 +0800 2019
bin **Never logged in**
注:lastlog这里记录的是系统中所有用户登录的状态,虚拟用户从没登录过,所以它的登录状态就是never logged in
系统特殊权限说明
setuid
setuid权限
当s出现在拥有者的x权限位置的时候,则表示拥有SUID权限;临时获取文件拥有者的权限,只针对文件;s权限位会覆盖执行权限位,执行权限位有x,setuid会是小写s,如果没有权限位,会是大写S.
SUID=4 SGID=2 SBIT=1
setUID的功能:
(1)只有可以执行的二进制程序才能设定SUID权限---普通用户执行命令的之后会拥有所有者root的权限
(2)用户要对程序拥有执行权限;
(3)setuid权 限只在程序执行过程中有效。
设定setuid方法:
(1)chmod 4755 文件名
(2)chmod u+s 文件名---如果某个文件或目录没有执行权限用这条命令的话,所有者会显示S(S是报错信息 文件名也会报错)
Setgid说明
当s出现在所属组的x权限位置的时候,则表示拥有SGID权限;临时获取文件拥有属组的权限。
Setgid对文件的作用:
(1)只有可执行的二进制程序才能设置SGID权限
(2)命令的执行行者要对该程序拥有执行权限
(3)命令执行程序的时候,组身份升级为该程序文件的属组
(4)setGID权限同样只在该程序执行过程中有效,也就是属组身份改变只在程序执行过程中有效。
[root@oldboy ~]# ll /usr/bin/locate
-rwx--s--x 1 root slocate 40520 Apr 11 2018 /usr/bin/locate
locate默认有setgid权限
locate命令搜索数据库mlocate.db里的文件
(1)/usr/bin/locate 是可执行二进制程序,可以赋予SGID
(2)普通用户执行/usr/bin/locate命令时,组身份会升级slocate组,而slocate组对/var/llib/mlocate/mlocate.db数据库拥有r权限,--640,所以普通用户可以使用locate命令查询mlocate.db数据库,命令结束后,普通用户的组身份返回原来的组。
setgid对目录的作用:
(1)普通用户必须对此目录拥有r和x权限,才能进入此目录
(2)普通用户在此目录找那个的有效组会变成此目录的属组
(3)若普通用户对此目录拥有w权限时,新建的文件的默认数组是这个目录的属组
Sticky bit粘滞位
当s出现在其他人的x权限位置的时候,则表示拥有SBIT权限;
具体概念:创建一个共享目录,目录中文件数据只能属主操作,其他用户只能有看不能改,也不能删除。
SBIT:只有文件的拥有者才能删除,修改该目录下的文件--只能针对目录,只能在其他人的位置上修改
S和T有大小之分
设定方法:chmod o+t /share