文件权限之特殊权限

文件权限之特殊权限

一、特殊权限

linux系统权限共12位权限,基本权限为rwx,rwx,rwx,特殊权限为suid(setuid)、sgid(setgid)、sbit(sticky)

  • 特殊权限比较

    类别 suid sgid sbit
    字符表示 S S T
    出现位置 u--x g--x o--x
    基本权限位有x s s t
    基本权限位无x S - -
    数字表示法 4 2 1
    八进制表示法 4000 2000 1000
    生效对象 属主 属组 其他用户
    作用文件 二进制可执行文件 二进制文件或目录文件 权限为777的目录文件

二、suid

  • suid原理

    • suid仅限于可执行文件,也就是 二进制文件,比如系统下的/usr/bin下提供的命令,/usr/bin/ls、/usr/bin/rm
    • suid特殊权限只要用户对设有suid的文件有执行权限,那么当用户执行此文件时,会以属主的身份去执行
    • 一旦文件执行结束,身份的企融合也会随之消失
  • 注意事项

    • suid功能是针对二进制命令设置的,不能用在shell脚本上

    • 用户权限位x位置处,如果有则为s,无则为S,表示该命令存在suid权限

    • suid的作用是让普通用户在执行设置了suid权限命令是,可以由于其属主的权限

    • 二进制命令,如系统提供的ls、mkdir等命令,都需要属主权限

    • suid是一个危险的命令,一般使用sudo命令代替suid

  • 示例

    #01:/etc/passwd的权限为0,为什么普通用户可以修改自己的密码
    [USER01@server ~]$ ls -l /etc/shadow
    ----------. 1 root root 1312 Jul  3 00:55 /etc/shadow
    #除了root,其他人对/etc/shadow的权限为0
    
    [USER01@server ~]$ ls -l /usr/bin/passwd
    -rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd   #passwd命令的属主和属组都是root,但是该二进制文件具有suid权限,也就是运行passwd时,普通用户会获得root权限,即可以修改/etc/shadow文件
    
    
    #02:find根据权限搜索
    [root@server ~]# find / -type f -perm  +4000 -ls
    
    #03:为/usr/bin/touch的属主加上suid属性
    [root@server ~]# ls -l /usr/bin/touch
    -rwxr-xr-x. 1 root root 62568 Oct 31  2018 /usr/bin/touch
    [root@server ~]# chmod u+s /usr/bin/touch
    [root@server ~]# ls -l /usr/bin/touch
    -rwsr-xr-x. 1 root root 62568 Oct 31  2018 /usr/bin/touch
    
    普通用户USER01能以root身份执行touch命令,故可以在root家目录下创建文件
    [USER01@server ~]$ touch /root/test2
    [root@server ~]# ls -l
    total 0
    -rw-r--r--. 1 root root   0 Jul  8 23:15 test1
    -rw-rw-r--. 1 root USER01 0 Jul  8 23:16 test2
    
    

三、sgid

  • sgid原理

    • 对于二进制文件,若g具有x权限,并设置了sgid权限,其他用户可以获得属组的权限去执行该二进制文件
    • 对于文件夹,为某个目录设置了sgid后,该目录文件属于属组;在这个目录下创建的文件、文件夹都会保留sgid属性
  • 示例

    [root@server ~]# ls -ld /test
    drwxrws---. 2 root GROUP01 6 Jul  3 01:24 /test
    #该/test文件夹属于GROUP01用户组,具有sgid权限,即GROUP01组内成员可以对/test文件夹下的文件及目录目录文件进行ls、mkdir、touch、rm、cd等操作,mkdir、touch创建的子文件同样具有sgid特性,属于GROUP01用户组
    
    [root@server test]# grep 'GROUP01' /etc/group
    GROUP01:x:2500:USER02,USER01
    #GROUP01用户组的组内成员有USER01、USER02,则该成员可以对/test目录文件具有rwx权限
    
    [USER01@server test]$ 
    mkdir USER01文件夹
    [USER01@server test]$ 
    touch USER01.log
    [USER02@server test]$ mkdir USER02.文件夹
    [USER02@server test]$ 
    touch USER02.log
    [root@server test]# ls -l
    total 0
    -rw-rw-r--. 1 USER01 GROUP01 0 Jul  3 01:30 USER01.log
    drwxrwsr-x. 2 USER01 GROUP01 6 Jul  3 01:30 USER01文件夹
    -rw-rw-r--. 1 USER02 GROUP01 0 Jul  3 01:31 USER02.log
    drwxrwsr-x. 2 USER02 GROUP01 6 Jul  3 01:30 USER02.文件夹
    #GROUP01组内成员在/test目录文件下创建的子文件均具有sgid特性,属于GROUP01,即组内成员可以对子文件执行ls、rm、mkdir、touch、cd等操作
    
    [USER01@server test]$ rm -rf USER02.文件夹
    [USER01@server test]$ [USER01@server test]$ rm -rf USER02.log
    [root@server test]# ls -l
    total 0
    -rw-rw-r--. 1 USER01 GROUP01 0 Jul  3 01:30 USER01.log
    drwxrwsr-x. 2 USER01 GROUP01 6 Jul  3 01:30 USER01文件夹
    #用户组成员USER01可以删除USER02的文件,而是“USER02.log”和“USER02.文件夹”文件对属组的权限为“rw-”和“rws”,是因为具有sgid权限的目录文件是以属组的权限为准,即为"rws"
    
    

