文件的从属权限和特殊权限

基础权限

  rwx

    经过今天的洗礼,了解了文件的权限位(rwx),而权限对于目录和文件有着不同的意义

    使用ls -l 命令后可以看到

    -rw-r–r–. 1 root root 10033 8月   2 03:44 install.log.syslog

    横线部分是十个位置,-代表文件类型,剩余九位,每三位为一组,从左到右分别是文件的属主

    (u)rwx,文件的属组(g)rwx,其他用户(o)rwx,

    rwx:读,写,执行

    rwx对文件

    r,如果一个用户对一个文件拥有“读”权限后,代表此用户可以浏览这个文件的内容

    w,如果一个用户对一个文件拥有“写”权限后,代表此用户可以修改和删除这个文件的内容,但是不能删除这个文件本身

    x,如果一个用户对一个文件拥有“执行”权限后,代表此用户可以运行此文件(这个相当危险的,不建议随便给用户x权限)

    rwx对目录

    r,如果一个用户对一个目录拥有“读”权限后,代表此用户可以浏览这个目录中的文件列表

    w,也不可以修改这个目录中的文件内容

    x,如果一个用户对一个目录拥有“写”权限后,代表此用户可以在这个目录中创建新的文件与目录;删除已经存在的文件与目录(不论该文

    件的权限为何!)将已存在的文件或目录进行更名;搬移该目录内的文件、目录位置。对目录来讲不建议随便给一个用户用于w的权限

    如果一个用户对一个目录拥有“执行”权限后,代表此用户可以进入这个目录中,并且在拥有读,写权限的情况下可以浏览目录中的文件列

    表,也可以在目录中创建新文件,如果一个用户对一个目录没有执行权限的话,那么这个用户就无法cd进此目录,而且也无法执行读,写,

    即使是在对此目录拥有读写权限的情况下也罢,对目录来讲建议给用户x权限

   

  相关操作命令:

    赋权

    chmod u=rwx,g=rw,o=x file

    授权

    chmod u+rwx,g+rwx,o+rwx file

    八进制

     每个权限组的r=4,每个权限组的w=2,每个权限组的x=1

    chmod 660 file

默认权限

 umask

    umask是新建文件的默认权限,

   umask

    对文件来将666-umask(默认002)=文件的权限(普通用户),666-umask(默认022)=文件的权限(管理员)

    对目录来讲777-umask(默认002)=目录的权限(普通用户),777-umask(默认022)=目录的权限(管理员)

    相关操作命令

    直接键入 umask 可以查看umask值    

    umask -S 模式方式显示

    [root@ali ~]# umask -S

    u=rwx,g=rx,o=rx

    umask -p 输出,可被调用

    [root@ali ~]# umask -p

    umask 0022

    修改方法

    umask 数值(八进制)

    umask u=rw,g=r,o=

    全局设置:/etc/bashrc,用户设置:~/.bashrc

    如果所得结果某位存在执行权限(奇数),则将其权限加1

三种特殊权限

    

  SUID

    每个程序运行成进程时,这个进程以发起者身份运行,就是发起这个进程的用户,而不是这个程序的属主,应用在文件上,如果一个程序拥

    有了suid权限,那么每个用户运行此程序时都是以这个文件的属主的身份运行的但是如果这个程序拥有SUID特权的时候,这个进程运行的身

    份就不是发起这个进程的用户了,而是这个程序文件的属主。

   相关命令:

     chmod u+s file 增加suid

    chmod u-s file 撤销suid

    占位在属主的x权限位,如果属主原来没有x权限则表现为大写S

  SGID

    用在目录的属组权限上,如果此目录拥有SGID权限之后,用户在此目录下新创建的文件的属组将会是这个目录的属组,而不是创建这个文件

    的用户的私有组,如果一个目录拥有了sgid权限,那么每一个用户进入到此目录创建文件的属组会是这个目录的属组,而不是创建文件的用

    户的属组组

   相关命令:

    chmod g+s file 增加sgid

    chmod g-s  file 撤销sgid

    占位在属组的x权限位,如果属组原来没有x权限则表现为大写S

  STICKY

    也用在目录上,如果此目录拥有STICKY权限的话,用户在此目录只能删除自己创建(自己为属主)的文件,而不能删除其他用户创建的文

    件,即便是用户对此目录有写的权限也不行。

   相关命令:

    chmod o+t dir 增加sticky

    chmod o-t  dir 撤销sticky

    占位在其他用户的x权限位,如果其他用户原来没有x权限则表现为大写T

    特殊权限的数字赋权法

    chmod 4777 ,可以把每一个特殊权限位再看成rwx(及suid,sgid,sticky),操作在原有的传统数字权限位前

    

