Linux基础之—基础权限和特殊权限以及FACL权限管理

Linux是多用户多任务的操作系统,了解掌握Linux的权限分配机制,也是管理Linux系统安全的基础之一。

文件目录的权限格式如下:

ACL.png

 

1.其中权限位可以看对象到是一个9个占位符,其实分为三位一组:

(1) 第一组:对应的是文件或目录的所有者属主权限。owner

(2) 第二组:对应的是文件或目录的所属组权限。group

(3) 第三组:对应的是文件或目录的其他用户权限。other

2.相应的权限意义如下:

      r:读

     w:写

      x;执行

      -:无任权限

*注意:权限对文件和目录意义是有区别的,下面详细介绍:

3.rwx对文件的意义:

r:可以查阅文件的内容,比如cat命令。

w:可以修改,增加文件内容。注意:对文件的删除操作要看上级目录对应的权限,俗话说的打狗看主人。

x:可以把文件提交给内核执行,这样文件就具有了执行权限。

  

4.rwx对目录的意义:

r:可以浏览目录里的文件名。前提是必须有x权限。

w:可以删除目录里的文件或者重命名。

x:可以进入目录,使用cd命令

5.注意总结点:

   目录一般必要具有x权限,否则后续相应权限意义不大,文件一般不能随便有执行权限,一个恶意的文件对于Linux的系统安全将无从保证。

6.对文件或目录的用户和组授权的方式:可以分为两种,一种是用数字授权,一种是用字符或字符组合授权,下面分别说明:

   (1)数字利用的是八进制权限对应表,如下:

      

000 0

–x 001 1

-w- 010 2

-wx 011 3

r– 100 4

r-x 101 5

rw- 110 6

rwx 111 7

这样每组的权限对应可以用三个八进制数表示:xxx=(000-777)

命令:chmod

      语法格式:

         chmod [options] xxx FILE

         chmod  –reference=RFILE FILE :可以参考已有权限文件的权限授权。

常用选项optons

      -R:可以对目录进行递归授权

             注意:这样授权成功会覆盖先前已有的权限。

  

   (2)字符授权有三种方式:

         +:追加权限

         -:清除权限

         =:附加权限,这样会覆盖已有的权限。

         以上还可可以组合使用

 

          对象分为以下四种:

           a:属主

           g:属组

           o:其他用户

           a:所有用户=ago以上所有用户

         举例格式:

           chmod  o+x,g=r,u-w FILE

           chmod a=rwX FILE

         大X递归授权时,会给目录相应权限,文件跳过,

        

7.更改文件的属主属组命令:

     (1)chown 

          语法格式:

          chown [OPTION]… [OWNER][:[GROUP]] FILE…

          chown [OPTION]… –reference=RFILE FILE…

          常用选项:

           -R:递归更改文件或目录属主属组

            “:”“.”是属主和属组的分割符

           可以只更改属主:

            chown  owner FILE

            也看可以只更改属组:

            chown  :group 前面用“.”“:”都可以

      (2)chgrp命名只支持更改属组

            语法格式

             chgrp [OPTION]… GROUP FILE…

             chgrp [OPTION]… –reference=RFILE FILE..

             常用选项:

              -R:递归更改目录属组

8.umask:对于新创建的文件和目录系统会有一个默认权限位,前面我们知道,目录一般必要有执行权限,文件一般不能有执行权限,所以在授权时目录默认为777,文件默认为666,但是这样的权限位在系统安全中很不安全,为了区分用户权限,必须对相应的权限做出默认限制,这里就需要用到umask遮罩码,目录umask-777,文件umask-666,这样我们发现超级管理员创建的文件和目录跟普通用户创建默认的授权时不同的,为了保证文件不能有执行权限x,数字授权时正常使用umask,文件授权需要遵循有奇数加1,偶数保留。

      命令:umask

       直接使用umask 可以查看当前用户的遮罩码值

  

注意:umask=vale命令设置,只对当前shell环境生效,如何想一直有效,可以在全局/etc/bashrc 或者~/.bashrc 里设置。

 

9.suid sgid sticky:

   分析进程安全上下文:用户要想操作命令发起进程,首先这个二进制程序命令文件必须有执行权限,进程是以某用户身份运行的,也就是说进程是发起此进程用户的代理,相应的进程的权限也是进程发起者用户的权限,这时候就以此用户的身份和权限完成所有操作,过程如下:

     1.如果被访问的文件属主跟进程的属主一样,就应用被访问文件属主的权限,如果不是进入下一步;

     2.如果被访问的文件属组跟进程的属组一样,就应用被访问文件属组的权限,如果不是进入下一步;

     3.这是应用被访问文件other其他用户的权限。

    

      suid:普通用户可以更改自己的密码,但是密码文件/etc/shadow没有任何权限,根据安全上下文,用户执行passwd命令时使用的权限应该是当前用户,当前用户对命令passwd命令只能应用other其他用户权限,其他权限位没有写权限,是不能修改/etc/shadow,但是查看ls /usr/bin/passwd是发现属主多了一个权限位小s,这个小s就是suid,这时应用的安全上下文不在是以进程发起者的身份,而是使用/usr/bin/passwd属主的权限,程序文件自身的属主权限。使用ps aux命令也可以看到进程的属主是root.

   

总结:运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者;

    

    

    2.sgid权限模型应用原理跟suid一样,程序发起者临时变更属组,当目录属组有写权限是,属于目录属组的用户都可以创建文件,并且文件的属主属组都是用户本身,这样同属于一个目录属组的用户,也没有办法互相操作文件。但是当给目录属组授权sgid时,用户创建的文件不在是自身的属组,这样用户可以互相操作文件。

     总结:运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组;