四、sbit

  • sbit原理

    • 在一个权限为777的文件夹下,所有用户都可以进行rwx操作,也就意味着,任何用户可以随意删除别人的资料
    • linux系统中/tmp的权限为777,并且具有sbit权限,所以除了root外,任何用户只能删除、移动自己的文件,而不能影响别人的文件
  • 示例

    [root@server tmp]# ls -ld /tmp
    drwxrwxrwt. 7 root root 93 Jul  3 01:55 /tmp
    #/tmp权限为777,并且具有sbit权限,即除了root用户外,任何人不可以影响别人的文件
    
    [root@server tmp]# ls -l
    total 0
    -rw-rw-r--. 1 USER01 USER01 0 Jul  3 01:57 USER01.log
    drwxrwxr-x. 2 USER01 USER01 6 Jul  3 01:56 USER01文件夹
    -rw-rw-r--. 1 USER02 USER02 0 Jul  3 01:57 USER02.log
    drwxrwxr-x. 2 USER02 USER02 6 Jul  3 01:57 USER02文件夹
    #“USER02.log”和“USER02文件夹”对其他用户的权限分别为“r--”和“r-x”
    
    [USER01@server tmp]$ rm -rf USER02.log
    rm: cannot remove ‘USER02.log’: Operation not permitted
    [USER01@server USER02文件夹]$ touch ianuser01
    touch: cannot touch ‘ianuser01’: Permission denied
    #USER01不可以对USER02.log文件进行vim、cat追加、rm等操作;USER01不可以对USER02文件夹进行rm、touch、mkdir等操作
    
    

五、拓展

1、系统环境变量--set

#查看系统所有用户的环境变量,且过滤出于root相关信息
[root@server ~]# set | grep 'root'

2、用户个人环境变量--env

#查看用户个人的环境变量,且过滤出与root相关的变量
[root@server ~]# env | grep 'root'

3、控制命令提示符的变量--PS1

#命令提示符[root@server ~]#
#参数:
\u  #显示用户名
\h  #显示主机名
\W  #显示用户所处目录的最后一级
\w  #显示用户所处的绝对路径,省去敲pwd
\t  #以24小时制显示时间
$  #显示用户身份的提示符,‘#’为root,‘$’为普通用户

#命令格式(不能有空格,临时生效):
PS1='[\u@\h\w\t]$'
#永久生效:
#将定义的变量写入系统全局环境变量配置文件/etc/profile,那么就有关于个人的配置文件文件,在建立下~/.bash_profile
①临时生效
#01:修改命令提示符为‘[用户名@主机绝对路径时间]#’
[root@serverUSER01文件夹]#PS1='[\u@\h\w\t]#'
[root@server/tmp/USER01文件夹03:04:13]#

#02:退出重新登录后,系统重新加载环境变量,该设置消失
[root@server/tmp/USER01文件夹03:04:35]#logout
[C:\~]$ ssh root@192.168.10.128
[root@server ~]# 
②永久生效
#01:普通用户永久生效(该文件,存在于用户家目录下的)
[andy@server ~]$vim ~/.bash_profile 
PS1='[\u@\h \W]\]$ '

#02:root用户永久生效
[root@server ~]#vim ~/.bash_profile 
PS1='[\u@\h \W]\]# '

#03:所有用户永久生效
[root@server ~]#vim /etc/profile
PS1='[\u@\h \W]\]$ '

4、修改创建文件及目录的默认权限--umask

#01:root用户
[root@server ~]# umask
0022
root用户umask默认为022
文件:666-022=644
目录:777-022=755

#02:普通用户
[USER01@server ~]$ umask
0002
普通用户umask默认为002
文件:666-002=664
目录:777-002=775
#修改umask
#01:临时修改
[USER01@server ~]$ umask 004

#02:永久修改
[USER01@server ~]$ vim .bashrc
umask 004

5、锁定文件--lsattr、chattr

+a  锁定文件,限制⽂件只能追加写⼊数据,不得删除⽂件、或清除⽂件内容
+i  锁定⽂件,限制⽂件不得被删除、改名、修改
  • 示例
锁定⽂件/var/spool/cron/root,限制⽂件不得被删除、改名、修改内容
#01:创建测试文件
[root@server ~]# touch /var/spool/cron/root

#02:锁定⽂件/var/spool/cron/root,限制⽂件不得被删除、改名、修改内容
[root@server ~]# chattr +i /var/spool/cron/root
[root@server ~]# lsattr /var/spool/cron/root
----i----------- /var/spool/cron/root

#03:测试⽂件不得被删除、改名、修改内容
[root@server ~]# rm -rf /var/spool/cron/root
rm: cannot remove ‘/var/spool/cron/root’: Operation not permitted
[root@server ~]# mv /var/spool/cron/root /var/spool/cron/root01
mv: cannot move ‘/var/spool/cron/root’ to ‘/var/spool/cron/root01’: Operation not permitted
[root@server ~]# echo "123123" > /var/spool/cron/root
-bash: /var/spool/cron/root: Permission denied
posted @ 2023-07-09 15:37  方木木不方  阅读(465)  评论(0)    收藏  举报