Linux 文件系统上的特殊权限

                  

权限模型:

  ugo

  rwx

进程的安全上下文:

   前提:进程有属主(进程以哪个用户的身份运行);文件有属主和属组

    1 用户是否能够把某个可执行程序文件启动为进程,取决于用户对程序文件是否拥有执行权限

    2 程序启动为进程后,此进程的属主为当前用户,也就是是进程的发起者,进程的属组,为发起者的基本组

    3 进程拥有的访问权限,取决其属主的访问权限

      a 进程的属主,与文件属主相同,则应用文件属主的权限

      b 进程的属主,属于文件的属组,则应用文件属组的权限

      c 否则应用其它权限

SUID

  1  suid 权限仅对二进制程序有效

  2 执行者对于该程序需要具有X可执行权限

  3 本权限仅在执行该程序过程中有效

  4 执行者将具有该程序所有者的权限

                           

 任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否有执行权限

 启动为进程之后,其属主不是发起者,而是程序文件自己的属主,这种机制即为SUID

                           

  权限设定:

   chmod u+s FILE

   chmod u-s FILE

                             

 注意:

  s:属主原本有x执行权限

  S:属主原本没有x执行权限

SGID

 默认情况下,用户创建文件时,其属组为此用户所属的基本组(有效组)

 一旦某目录被设定了SGID权限,则对此目录拥有写权限的用户在此目录中创建的文件所属组为目录的所属组,而非用户的基本组

 权限设定:

  chmod g+s FILE

  chmod g-s FILE

                  

Sticky

 对于一个多人可写的目录,此权限用于限制每个仅能删除自己的文件

 当用户对于此目录具有wx权限,即具有写入的权限时;

 当用户在该目录下创建文件或目录时,仅有自己与root才有权限删除该文件

                           

 权限设定:

  chmod o+s FILE

  chmod o-s FILE

                             

SUIDSGID STICKY

 八进制权限表示

     000      0

     001     1

     010      2

     011      3

     100      4

     101      5

     110      6

     111      7

                           

 十进制

   SUID  4

   SGID  2

   Sticky1

                           

                           

练习:

1、  让普通用户能使用/tmp/cat去查看/etc/shadow文件;

[root@localhost~]# cp `which cat` /tmp/
[root@localhost~]# ll /tmp/
total 60
-rwxr-xr-x.1 root root 54048 Sep  7 05:31 cat
drwxr-xr--.2 root root  4096 Sep  7 01:03 test
 
#没有添加SUID
[test1@localhost~]$ /tmp/cat /etc/shadow
cat: /etc/shadow:Permission denied
 
#修改权限 添加SUID后
root@localhost~]# chmod 4755 /tmp/cat
 
[test1@localhost~]$ /tmp/cat /etc/shadow
root:$6$T/WcPl78bQE44s/G$tbMlzheEhUTjaQjAXrqMrHKK48nL7DAB1mxWHvonA5u8UKLvezU5Gj77bLu7DnihIw/8dy3FLb2BYdB6/vSp7.:16666:0:99999:7:::
bin:*:16372:0:99999:7:::
daemon:*:16372:0:99999:7:::
adm:*:16372:0:99999:7:::
lp:*:16372:0:99999:7:::
sync:*:16372:0:99999:7:::
shutdown:*:16372:0:99999:7:::
halt:*:16372:0:99999:7:::
mail:*:16372:0:99999:7:::
operator:*:16372:0:99999:7:::
games:*:16372:0:99999:7:::
ftp:*:16372:0:99999:7:::
nobody:*:16372:0:99999:7:::
avahi-autoipd:!!:16666::::::
dbus:!!:16666::::::
polkitd:!!:16666::::::
tss:!!:16666::::::
postfix:!!:16666::::::
sshd:!!:16666::::::
roger:$6$0KPQaYoTOf.yG8bn$Y6loiRhlZWxO0UWyfDFKjWKD5d1LdlICMzpCrminRnwHsxYoj18mXLuYT/Ot8PE8nOY5wGSME3g2GJ0mMC9BF1:16666:0:99999:7:::
test1:$6$Y1ceDBCJ$O92n.sECE2STfiRXb7QMD1ARYKahj226zZy0/Lxlvq612xzg.cQ6uqxhW8QygFPs8.O9qGwYYnRQiIV/E4Sq9.:16684:0:99999:7:::

2、  创建目录/test/data,让某组内普通用户对其有写权限,且创建的所有文件的属组为目录所属的组;此外,每个用户仅能删除自己的文件;

[root@localhosttest]# ll
total 4
drwxr-xr-x. 2root root 4096 Sep  7 05:41 data
                            [root@localhosttest]# chmod 3777 data
[root@localhost test]# ll
total 4
drwxrwsrwt. 2 root root 4096 Sep  7 05:59 data
[root@localhost test]# su - test1
Last login: Mon Sep  7 05:20:02 CST 2015 from 192.168.1.199 onpts/2
[test1@localhost ~]$ cd /test/data/
[test1@localhost data]$ touch test1_file
[test1@localhost data]$ ll
total 0
-rw-rw-r--. 1 test1 root 0 Sep  7 05:58 test1_file
[test1@localhost data]$ exit
logout
[root@localhost test]# su - roger
Last login: Mon Sep  7 05:20:12 CST 2015 on pts/2
[roger@localhost ~]$ touch/test/data/roger_file
[roger@localhost ~]$ ll
total 0
[roger@localhost ~]$ ll /test/data/
total 0
-rw-rw-r--. 1 roger root 0 Sep  7 05:59 roger_file
-rw-rw-r--. 1 test1 root 0 Sep  7 05:58 test1_file
[roger@localhost ~]$ rm/test/data/test1_file
rm: remove write-protected regular emptyfile ‘/test/data/test1_file’? y
rm: cannot remove ‘/test/data/test1_file’:Operation not permitted
[roger@localhost ~]$ exit
logout
 [root@localhosttest]# su - test1
Last login: Mon Sep  7 05:57:44 CST 2015 on pts/0
[test1@localhost ~]$ rm/test/data/roger_file
rm: remove write-protected regular emptyfile ‘/test/data/roger_file’? y
rm: cannot remove ‘/test/data/roger_file’:Operation not permitted

注:部分内容有对《鸟哥linux私房菜》第三版参考

如有错误,敬请指正!

谢谢!