3.sticky:在系统中有这样一个目录/tmp,用户可以创建修改删除自己的文件,可以查看别人的文件,但是不能删除修改别人的文件。我们查看ll -d /tmp发现目录的权限是rwxrwxrwxt,发现多了一个t,这就是这个特殊权限位t的作用。

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

4.特殊权限管理;

 授权suid方式:

     chmod u+s,  FILE

     chmod g+s  FILE

     chmod o+t  FILE

     

取消授权

     chmod g-s  FILE

     chmod o-t  FILE

     chmod u-s  FILE 

 

这里的三个特殊权限有可以组成一组3位八进制,分别:sui=4 sgid=2 sticky=7 suid+sgid=6 .

 

这样组合加起来就是umask完整的权限四位8进制表示。

 

注意:如果原文件有执行权限x,就变更为小s。如果原文件没有执行权限x,这里显示变更为大S,说明有问题,文件没有执行权限,变更也无意义。属组大S和other大T跟前面属主大S意义一样,没有意义。

            这里suid只对二进制可执行程序有效。目录无意义。

10.文件特定属性,对有些文件需要特殊控制保护,可以使用chattr命令

        chattr

语法格式:

chattr [options] FILE

常用选项:

  i:锁定文件,任何用户都不能改名修改删除文件。

  a:对文件有相应权限的用户,只能追加文件内容,

  A:锁定文件的访问时间,用户访问了文件,相应的时间戳也不会改变。

授权用+,取消用-

 

使用lsattr命令查看chattr特定文件权限属性。

10FACL:

    facl利用的是文件系统额外的扩展属性,一般的Linux的文件系统基本都支持acl。

1.分析这样一个场景,我们要想对一个共享资源,分别指定不同用户的权限,我们只能对共享资源授权其他用户other,很难再给每个用户单独授以不同权限。无法满足需求。d当然了大家这时回想怎么不用suid和sgid,要知道种方式对于系统来说是很危险的。这时就需要借助额外的权限控制,Linux里就引入了facl解决这种问题。

         

    facl作用:

         除了文件的所有者,所属组和其它人,可以对更多的用户设置权限   

        

    fACL生效顺序:owner——>facl中授权的用户user——>group——>facl中授权的group组——>other

设定FACL:

命令:setfacl

语法格式 

setfacl [options] [user:perm|group:perm] FILE

常用选项:

-m:授权

u:指定用户

g:指定组

    perm:相应rwx权限。

    

    -x:取消权限

u:直接指定用户就可以

g:直接指定组就可以。

-d:设置默认权限位

-k:删除默认FACL

-b:清空所有FACL

查看FACL

getfacl

语法格式

getfacl FILE

    facl中的mask是默认权限高压线,如何应用了mask,用户在设置权限时,有超过mask权限就会减掉,没有不管。

注意:设置的默认权限有X,文件也不会基础x权限,这里出于Linux系统安全考虑。

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

(0)
上一篇 2016-08-07 22:05
下一篇 2016-08-07 22:05

相关推荐

  • linux用户和权限管理

    0.用户 1、建用户:adduser nuoline //新建nuoline用户passwd nuoline //给nuoline用户设置密码 2、建工作组groupadd test //新建test工作组 3、新建用户同时增加工作组useradd -g test nuoline //新建phpq用户并增加到test工作组 注:…

    Linux干货 2016-08-05
  • linux 文件管理类命令及功能用法

    第一题:Linux上的文件管理类命令都有哪些,其常用的使用方法及相关示例演示。 文件管理类的命令有: cd,ls,touch,mldir,cp,mv,rm,rmdir,pwd,tree 使用方法 (1),cd命令用来切换工作目录至dirname。其中dirName表示法可为绝对路径或相对路径。 常用格式: cd #进入用户家目录 cd~ #进入用户家目录 c…

    Linux干货 2017-07-09
  • Linux三剑客之sed

    sed:全称stream EDit 行文本编辑器 作用:是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在模式空间,接着用 sed命令处理缓冲区中的内容,处理完成后,把模式空间的内容输出到标准输出。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。 Sed主要用来自动编辑一个或多个文件,简化对文件的反复操…

    Linux干货 2016-08-12
  • 六.Linux博客-2016年8月2日用户、权限

    格式说明: 操作 概念 命令 说明及举例 六.用户、权限 创建用户、修改用户、删除用户 useradd 创建一个用户 useradd -r 创建系统用户,系统用户不创建家目录 useradd -D /etc/default/useradd 默认设置配置文件 newusers +文件 批量创…

    Linux干货 2016-08-24
  • 07程序包管理器简介

    源代码命名方式,name-version.tar.gz|bz2|xz,    –>version:major.minor.release 要将一个源代码程序安装到Linux系统上,一般有两个方法。 1、找到源代码,手动编译安装。解压,./configure  –> make –&g…

    Linux干货 2016-11-03
  • 一种强大的新型BIOS Bootkit病毒曝光

    近日,安全研究人员开发出一种新的BIOS bootkit,它可以窃取敏感数据,以及流行操作系统使用的PGP密钥。包括华硕、惠普、宏基、技嘉以及微星等在内的各大供应商的主板都受到该病毒影响。 BIOS bootkits是真实存在的。斯诺登在披露NSA ANT部门使用的监视工具集时,曾提到过BIOS bootkits。这些恶意软件能够入侵受害机器的BIOS,以此…

    2015-03-23

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-07 22:26

    文章整体结构清晰,可是尝试着将自己对特殊权限应用场景模拟的操作写在里面,这样以后复习起来也会直观明了。