mask和facl

    mask是创建文件后修改文件的权限的高压线,所有通过facl修改的文件的权限除了文件所有者和other以外,所有人都不能超过mask的权限

  facl :访问控制列表

    如果文件的属主,属组,其他权限设置不能满足你,假如你只想针对某一个或者多个用户设定文件权限的话,facl可以满足你,当一旦设置

    facl权限后 属组的权限将会变成mask的权限,但是mask不会给用户添加原来没有的权限(当文件的属主的权限是读,写,而mask的权限是

    读,写,执行,这种情况下mask不会给用户添加执行权限的)

   facl相关操作命令

    facl

    getfacl file 查看文件的facl列表

    赋权给用户

    setfacl -m u:username:mode file

    setfacl -M acl.txt file(批量添加)

    赋权给组

    setfacl -m g:groupname:mode file

    撤销赋权

    setfacl -x u:username file

    setfacl -x g:groupname file

    setfacl -X acl.txt file(批量删除)

     setacl  -b file 彻底清空所有facl信息

    占位在其他用户的x权限后,以+号表示

    facl生效顺序:所有者,自定义用户,自定义组,其他人

    facl的备份和恢复命令

    先使用getfacl -R file|dir读去列表然后>重定向保存到文件a.txt

    然后setfacl -k 删除原文件facl列表

    再然后setfacl -R –set-file=a.txt读会facl列表,完整命令示例如下

    [root@ali /]# getfacl -R testdir/ > acl.txt

    [root@ali /]# setfacl -k /testdir/

    [root@ali /]# setfacl -R –set-file=acl.txt /testdir/

   mask对facl的高压控制

    [root@ali ~]# getfacl /testdir/testdir

    getfacl: Removing leading '/' from absolute path names

    # file: testdir/testdir

    # owner: root

    # group: root

    user::rw-

    user:user1:rwx #effective:r–

    group::r–

    group:g1:rw- #effective:r–

    mask::r–

     other::—      此部分往上表示针对此目录执行的ACL权限  ,操作命令setfacl -m m::rwx dir

    default:user::rwx

    default:user:user1:rw-

    default:group::r-x

    default:group:g1:—

    default:mask::rwx

    default:other::r-x   此部分表示默认针对此目录下将要新建的文件执行ACL权限,操作命令 setfacl -m d:u:user1:rwx dir  

文件的特定特殊属性

    chattr:功用是让你的文件避免被误操作

    chattr +A file 锁定文件的时间戳

    +i file 不能删除,更改,改名

    +a file 只能增加

    lsattr 可以查看文件被添加的特殊属性

    我们说的权限是有针对文件系统的,比如在vfat分区文件下,不支持linux的权限,很多命令对其不起作用

原创文章,作者:M20-1马星,如若转载,请注明出处:http://www.178linux.com/28562

(0)
M20-1马星M20-1马星
上一篇 2016-08-04 14:39
下一篇 2016-08-04 14:39

相关推荐

  • Linux系统启动流程、内核及模块管理、linux启动故障排除和自制linux

    Linux系统启动流程、内核及模块管理 Linux系统的组成部分组成:内核+根文件系统(kernel+rootfs)内核(kernel): 进程管理(创建、调度、销毁等)、内存管理、网络管理(网络协议栈)、驱动程序、文件系统、安全功能IPC:Inter Process Communication机制本地进程间通信机制:消息队列、semerphor、shm(共…

    2016-09-29
  • LVS四种模式

    马哥教育网络班18期 第17周课程练习1 LVS工作模式图解 LVS-NAT模式 TCP请求报文的目的IP地址被Director调度服务器重写为RIP后发送给RS,RS的默认网关配置为Director的DIP,Director接受到RS响应报文后修改源IP地址发送给用户IP RS网关指向DIP,RIP,DIP和RIP必须在同一网段内 Director转发请求…

    Linux干货 2016-06-23
  • MySQL复制详解

    目录:        1、简介        2、原理        3、常见复制架构        4、一主一丛异步复…

    Linux干货 2015-10-01
  • 练习正则表达式

        正则表达式可以通过元字符(规则)来匹配查找相关的的字符集合。他与通配符是有区别的。而且相关的使用工具对正则表示的元字符的是有区别的。     首先我们先来了解下常用的元字符及含义(并不是所有的元字符) 字符匹配       &nbs…

    Linux干货 2015-04-15
  • LVM详解

    一、概述     LVM全称为Logical Volume Manager,即逻辑卷管理器。LVM可以弹性的调整文件系统的容量,可以将多个物理分区整合在一起,并且根据需要划分空间或动态的修改文件系统空间。     LVM有两个版本: lvm,lvm2 二、LVM的相关概念   &…

    Linux干货 2015-04-28
  • while循环中的一个常见问题

    在楼主刚刚学习接触while循环的时候,发现了一个问题,在while循环内部对变量赋值、定义变量、数组定义等等环境,在循环外面失效。 一个简单的测试脚本如下: 执行结果证明,$new_var的结果是空值。在google上查了查,才发现问题出在管道上。 先看看下面的内容。 while循环的写法有好几种,它的语法结构为: while test_cmd_list;…

    2017-08-26