特殊权限SUID以及ACL

简介:

特殊权限:

    SUID:运行某程序时,相应进程的属主是文件本身,而不是启动者

        chmod  u+s FILE

        chmod  u-s FILE

            如果FILE本身具有执行权限,则显示为s,否则显示为S

    SGID:运行某程序时,相应进程的属组是文件本身,而不是启动者

        chmod  g+s  FILE

        chmod  g-s  FILE

            如果FILE属组具有执行权限,则显示为s,否则显示为S

    Sticky:在一个公共目录,每个都可以创建文件,删除自己的文件,但是不能删除别人的文件

        chmod  o+t  FILE

        chmod  o-t  FILE

            如果FILE其他权限具有执行权限,则显示为t,否则显示为T

    suid粗略解释:当用户登录linux时,操作系统会启用一个用户进程,当这个用户去启动一个命令的时候,操作系统会对比其权限,如果通过,则启动这个命令的进程,当没有设置suid的时候,这个命令的进程的属主默认为启动着用户,而当设置了suid以后,这个进程的属主属于命令本身的属主。

    suid用途举例:

    如passwd命令,我们知道/etc/passwd只有root有写权限,但是普通用户也可以通过passwd命令修改自己的密码,这是因为,passwd命令被设置了suid,当用户执行passwd命令的时候,进程以passwd属主root的身份修改/etc/passwd文件。

    当一个文件被设置了suid的时候,它的属主权限如果具有执行权限,那么它的x位会显示为s,如果没有则显示为S,如:

[root@logstash ~]# ls  -al  /usr/bin/passwd 

-rwsr-xr-x. 1 root root 25980 Feb 22  2012 /usr/bin/passwd

[root@logstash ~]# ls -alh /etc/passwd

-rw-r--r-- 1 root root 1.9K Jan 14 10:16 /etc/passwd

    

    sgid用途举例:

    假设/tmp/test为公共目录,我们希望用户tom和用户jerry都能编辑修改里面的内容,但是又希望其他人不能修改。这种情况我们可以把tom和jerry加入/tmp/test的属主来解决,但是这个有个问题,tom和jerry在里面创建的文件,属主和属组都会是自己和自己的基本组,也就是说tom和jerry不能互相访问修改对方自己创建的文件,当我们希望这么做的时候,我们就可以用到gid,下面是具体演示过程:

[root@logstash ~]# groupadd  test 

[root@logstash ~]# mkdir /tmp/test

[root@logstash ~]# chown -R root:test /tmp/test

[root@logstash ~]# ls  -ald  /tmp/test

drwxr-xr-x 2 root test 4096 Jan 20 14:10 /tmp/test

[root@logstash ~]# chmod g+w /tmp/test

[root@logstash ~]# ls  -ald /tmp/test

drwxrwxr-x 2 root test 4096 Jan 20 14:10 /tmp/test

[root@logstash /]# usermod  -a  -G test  tom

[root@logstash /]# usermod  -a  -G test  jerry

[tom@logstash ~]$ cd  /tmp/test

[tom@logstash test]$ touch a

[tom@logstash test]$ ls -al a

-rw-rw-r-- 1 tom tom 0 Jan 20 14:22 a

[jerry@logstash ~]$ cd  /tmp/test

[jerry@logstash test]$ touch b

[jerry@logstash test]$ ls  -alh

total 8.0K

drwxrwxr-x  2 root  test  4.0K Jan 20 14:23 .

drwxrwxrwt. 4 root  root  4.0K Jan 20 14:20 ..

-rw-rw-r--  1 tom   tom      0 Jan 20 14:22 a

-rw-rw-r--  1 jerry jerry    0 Jan 20 14:23 b

[root@logstash ~]# chmod g+s /tmp/test

[root@logstash ~]# su - jerry 

[jerry@logstash ~]$ cd /tmp/test

[jerry@logstash test]$ touch c

[jerry@logstash test]$ ls  -alh

total 8.0K

drwxrwsr-x  2 root  test  4.0K Jan 20 14:29 .

drwxrwxrwt. 4 root  root  4.0K Jan 20 14:20 ..

-rw-rw-r--  1 tom   tom      0 Jan 20 14:22 a

-rw-rw-r--  1 jerry jerry    0 Jan 20 14:23 b

-rw-rw-r--  1 jerry test     0 Jan 20 14:29 c


    Sticky用途示例:

    承上个例子,当前情况,在/tmp/test下,tom和jerry是可以互相删对方文件的,这是想当不友好的,这个时候我们可以借用sticky位。

[tom@logstash ~]$ cd  /tmp/test

[tom@logstash test]$ ls -l

total 0

-rw-rw-r-- 1 tom   test 0 Jan 20 14:42 a

-rw-rw-r-- 1 tom   test 0 Jan 20 14:42 b

-rw-rw-r-- 1 jerry test 0 Jan 20 14:29 c

[tom@logstash test]$ rm  c

[tom@logstash test]$ ls -l

total 0

-rw-rw-r-- 1 tom test 0 Jan 20 14:42 a

-rw-rw-r-- 1 tom test 0 Jan 20 14:42 b

[root@logstash test]# chmod o+t  /tmp/test

[root@logstash test]# su - jerry

[jerry@logstash ~]$ cd  /tmp/test

[jerry@logstash test]$ ls -l

total 0

-rw-rw-r-- 1 tom test 0 Jan 20 14:44 a

-rw-rw-r-- 1 tom test 0 Jan 20 14:42 b

[jerry@logstash test]$ rm a

rm: cannot remove `a': Operation not permitted

把suid、guid、sticky跟类似rwx组合

000:

001:设置了sticky位

010:guid

011:

100:suid

101:

110:

111:


chmod  5755 /backup/test 则test权限为  rwsr-xr-t











本文转自biao007h51CTO博客,原文链接:http://blog.51cto.com/linzb/1736495 ,如需转载请自行联系原作者





相关文章
|
6月前
|
Linux
linux 权限和Acl权限
linux 权限和Acl权限
44 0
|
监控 安全 NoSQL
默认权限 umask 和特殊权限 | 学习笔记
快速学习 默认权限 umask 和特殊权限.
|
Linux
9.9 Linux ACL权限设置(setfacl和getfacl)
通过上一节的学习,我们知道了什么是 ACL 权限,也了解了如何配置 Linux 系统使其开启 ACL 权限,本节来学习 ACL 设定文件访问权限的具体方法。
543 0
9.9 Linux ACL权限设置(setfacl和getfacl)
|
数据安全/隐私保护
用户组权限和ACL访问控制列表
又到了要写博客的时间,虽然没啥写的?但是,赶鸭子上架吧!写得不好之处请多多包涵! 一 用户组权限 1.修改文件的所属用户时,用户一定是已经存在的,否则修改不了。我经常会忽视这个! 2.chown 普通用户无权限  chgrp普通用户属于的组,就有修改这个组的权限。
1455 0
|
SQL 分布式计算 Hadoop