1.suid
进程能够以何种身份去查看一个文件,取决于运行这个进程的用户有没有对这个文件有没有权限
列:
用户在改密码是使用passwd改密码,指向/etc/shadow来修改密码,而shadow是一个没有权限的文件,为什么所有用户都能修改修改shadow里的密码?
*切换普通用户修改密码时,passwd
[oldboy@localhost ~]$ passwd
Changing password for user oldboy.
Changing password for oldboy.
(current) UNIX password:
*新建一个终端查看进程中passwd是什么在运行
[root@localhost ~]# ps aux | grep "passwd"
root 7502 0.0 0.4 170712 1992 pts/0 S+ 10:30 0:00 passwd
root 7556 0.0 0.2 112708 960 pts/1 S+ 10:31 0:00 grep --color passwd
为什么是root用户在运行passwd,而不是oldboy?因为passwd有特殊权限
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
*-rwsr-xr-x ----> rwx变成了rws,s就是赋予了特殊权限
PS:set uid简称suid,当我们赋予suid特殊权限,能让所有用户在运行赋予特殊权限后以属主的权限去运行。
suid == 4000
命令表达式:
chmod u+s /usr/bin/passwd
chmod 4755 /uer/bin/passwd
chmod u-s #去掉权限
suid优点:可以让普通用户执行无法执行的命令----方便
suid缺点:如果rm为suid无论谁执行该命令,都能删除系统的任何资源
2.sgid(set gid)特殊权限(RHCE考试)
将目录设置为sgid后,如果在往该目录下创建文件,都将与该目录的所属组保持一致
[root@oldboyedu ~]# groupadd devops
[root@oldboyedu ~]# useradd zhangsan -G devops
[root@oldboyedu ~]# useradd lisi -G devops
[root@oldboyedu ~]# mkdir /opt/share
[root@oldboyedu ~]# chmod 2777 share/
[root@oldboyedu ~]# chown .devops share/
使用sgid可以使得多个用户之间共享一个目录的所有文件变得简单。
*测试不同的用户在该目录下创建文件,检查属主和属组
[root@localhost /opt/share]# ll
total 0
-rw-r--r--. 1 root devops 0 Aug 8 11:27 t1
-rw-r--r--. 1 oldboy devops 0 Aug 8 11:28 t2
-rw-rw-r--. 1 zhangsan devops 0 Aug 8 11:30 t3
3.sbit
如果一个目录设定了粘滞位,那么谁都可以在该目录下创建文件
删除文件只能是谁创建的谁删除,除此以外 root 和/tmp/的所属主都能删除该目录下的额内容.
#设定粘滞位 1000
chmod o+t /tmp
chmod 1777 /tmp
5.特殊属性 chattr lsattr
- -a 只能追加,无其他操作
- -i 锁定文件,不能删除,不能追加,不能移动
1.希望任何人都不能创建用户,应该给/etc/passwd添加什么特殊属性?
[root@localhost /opt/share]# chattr +i /etc/passwd #使文件不得变动文件或目录
[root@localhost /opt/share]# lsattr /etc/passwd #检查文件属性
----i----------- /etc/passwd
[root@localhost ~]# useradd zj
useradd: cannot open /etc/passwd
2.日志文件,希望能往里面追加内容,但不允许删除,应该添加什么特殊属性?
[root@localhost ~]# chattr +a /var/log/secure
[root@localhost ~]# lsattr /var/log/secure
-----a---------- /var/log/secure
6.umask 默认权限
- umask是用来控制默认创建文件或目录的权限
- umask设定为022,表示要减去的权限
目录: 777 -022 =755
文件: 666 -022 =644 - umask 设定为奇数 偶数 对文件和目录有什么影响?
文件: 如果umask出现了奇数, 要在奇数位+1
目录: 对目录毫无影响 - 设定umask
umask number 临时 (当前bash窗口有效,会随着bash的关闭一
起结束)
vim /etc/profile /etc/login.defs # 如果修改则都为永久. - 一般情况下不对umask调整,默认就是安全的权限.默认为:
目录: 755
文件: 644
总结
特殊权限 suid sgid sbit
suid:让其他用使用程序时通过该文件属主来操作该文件的内容等
sgid:设置目录sgid特殊权限,让其目录下创建的文件都有相同组,方便文件共享
sbit:目录设定了粘滞位,那么谁都可以在该目录下创建文件特殊属性 chattr lsattr -a(/var/log/*.log) -i (/etc/passwd)
chattr:-a:追加文件 -i:锁定文件
lsattr:查看文件属性umask 默认权限( 表示要减去的权限 目录:777 -umask 文件:666 - umask)。
当我们想改变创建文件和目录时的默认访问权限,则可以通过umask命令来实现。