权限管理

linux文件权限:

    在linux系统中,每个文件或目录都包含有相应的权限,这些权限决定了哪些用户或组能够对此文件做哪些操作,如读取、删除、写入等操作

文件权限分为三类:r,w,x

    应用于文件:

        r:只读,只能查看其文件的内容,例如使用cat命令查看

        w:写入,能修改其文件的内容,但不能删除,也无法查看内容

        x:执行,可执行的二进制程序或者脚本文件

    应用于目录:

        r:能够查看其目录下的文件,但无法查看详细信息

        w:可以在目录下创建或者删除文件,需要配合x权限

        x:可以进入目录,可访问目录下的内容

    X:只对目录的x权限生效,文件不生效

当我们使用ls -l命令查看文件或目录时会列出一系列的属性信息:

2016-08-04_215014.png

最左侧一列由十位组成,其中第一位表示文件的的类型,d表示目录文件,-表示普通文件,等等

其余九位表示文件的权限,其中每三位一组,分为三组,自左而右匹配,第一组表示文件属主的权限,第二组表示文件属组的权限,第三组则为其他用户的权限

修改文件的属主或属组:

chown:修改文件的属主或属组

    -R:递归,对目录下所有子文件及目录全部生效

    –reference:参考文件的属主属组,将文件的属主或属组与某一文件设定一致

     chown owner FILE:修改文件的属主

    chown :group FILE:修改文件的属组

    chown owner:group:修改文件的属主与属组

2016-08-04_221320.png

chgrp:修改文件属组,由于chown包含了此命令的功能,在此不做介绍

权限的八进制表示法:

    — 000 0

    –x 001 1

    -w- 010 2

    -wx 011 3

    r– 100 4

    r-x 101 5

    rw- 110 6

    rwx 111 7

    例如:

    640等于rw-r—–

    755等于rwxr-xr-x

chmod:权限管理

    -R:递归,修改目录下所有文件及目录的权限

    –reference:参考某文件的权限,将文件的权限设定与指定文件权限一致

三类用户:

    u:文件属主

    g:文件属组

    o:其他用户

    a:表示所有

chmod [OPTION]… MODE[,MODE]… FILE…

权限表示法:

    赋权表示法:直接操作一类用户的所有权限位(可组合)

        u=

        g=

        o=

        a=

     授权表示法:操作一类用户的一个或多个权限位(可组合)

        u+,u-

        g+,g-

        o+,o-

        a+,a-

     八进制表示法:直接使用八进制对所有权限位进行赋权

        如777表示权限为rwxrwxrwx

        755表示rwxr-xr-x

        644表示rw-r—–

umask:文件权限的反向掩码,创建文件或目录时设定的默认权限

    umask:查看当前umask值

2016-08-04_223720.png2016-08-04_223808.png

    umask MASK:修改umask值,只对当前shell进程有效,如果想永久有效 需要在配置文件当中定义umask值

2016-08-04_224125.png

默认创建文件:666-umask值

默认创建目录:777-umask值

特殊权限:SUID,SGID,Sticky

安全上下文:

    1.当用户要发起某个程序为进程时,首先此用户要对此程序文件具有执行权限才行

    2.当程序被发起为进程时,进程的属主是发起者的属主,属组则为发起者的属组

    3.当进程去访问某文件时,权限取决于发起此进程的用户的权限

        (1)当进程的属主与文件的属主所匹配,则应用属主权限

        (2)当进程的属主属于文件的属组,则应用属组权限

        (3)应用other权限

SUID:如果一个可执行程序拥有SUID,当此程序被启动为进程时,进程的属主不再是发起者,而是程序自身文件的属主,SUID只对二进制程序有效

权限设定: chmod u+s FILE

      chmod u-s FILE

      注意:如果属主位拥有x权限,则SUID表示为小s,否则为大S

2016-08-04_225755.png

SGID:当一个可执行程序拥有SGID,此程序运行为进程时,属主不是发起者,而是原文件的属组

    当一个目录拥有SGID,则目录下新建文件的属组同此目录的属组一致

权限设定:

    chmod g+s FILE|DIR

    chmod g-s FILE|DIR

    注意:如果此程序文件的属组位拥有x权限,则SUID表示为小s,否则为大S

2016-08-04_231440.png

Sticky:如果一个目录具有写权限,意味着所有用户都可以任意添加删除目录下的文件,如果添加Sticky权限,则只有文件的所有者或root才能删除该文件

权限设定:

    chmod o+t DIR

    chmod o-t DIR

    注意:如果此目录的other位拥有x权限,则SUID表示为小t,否则为大T

特殊权限八进制表示法:

    000 0

    001 1

    010 2

    011 3

    100 4

    101 5

    110 6

    111 7

2016-08-04_232850.png

chattr:设定文件特定属性:

    -i:锁定文件,只能读取文件,不能修改、删除、移动

    -A:锁定文件访问时间戳

    -a:只能增加

lsattr:查看文件特定属性

2016-08-05_084808.png

FACL:File Access Control List即文件访问控制列表,在原有的u,g,o之外,另一层让普通用户能控制赋权给另外的用户或组的赋权机制,主要用于实现权限的灵活管理。

