文件权限

一、文件权限

       linux系统中文件众多,针对不同的文件面向的对象不同,因此对其设置的权限各不相同,那么我们来对文件设置权限呢?

        1470484917439742.jpg

            如上图所示,文件的权限主要分三个部分:r、w、x

                                文件面向的对象有三类:属主,数组和other

           rwx权限分别对于应文件和目录的意义如下:

            对于文件:

                            r:可以ls,可以cat

                            w:可以修改文件中的内容,可以ll,如果其父目录具有wx权限可以删除文件

                            x:可以执行二进制程序

            对于目录:

                            r:可以ls

                            w:可以在目录中创建文件,但需要配合x使用

                            x:可以cd到目录,可以访问目录中的文件

  

        相关命令:chmod    chown   chgrp

        chmod:修改权限

                格式:

                          chmod [option] file | dir

                          chmod u+rwx file

                         chmod a+rwx file    a—-ugo

                          chmod u=rwx file

                          chmod 777 file

                注意:当我们执行给文件添加X权限时,如果该文件之前权限有一位x,则可以添加x权限,如果一位x权限都没有,则不能添加x权限。

                          目录不受影响

                               rwxr–r– –>chmodrwxrwxrwx
                               ——— –>rw-rw-rw-

                选项:

                          -R 递归

                          –reference=RFILE FILE…   参考RFILE文件的权限,修改FILE的权限与RFILE一致

        chown:修改属主和属组

                格式:

                           chown  tom:harry f1

                           chown tom f1       修改属主为tom

                           chown tom: f1      修改属主和属组为tom

                           chown :harry f1    修改属组为tom

        chgrp:将文件的属组

        umask:我们发现在我们创建文件或目录时,他们都会有一个默认的权限,这个权限就是通过umask来设置的,umask这个值管理员默认是022,普通用户是002,当我们在配置文件(/etc/profile、/etc/bashrc、也可以是用户自己的.bashrc)中配置umask的值时,就可以定义用户创建文件或目录时的默认权限,也可以说是限制了ugo的权限。

                管理员文件的权限和umask的关系为:666-022=644,如果计算结果中有基数,则加1,例如666-123=543 ->644,这里加1主要是为了避免给用户提供文件的执行权限,将执行权限屏蔽。

                管理员目录的权限和umask的关系为:777-022=755

                umask -S  查看文件夹的默认权限

                umask -p 输出可以被调用

                umask # 可以设置默认值的大小临时生效

二、文件系统的特殊权限

        当我们用tom的身份执行cat /etc/passwd 时,我们的匹配权限的流程是,先匹配/etc/passwd 这个文件的属主,该文件的数主是root与tom不是同一个,不匹配,接着匹配文件的数组,发现也不匹配,接下来就到other的权限了,我们发现other的权限为r,所以我们就以other的身份来访问/etc/passwd 这个文件了,这里需要注意的是,当我们从前往后匹配的时候,如果匹配到权限就不往后面匹配了,就算后面的数组或者other的权限比数主大,也不匹配。

            tom@cenots6.8  ~ # ll /etc/passwd
            -rw-r--r--. 1 root root 1849 8月   6 17:44 /etc/passwd
            tom@cenots6.8  ~ # cat /etc/passwd

特殊权限  

suid

            面向对象:二进制程序 

            格式:chmod u+s file  、 chmod 4### file

            作用:用户发起进程访问文件时,不在是以用户自己的身份来访问,而是以进程属主的身份来访问。        

            应用场景:passwd 所有用户都需要执行的二进制程序,直接给管理员的程序,不用单独给某些用户添加加权限。

             -rwsr-xr-x. 1 root root 30768 11月 24 2015 /usr/bin/passwd   —–此时我们就是以passwd的数主roor身份运行,而不是当前用户的身份。

        sgid

             面向对象:文件、目录

            格式: chmod g+s file | dir   、 chmod 2### file | dir

             作用:

                    目录:用户在该目录下创建文件时,文件的属组不在是以自己的身份创建,而是以该目录数组的身份创建。

                    文件:用户发起进程访问文件时,不在是以用户自己的身份来访问,而是以进程属组的身份来访问。

             应用场景:

                    目录:比如组内同事,以某一特定的权限共享将一些文件或目录给大家,这样避免单独给多个文件分别设置权限。

        sticky

            面向对象:目录 

            格式:chmod o+t dir   、chmod 1### dir

            作用:用户在该目录下可以自由的创建改文件,但是不能删除非自己创建的文件

            应用场景:/tmp 所有用户都可以编辑,但是不能删除别人的文件

    注意:在给文件添加uid gid sticky位后,如果对应的位为S或T,则表示该文件之前具有x权限,如果对应的对时s或t,则表示文件没有x权限。

