特殊权限suid
Linux 系统文件除了9位基本权限,还有额外3位特殊权限,分别是
SUID(set uid), -rwsr-xr-x
SGID(set gid), -rw-r-sr-x
SBIT(sticky bit), -rw-r-xr-t
这3位特殊权限不建议使用(除系统默认的特殊权限可以使用以外),除非有特殊需求时使用。
suid 特殊权限包括(set、uid)
suid是 set、uid的简称
当我们为某个命令设定了suid,无论谁使用该命令都会使用该命令的"属主"运行该命令。
[root@zjh ~]# ll /etc/passwd
-rw-r--r-- 1 root root 6209 Apr 13 03:26 /etc/passwd
[root@zjh ~]# ll /etc/shadow
---------- 1 root root 11409 Apr 13 03:26 /etc/shadow
当普通用户使用 passwd 命令更改自己的密码时,实际上是在用 passwd 命令所有者 root 的身份在执行 passwd 命令,root 当然可以将密码写入 /etc/shadow 文件,所以普通用户也可以修改 /etc/shadow 文件,命令执行完成后,该身份也随之消失。
suid=4000
suid授权方法4000 权限字符s(S),用户位置上的x位上设置
chmod u+s /usr/bin/passwd
chmod 4755 /usr/bin/passwd
chmod u-s 去除权限
suid优点
1.让普通用户对可执行的二进制文件,临时拥有二进制文件的所属主权限。
2.如果设置的二进制文件没有执行权限,那么suid的权限显示就是大S。
3.特殊权限suid仅对二进制可执行程序有效,其他文件或目录则无效。
suid缺点: 如果rm 为suid, 无论谁执行该命令,都能删除系统的任何 资源
特殊权限SGID
sgid授权方法: 2000权限字符s(S),取决于属组位置上的x
chmod 2755 directory
chmod g+s directory
sgid作用
1.针对用户组权限位修改,用户创建的目录或文件所属组和该目录的所属组一致。
2.当某个目录设置了sgid后,在该目录中新建的文件不在是创建该文件的默认所属组
3.使用sgid可以使得多个用户之间共享一个目录的所有文件变得简单。
例题:
sgid (set gid) 特殊权限
将目录设置为sgid后,如果在往该目录下创建文件,都将与该目录的 所属组保持一致,演示如下
[root@zjh ~]# groupadd devops
[root@zjh~]# useradd zhangsan -G devops
[root@zjh ~]# useradd lisi -G devops
[root@zjh ~]# mkdir /opt/share
[root@zjh ~]# chmod 2777 share/
[root@zjh ~]# chown .devops share/
测试不同的用户在该目录下创建文件,检查属主和属组 #使用sgid可以使得多个用户之间共享一个目录的所有文件变得简单
特殊权限SBIT
ticky(SI TI KI)粘滞位目前只对目录有效。
如果一个目录设定了粘滞位, 那么谁都可以在该目录下创建文件,.
删除文件只能是 谁创建的谁删除. 除此以外 root 和/tmp/的所属主都能 删除该目录下的额内容
作用:
普通用户对该目录拥有 w 和 x 权限,即普通用户可以在此目录中拥有写入权限。如果没有粘滞位,那么普通用户拥有 w 权限,就可以删除此目录下的所有文件,包括其他用户建立的文件。但是一旦被赋予了粘滞位,除了 root 可以删除所有文件,普通用户就算拥有 w 权限,也只能删除自己建立的文件,而不能删除其他用户建立的文件。
[root@zjh tmp]# ll -d /tmp/
drwxrwxrwt. 12 root root 4096 Apr 13 05:32 /tmp/
2. sticky授权方法,1000 权限字符t(T),其他用户位的x位上设置。
chmod o+t /tmp
chmod 1755 /tmp
3.sticky的作用
1.让多个用户都具有写权限的目录,并让每个用户只能删自己的文件。
2.特殊sticky目录表现在others的x位,用小t表示,如果没有执行权限是T
3.一个目录即使它的权限为"777"如果是设置了粘滞位,除了目录的属主和"root"用户有权限删除,除此之外其他用户都不允许删除该目录。
特殊属性 chattr lsattr
chatrr 只有 root 用户可以使用,用来修改文件系统的权限属性,建立于rwx 基础权限之上的授权。
chatrr 命令格式:chattr [+-=] [选项] 文件或目录名
-a 只能追加,无其他操作
-i 锁定文件,不能删除,不能追加,不能移动
例题:
1.任何人都不能创建用户,应该给/etc/passwd添加什么特殊属性?
[root@zjh ~]# chattr +i /etc/passwd
[root@zjh ~]# lsattr /etc/passwd
----i----------- /etc/passwd # 不得任意更动文件或目录
[root@zjh ~]# chattr -i /etc/passwd
[root@zjh ~]# lsattr /etc/passwd
---------------- /etc/passwd
[root@zjh ~]# useradd test12
2.日志文件,希望能往里面追加内容,但不允许删除,应该添加什么特殊属性
[root@zjh ~]# chattr +a /var/log/secure
[root@zjh ~]# lsattr /var/log/secure
-----a---------- /var/log/secure
umask 默认权限
1.umask是什么?
当我们登录系统之后创建一个文件总是有一个默认权限的,比如: 目录755、文件644、那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认权限。
2.umask是如何改变创建新文件的权限
系统默认umask为022,那么当我们创建一个目录时,正常情况下目录的权限应该是777,但umask表示要减去的值,所以新目录文件的权限应该是
777 - 022 =755。
文件的权限也依次类推666 - 022 =644。
umask 设定为奇数 偶数 对文件和目录有什么影响?
文件: 如果umask出现了奇数, 要在奇数位+1
目录: 对目录毫无影响
设定umask
umask number 临时 (当前bash窗口有效,会随着bash的关闭一 起结束) vim /etc/profile /etc/login.defs # 如果修改则都为永久.