权限匹配安全模型:

    当程序被运行为进程时,以运行此进程的用户的身份去完成所有操作

    1.当用户以某进程访问文件时,首先判断此进程的属主与文件属主是否一致,如果一致,则应用属主权限,否则,进入第二步

    2.检查此进程的属主是否有特定的FACL权限,如果有,则应用,否则,进入第三步

    3.检查此进程的属主是否属于文件的属组,如果属于,则应用属组权限,否则,进入第四步

    4.检查此进程的属主所属的组是否有特定的FACL权限,如果有,则应用,否则,进入最后一步

    5.应用other权限

setfacl:设定facl权限

    setfacl -m u:USERNAME:MODE FILE | DIR:对文件或目录设定某个用户特定的FACL

2016-08-07_134302.png

    setfacl -m g:GROUPNAME:MODE FILE | DIR:对文件或目录设定某组特定的FACL

2016-08-07_134500.png

    setfacl -M ACL.FILE FILE | DIR:读取指定文件中的FACL列表

2016-08-07_134610.png

    setfacl -R u:USERNAME:MODE DIR:对目录下所有文件都设置FACL 

    setfacl -m d:u:USERNAME:MODE DIR:对目录下后续创建的文件设定默认FACL

2016-08-07_134852.png

    setfacl -x u:USERNAME:MODE FILE | DIR:撤销某个FACL权限

    setfacl -X XACL.FILE FILE | DIR:通过文件中定义的FACL列表来撤销FACL权限

    setfacl -k DIR:撤销目录上的默认FACL权限

    setfacl -b FILE | DIR:清空所有FACL列表

getfacl:可查看FACL权限列表

    getfacl FILE | DIR:查看文件或目录的FACL权限列表

    getfacl FILE1 | setfacl –set-file=- FILE2:复制FILE1文件的FACL给FILE2文件

mask:控制FACL权限的边界,只影响除了属主和other以外的所有权限

用户或组的权限必须在mask设定范围之内才会生效

设定mask权限:

    setfacl -m mask::rx FILE

2016-08-07_135240.png

备份FACL列表:    

    getfacl -R /tmp/dir1 > acl.txt

    setfacl -R -b /tmp/dir1

    setfacl -R –set-file=acl.txt /tmp/dir1

    getfacl -R /tmp/dir1

2016-08-07_135817.png

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

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

相关推荐

  • 软链接和硬链接的区别

    文件管理 前言 Linux的一则哲学:一切皆文件。既然入坑,那么管理linux就是管理一堆文件,操作文件这是展示个人十八般武艺的时候,功夫高下一招下。怎么成为高手,高手的招式都有哪些,拳脚掌刀枪棍棒,一招一式如何练就。 1文件存储 文件存储就好比每个练武人必备的技能——挨打,在你耍十八般武艺前,必须先扛住对方的一掌。我们不必拥有金刚罩铁布衫,至少要学会如何躲…

    Linux干货 2016-10-20
  • 文件查找:locate/find

    文件查找就是在文件系统上查找符合条件的文件,工具名分别为:locate和find locate是非实时查找或数据库查找的工具;而find则是实时查找工具。 locate locate依赖于事先构建的索引。索引的构建是在系统较为空闲时自动进行(即为周期性任务),也可以手动更新数据库(updatedb) 注意:索引构建过程需要遍历整个根文件系统,极其消耗资源。 …

    Linux干货 2016-03-12
  • mysql 备份脚本的编写

        最近在为做一些边边角角的工作,现在有一个需求要每天把mysql的数据库dump出来到备份机器上面去. 看似简单的任务也潜在了很多的需求,整理如下:     自动运行-crontab      脚本的环境变量设置-由于通过crontab 启动执…

    Linux干货 2015-12-15
  • 优云Automation:实现IT服务弹性伸缩的利器

    随着互联网业务快速持续增长,IT资源使用量按需变化成为常态,这就要求信息部门能快速响应资源使用的变化要求,对运维提出不小挑战。比如电商、在线教育等企业经常推出一些秒杀、抢红包活动,在特定时间段对资源的利用处于高峰期,之后基本处于空闲。 几年前,我们从申请采购到应用部署上线都只能人工操作,需要提前几个月开始规划。如今通过云平台能很好实现资源按需动态管理,运维人…

    系统运维 2017-03-15
  • shell 脚本中数组的总结

    描述:   变量是存储单个元素的内存空间,而数组是多个变量的集合,是一个连续的空间;但整个数组只能有 的名字。   数组内的数据都有指定的索引,从而找到数组内所指定的数据。索引的编号是从0开始的,依次递增(0,1,2,3,…),这种方式叫数值索引。格式为:数组名[索引];${ARRAY_NAME[INDEX]}。索引也支持自定…

    Linux干货 2016-08-29
  • 第八周作业

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;     在线的主机使用绿色显示;     不在线的主使用红色显示; #!/bin/bash for i in {1..254};do if ping -c 1 -w 1 192.16…

    2017-07-03

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-07 23:33

    文章思路清晰,从权限模型到特殊权限都有着自己的操作和理解。