三、访问控制列表

        通常我们访问文件时,是以属主、属组或其他的身份访问的,当我们想单独给某一个用户设定权限时,可通过ACL访问控制列表来进行设置。

        相关命令:setfacl 、getfacl 、mask

        setfacl:

                选项:

                    -Rm(递归指定权限):u(指定用户):user1(用户名):rwx(权限) dir   

                    -x(取消权限):g(指定组) file | dir

                    -M file.txt  file|dir –>   文件格式:u:wang:0         指定文件中用户或组acl权限
                                                                    u:wangcai:rw
                                                                    g:it:rw

                     -X file.txt file|dir                                                   取消文件中用户或组acl权限

                    -x:d:u:user:rwx                                            对新建的文件具有的acl权限

                    -b file | dir:清除所有acl权限

                    -k file | dir:清除默认acl权限

                    –set选项会吧原有的acl项都删除,用新的替代,需要注意的时一定要包含ugo的设置,不能像-m一样添加acl就可以    

                            setfacl –set u::rw,u:wang:rw,g::r,p::- file1                    

    

    getfacl file | dir:查看文件或目录的acl权限

    getfacl -R dir > acl.txt    将dir目录及其子目录的acl权限记录到acl.txt文件中

    getfacl file1| setfacl –set-file=- file2  复制file1的acl权限给file2

       mask:是在指定给某些用户或者组设置ACL权限时,针对除了属主和other之外的人,其中
包括属组和添加ACL的用户和组,限制了他们的权限,不能超过mask的权限,mask在使用时需要注意的是,当我们设置了ACL权限时,如果设置组的权
限chmod g=rw file|dir,等同于设置了mask的权限,此时所有设置了ACL权限的人和文件或目录的数组都会改变。

       ACL文件上的group权限是mask 值(自定义用户,自定义组,拥有组的最大权限) ,而非传统的组权限,改变group权限,mask也会变。
       默认ACL权限给了x,文件也不会继承x权限,这就是为什么针对file文件给user1用户指定rwx权限时,我们getfacl file查看mask权限为rw-的原因。

        mask的设置方法:setfacl -m m::rw file

                                    setfacl -m mask::rwx file

    当我们通过tar命令打包文件时,是不能像cp -p|-a 一样保存元数据属性,我们可以采取如下备份和恢复访问控制列表的方法:

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

     设定文件特定属性
            chattr +A 锁定不能修改时间
                       -A 解锁
                      +i 不能更改删除改名 只能读
                      +a 只能修改内容
            lsattr 显示特定属性(chattr都设置了那些属性)

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

(0)
NarutoNaruto
上一篇 2016-08-08 09:22
下一篇 2016-08-08 09:22

相关推荐

  • N25第二周作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。     其常用的有: touch、stat、rm、cp、mv、install touch 命令    命令格式: touch [OPTION]… File… 命令参数: -a&n…

    Linux干货 2016-12-12
  • CIDR,子网掩码以及划分子网超网

    对于中小企业,假如有两千台机器,给他分个B类地址,6万多个,太浪费了,分个C类地址,一个C类地址254个,又不够,又得多申请几个,所以A,B,C类IP地址划分太过僵硬,很不灵活,因此又提出无类域间路(CIDR)由划分IP地址的方法。 无类域间路由(CIDR) 传统划分IP地址的方法都是8位划分的,要不就是前8位网络ID,后24位主机ID;或前16位网络ID,…

    2017-09-16
  • 8月5日第七节课作业

    一、当天练习 1、找出ifconfig命令结果中本机的所有IPv4地址 2、查出分区空间使用率的最大百分比值 3、查出用户UID最大值的用户名、UID及shell类型 4、查出/tmp的权限,以数字方式显示 5、统计当前连接本机的每个远程主机IP的连接数,并按从大 到小排序 1、显示/proc/meminfo文件中以大小s开头的行;(要求:使 用两种方式) …

    Linux干货 2016-08-08
  • 起航——学习Linux工具之VMware Workstation

    一:安装VMware(Windows平台) 二:创建一台虚拟机 到此为止我们就创建了一个拥有一颗CPU、1GB内存和一块20GB硬盘的虚拟机,接下来就可以愉快的安装操作系统了 ^_^  

    2018-03-26
  • 马哥教育网络20期第七周课程练习

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; fdisk /dev/sdb ; mke2fs -t ext4 -b 2048 -L MYDATA -m 2 –O acl /dev/sdb1 (2) 挂载至/data/mydata目录,要求挂载…

    Linux干货 2016-08-15
  • Linux 计划任务快速理解入门

    计划任务简单来说是一个我们规定的时间去执行我们需要的脚本、命令及需要Linux做的事情。 以前写过一个脚本,由于当时没有学过计划任务,所以写起来特别痛苦,该脚本的需求是每天晚上11:00 备份/etc目录 当时特别小白,于是这么写的: VimrebootScript ‘ #!/bin/bash whiletrue;do If [ -d/app/e…

    Linux干货 2017-05-15