理解基本权限以及特殊权限:Suid 、Sgid、Sticky以及acl

理解基本权限以及特殊权限:Suid 、Sgid、Sticky以及acl

在Linux中特殊权限是什么?为什么要设定特殊权限?回答这个问题前,我们不妨思考为什么要设定权限?

大家知道Linux中一切皆文件。不论你是什么,在linux系统中都会被当做一个文件来看待。无论你是文本或目录,硬件或软件,图片或视频等等,统统都被当做文件来看待。所以,在linux中,文件的重要性不言而喻。那么如何更合理的管理好文件呢?文件的权限管理是很重要的一环,所以接下来我将介绍文件的基本权限以及特殊权限。

基本文件权限

对于文件的权限linux系统中是通过读(r)写(w)执行(x)来进行管理的。
权限 文件 目录
r 可以打开和阅读文件的内容 可以用ls查看此目录中的文件,但不能阅读目录内的文件
w 可以修改文件内容 可以在目录中删除或添加文件以及目录
x 可以运行一个执行文件 可以使用cd进入到这个目录

介绍完了rwx权限在文件以及目录中的意义,接下来介绍赋予权限的方法。在这里我采用的八进制赋权的方法,权限对应关系如图。 Alt text

Selection_005

通过这种对应关系,我们可以给文件或目录赋权。

例子 1.1

~]# touch permission.txt
~]# ll permission.txt -rw-r--r--. 1 root root 0 Apr  8 14:40 permission.txt
~]# chmod 755 permission.txt 
~]# ll permission.txt -rwxr-xr-x. 1 root root 0 Apr  8 14:40 permission.txt
讲解:   1.创建一个文件   
        2.查看文件权限为:-rw-r--r--,对应权限 属主:读写;属组:读;其他者:读  
        3.接下来我们使用chmod更改文件的权限   
        4.可以看到文件的权限为:-rwxr-xr-x 对应权限 属主:读写执行;属组:读执行;其他者:读执行
        note:一般我们设置文件的权限为644,不轻易给文件赋予X权限,因为执行权限对于文件来说十分重要

2.特殊权限 讲解完了基本权限,接下来该讲讲特殊权限。当有些权限问题,基本权限解决不了,那么就需要特殊权限来解决了。这就是特殊权限存在的意义。

2.1 三大特殊权限分别对于文件以及目录的作用。 Alt text

Selection_007

1.设置SUID的意义:让其他用户具有文件所有者的执行权限。
2.设置SGID的意义:让其他用户可以在设置SGID的目录中可以随意的修改文件。生产环境中常为开发人员用户组设置此权限。
3.设置Sticky的意义:只有文件的属主可以删除文件。生产环境中常为开发人员用户组设置此权限。

2.2如何判断文件或者目录设置了特殊权限 Alt text

8

通过上图我们可以知道,当对用户设置了SUID,用户原本执行权限位置会被S或s替换掉。属主有执行权限,替换为s;属主没有执行权限时,则替换为大S。大S在这里是没有任何作用,小s才会让其他用户拥有执行权限。同理,SGID,Sticky也是相同的道理。

~]# ls -ld /usr/bin/passwd /tmp
 drwxrwxrwt. 16 root root  4096 Apr  8 15:03 /tmp
-rwsr-xr-x.  1 root root 27832 Jun 10  2014 /usr/bin/passwd
    以上是系统对文件以及目录设置的特殊权限。
    passwd文件设置了SUID,作用是除root用户以外的用户可以修改自身的用户密码;
    tmp目录设置了sticky,其作用是使进入tmp目录内的用户可以随意修改   文件内容,但是不能删除其他用户创建的文件。

2.3 设置Suid、Sgid、Sticky

设置特殊权限很简单,可以参考以下命令。

3.1 设置suid/取消suid
        chmod u+s file
        chmod u-s file
    3.2 设置sgid/取消sgid       
        chmod g+s dir
        chmod g-s dir
    3.3 设置sticky        
        chmod o+t dir
        chmod o-t dir

2.4acl权限

除了文件的所有者,所属组和其他人,可以对通过acl权限实现对更对的用户设置权限。

获取acl权限信息
    命令:getfacl dir/file
        tmp]# mkdir acltest
        tmp]# getfacl acltest/
        # file: acltest/
        # owner: root
        # group: root
        user::rwx
        group::r-x
        other::r-x设置acl权限
    命令:setfacl -m u/g:name:permission dir/file
        tmp]# setfacl -m u:michael:rwx acltest/
        tmp]# getfacl acltest/
        # file: acltest/
        # owner: root
        # group: root
        user::rwx
        user:michael:rwx        
        group::r-x
        mask::rwx
        other::r-x
以上通过setfacl命令,michael用户对/tmp/acltest目录已经拥有了rwx权限。这就是acl权限的作用,大家可以举一反三。

原创文章,作者:PowerMichael,如若转载,请注明出处:http://www.178linux.com/72796

(0)
PowerMichaelPowerMichael
上一篇 2017-04-08 16:06
下一篇 2017-04-08 18:10

相关推荐

  • 如何在微软Azure云机上添加新磁盘

    大家好: 最近在项目实践中,分享下如何在微软Azure云机上添加新磁盘。 首先需要查看下是否有未用上的磁盘,先fdisk -l查(看下图)并和Azure技术确认该磁盘是否可永久保存数据: 然后找到未分区的磁盘号,如上图中的/dev/sdc,再 fdisk /dev/sdc后开始在该新磁盘上进行分区创建: 为方便管理,我们一般就创建一个分区,然后进行格式化: …

    Linux干货 2016-11-27
  • Linux运维实战之6:挂载/卸载磁盘分区

    上次博文我们具体讨论了Linux系统中磁盘的分区及格式化( http://www.178linux.com/60811),本次博文我们具体来说说分区的挂载哈! 【问题引入】 已经格式化好的分区如何与系统现有的文件系统建立关联(如何使用新分区)? 新的磁盘分区创建完成并格式化之后需要挂载(或装入)到目录树上才能被使用。 何谓挂载/卸载? 【答】将某个…

    Linux干货 2016-12-04
  • Linux不同发行版之间的联系与区别

    Linux发行版有商业版、社区版两类。两者的共同点都是GNU/Linux发行版,区别在于商业版是由商业公司维护,社区版是社区组织维护。由于linux发行版都要遵循GPL协定,任何人都有使用、共享、修改软件源代码的自由,所以商业版的收入主要来自向企业提供支持服务,它的软件基本都是免费的。

    Linux干货 2018-03-04
  • Linux第三周总结

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 ~]# who | cut -d ” -f1 | uniq 2、取出最后登录到当前系统的用户的相关信息。 ~]# who|tail -1 3、取出当前系统上被用户当作其默认shell的最多的那个shell ~]# cut -d’:’…

    2017-07-16
  • 第七周练习

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; 1.[root – gwx ~]#>fdisk /dev/sdb2.W…

    Linux干货 2016-12-11

评论列表(1条)

  • renjin
    renjin 2017-04-12 11:28

    总结了linux 中的一些特殊权限,写容总结的很不错,排版也很好,赞!