/etc/shadow详解
root:$6$CAEyJJ61po.ON9IZ$5ZGEu8MHPzdZAuiHl0kHLdyZr9BaLo6uClTqkMg/KAhYYdm.feklPyR5byJnh/FFhRmdM5MVQqcsyyKMZ PEZ01::0:99999:7::: bin:*:17988:0:99999:7::: tss:!!:18638::::::
-
第一列 用户名
-
第二列 加密密码 !!代表不可登录
-
第三列 从1970年1月1日到上一次修改密码经过的时间
-
第四列 密码最小存活期
-
第五列 密码最大存活期
-
第六列 密码的提醒天数
-
第七列 密码失效的天数
-
第八列 账号失效的时间 从1970年1月1日开始算起
加密算法:
hash算法:
将明文编为密文 (md5算法、sha1sum算法、sha512sum算法)
echo redhat |md5sum
bdb52aae3b5566607f3e6023ef2e74e5 - (把redhat用md5算法加密)
hash算法用途:
-
比对文件的完整性
-
百度网盘 秒传
常用命令
chage -l 列出当前用户的信息 chage 用户名 可以修改用户密码时间 w 查看谁在登录 last 重启和登录的记录 lastb 查看登录失败的记录 lastlog 查看用户登录日志
默认权限:
root
-
目录的是755
-
文件的是644
普通用户
-
目录的是775
-
文件的是664
umask值
umask值是遮掩值
即775的目录umask值为002
默认目录最大权限:777
默认文件最大权限:666
高级权限:
权限名 | 数字表示 | 字母表示 |
---|---|---|
suid | 4 | u+s |
sgid | 2 | g+s |
sticky(sbit) | 1 | o+t |
suid:
当一个文件有suid的权限时,那么其他用户来执行该文件时,临时获得文件拥有人的权限
一般值针对命令来使用,一般只使用在二进制文件中
chmod u+s file
sgid:
1.当文件上有sgid时那么其他用户来执行该文件时可以临时获得拥有组的权限
2.当一个目录有sgid的权限时,那么任何人在该目录下创建文件时,该文件的拥有组继承该目录的拥有组
chmod g+s file
sticky:(sbit)
用在目录上 当目录上有一个sticky的权限时 其他用户只能删除拥有人是自己的文件
chmod o+t /data 针对目录
acl权限:
访问控制列表,实现更细致的访问控制
精确到某个用户对某个权限的控制
setfacl -m u:user1:rwx /data getfacl 文件/目录 查看更详细的权限的信息 setfacl -m g:it:rwx /data 让it组对/data有rwx的权限 mask 限制最大权限 setfacl -x g:it /data 删除it组的acl权限 -b 清空acl权限 -R 递归修改 -n 不更新掩码
sudo提权
-
提权了之后普通用户可以使用一些root用户做的事情
-
/etc/sudoers 提权的文件
-
提权了之后需要在命令的前面加上sudo才可以执行成功
-
本质:赋予该用户以root的身份执行某个命令的权限
## Allow root to run any commands anywhere (在此处写提权) root ALL=(ALL) ALL 被赋权的用户名 在哪个机器上可以提权|以哪一个人的身份执行 命令的文件
-
注意:
-
ALL=(ALL)的时候可以-u 可以用别人的身份来执行命令
-
如果是ALL=(root)的话不能-u来使用别人的身份执行命令
-
-
sudo命令选项:
-
-V 显示版本编号
-
-l 显示出使 用sudo的人的权限
-
-k 将会强迫使用者在下一次执行sodo的时候问密码
-
-b将要执行的指令放在后台执行
-
-u 指定用户 例:
-
sudo -u user1 touch /tmp/file02.txt 以user1的身份来创建文件,文件的拥有人是user1
扩展:
• 定义用户别名: 如果用户太多的话可以定义一个别名 Host_Alias USER = user1,user2 在USER别名里写上user1和user2两个用户,对USER这个别名赋权也就可以对user1和user2两个用户赋权 • 定义命令别名: Cmnd_Alias ACCOUNT = /usr/sbin/useradd ,/usr/sbin/userdel 用法和定义用户别名的用法一样 定义一个ACCOUNT的命令别名 • sudo免密: admin ALL=(ALL) NOPASSWD: ACCOUNT 在提权的时候加上NOPASSWD: 可以在使用sudo的时候不用输入密码 • 扩展: ○ 在组名前面加上%可以直接给组赋权 例如: %group ALL=(ALL) ALL 在Linux中有一个group组,在group前面加上%就可以直接给组赋权 • 注意: ○ /etc/sudoers.d 目录 目的是用于管理权限 ○ 在/etc/sudoers.d 中重新创建文件来赋权的话比较方便管理 ○ 比较经常用于多台机器之间的提权和赋权