文件权限&根目录

   1、文件权限与归属

      Linux中一切皆文件,所以使用不同的字符来进行区分。常见字符如下

-:普通文件
d:目录文件
l:链接文件
b:块设备文件
c:字符设备文件
p:管道符文件

      除此之外每个文件都有所属的所有者和所有组,同时规定了文件的所有者、所有组以及其让人对文件所拥有的可读(r)、可写(w)、可执行(x)等权限。

可读:能够读取文件的实际内容
可写:能够编辑、新增、修改、删除文件的实际内容
可执行:能够运行一个脚本程序

      对于目录而言,可读就是能读取目录内的文件;可写就是能够对目录内的文件进行新增、删除、重命名;可执行就是能进入该目录。
文件的读写执行权限可以简写为rwx也可以用数字4、2、1表示。

权限配额 文件所有者 文件所属组 其他用户
权限项 执行 执行 执行
字符表示 r w x r w x r w x
数字表示 4 2 1 4 2 1 4 2 1
      假设某文件所有者拥有读写执行权限,其所数组拥有读写权限,其他用户拥有可读权限,则该文件的权限字符表示为:rwxrw-r--,数字表示为:764,三个字符为一组,一组内可以进行计算,组与组之间不能进行计算。例文件所有者rwx权限为421数字表示为7。       任何文件的权限对于root用户都是不生效的,root拥有系统最大权限。       修改文件归属使用chown命令,格式为:`chown 所有者:所有组 文件`修改目录归属使用-R参数。在所有者和所有组之间可以使用点号(英文句号)作为间隔。       修改文件权限使用chmod命令,格式为:`chmod 权限 文件`修改目录权限使用-R参数。

      大家可以自己练习一下权限的数字表示和字符表示。把764、642、153、731转换成字符表示,把rwxrw-r--、rw--w--wx、rw-r--r--转换成数字表示。
      答案(选中文字显示):764:rwxrw-r--、642:rw-r---w-、153:--xr-x-wx、731:rwx-wx--x
rwxrw-r--:764、rw--w--wx:623、rw-r--r--:644

   2、文件的特殊权限

      SUID、SGID以及SBIT都是用chmod命令设置。

      2.1 SUID

      SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有文件所有者的权限(仅对拥有执行权限的二进制程序生效)。即只有文件所有者拥有对该文件拥有执行权限时才能正常执行。

      2.2 SGID

      SGID是参考SUID设计专门为组设置权限的权限。相比较SUID只能给文件设置权限,SGID还能给目录设置权限。

让执行者临时拥有文件所属组的权限(对拥有执行权限的二进制程序进行设置)
在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)

      2.3 SBIT

      SBIT权限可以确保用户只能删除自己的文件,而不能删除其他用户的文件。SBIT仅对目录生效,非本目录所有者,无权删除该目录下的文件,仅能删除自己创建的文件。other权限必须是7才能正常生效,否则无法创建文件。

      SUID、SGID、SBIT共同组成特殊权限位,SUID是4,SGID是2,SBIT是1。
      假设,某个文件的权限为6765,第一个数字便是特殊权限的表示位,该权限的字符表示为:rwsrwSr-x。
      SUID用s表示,文件所有者拥有执行权限用小写s;不拥有用大写s。其他两个同SUID,SGID同样用s表示,SBIT用t表示。
      即:将文件的普通权限先用字符表示出来(即rwxrw-r-x),特殊权限值为6(4+2)又因为文件所属组不拥有该文件的执行权限,所以用S表示,得6765的字符表示为rwsrwSr-x。

   3、 文件的隐藏属性

      3.1 chattr命令

      chattr命令设置文件的隐藏属性,格式为:chattr [参数] 文件
      
      为文件添加掩藏属性,则使用chattr +参数 文件;取消文件的隐藏属性,则使用chattr -参数 文件
常用的参数为i参数和a参数。对文件设置i参数,将无法对文件新型增删、改名修改数据等操作;对目录设置i参数,只能修改目录下的数据而不能建立和删除文件。对文件设置a参数,只能追加数据而不能删除或覆盖数据(追加数据不能使用vi编辑器,需要通过重定向进行追加数据);对目录设置a参数,仅允许在目录下建立和修改文件而不能删除。

      3.2 lsattr命令

      lsattr查看设置的隐藏权限,格式为:lsattr 文件
      当查阅目录的隐藏权限时使用-d参数

   4、文件控制访问列表(ACL)

      ACL是针对指定的用户或用户组设置文件或目录的操作权限。如果对目录设置了ACL,则目录中的文件就会继承目录的ACL;若针对文件设置ACL,则文件不在继承所在目录的ACL。

      4.1 开启ACL

      ACL是默认开启的,一般情况下不用手动开启,如果默认情况下没有开启的话就需要我们手动开启了。我们使用dumpe2fs -h 根目录的挂载点查看。
      临时开启ACL权限:使用mount -o remount,acl /重新挂载并加载ACL。
      永久开启ACL权限:修改fstab文件,在根目录一行defaults后加“,acl”,保存后重启系统或使用mount -o remount /重新挂载根目录。

      4.2 setfacl命令

      setfacl命令用于管理文件的ACL规则,格式为:setfacl [参数] 文件名称

参数 作用
-m 针对某一文件设置ACL权限
-R 针对某一目录的递归设置ACL权限
-b 对文件或目录取消ACL权限

      4.3 getfacl命令

      getfacl命令命令用于显示文件上设置的ACL信息 ,格式为:getfacl 文件名称

      4.4 su命令与sodu服务

      su命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下顺畅的切换到其他用户。格式为 :su [-] [用户账户]
      在不输入账户的情况下使用su命令默认切换为root账户。
      su命令与用户名之间加一个减号(-)代表着完全切换到该用户,即把环境变量也变更为该用户的信息。

      sudo服务可以把特定命令的执行权限赋予指定用户,保证普通用户在能够完成工作的基础上而不泄露root管理员密码。
      如果要对sudo服务进行配置则需要使用visudo命令对sodu服务配置文件进行修改。
      sudo命令的配置文件中大约第99行的位置有一个可以当作模板的格式,可以在它的下方进行配置。
格式:谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表
可执行的命令列表中的命令必须是绝对路径,切各个命令之间用逗号(,)做分割。

      这样就可以让普通用户使用相对应的命令了。

   5、一切从根(/)开始
      Linux系统中的一切都是从根目录开始的,并按照文件系统层次化标准(FHS)采用树形结构来存放文件,以及定义了常见目录的用途。Linux系统严格区分大小写

路径分为相对路径和绝对路径:
      绝对路径:繁琐,但不论你身处何方只要你找的东西在,根据一级一级的寻找一定能找到你想要的东西。
      相对路径:相对简洁,但以当前位置为起点,不具有普适性。

原文地址:https://www.cnblogs.com/QW-kk/p/12919525.html