LINUX企业运维 April 04, 2020

十七、Linux文件执行、读写权限管理

Words count 11k Reading time 10 mins. Read count 0

十七、Linux文件执行、读写权限管理

权限设置相关命令

  chmod 可以对文件进行修改权限操作。命令格式:chmod + 用户+权限

  chown 可以修改文件的所有者和所有组。chown + 权限+用户名:组 + 文件

  chmod 也可以使用数字代表相关权限,r:4 , w:2 ,x 1,chmod 764 代表的权限就是:rwx rw- x–-

文件权限

  文件属性


  文件属性操作

    多chown设置文件的所有者

    多chgrp设置文件的属组信息

修改文件属主和属组

  修改文件的属主chown

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

  用法:

    OWNER

    OWNER: GROUP

    :GROUP

    命令中的冒号可用.替换

    -R: 递归

    chown [OPTIONJ... --reference=RFILE FILE…

  修改文件的属组:chgrp

    chgrp [OPTIONJ...GROUPFILE…

    chgrp [OPTION]...--reference=RFILEFILE…

    -R递归

文件权限

  文件的权限主要针对三类对象进行定义

    owner: 属主,u

    group: 属组,g

    other: 其他,0

  每个文件针对每类访问者都定义了三种权限

    r: Readable

    w: Writable

    x:eXcutable

  文件:

    r: 可使用文件查看类工具获取其内容

    w: 可修改其内容

    x:可以把此文件提请内核启动为一个进程

  目录:

    r: 可以使用ls查看此目录中文件列表

    w: 可在此目录中创建文件,也可删除此目录中的文件

    x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录

    X:只给目录x权限,不给文件x权限

文件权限操作

  文件权限(rwx|X)


文件权限操作命令

  chmod

八进制数字

  --- 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-----<br>
    755: rwxr-xr-x<br>

修改文件权限

  chmod [OPTION]… OCTAL-MODE FILE…

    -R: 递归修改权限

    chmod [OPTION]...MODE[,MODE]...FILE..

  MODE:

  修改一类用户的所有权限:

  u=   g=   o=   ug=   a=   u=  ,g=  

  修改一类用户某位或某些位权限

  u+   u-   g+   g-   o+   o-   a+   a-   +   -

  chmod [OPTION]...--reference=RFIL EFILE…

    参考RFILE文件的权限,将FILE的修改为同RFILE

权限设置示例

  chgrp sales testfile

  chownm root:admins testfile

  chmod u+wx,g-r,o=rx file

  chmod –R g+rwX/textdir

  chmd 600 file

  chown mage testfile

新建文件和目录的默认权限

  umask值可以用来保留在创建文件权限

  新建FILE权:666-umask

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

  新建DIR权限:777-umask

  非特权用户umask是002

  root的umask是022

  umask:查看

  umask#:设定

    umask 002

  umask -S模式方式显示

  umask -P 输出可被调用

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

Linux 文件系统上的特殊权限

  SUID,SGID,Sticky

  三种常用权限:r,w,x,user,group,other

  安全上下文

  前提:进程有属主和属组;文件有属主和属组

  (1)任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限

  (2)启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组

  (3)进程访问文件时的权限,取决于进程的发起者

    (a)进程的发起者,同文件的属主:则应用文件属主权限

    (b)进程的发起者属于文件属组;则应用文件属组权限

    (c)应用文件”其它”权限

可执行文件suid权限

  任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

  启动为进程之后,其进程的属主为原程序文件的属主

  SUID只对二进制可执行程序有效

  SUID设置在目录上无意义

  权限设定:

    chmod u+s FILE…

    chmod u-s FILE…

可执行文件sgid权限

  任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

  启动为进程之后,其进程的属组为原程序文件的属组

  权限设定:

    chmod g+s FILE…

    chmod g-s FILE…

目录上的sgid权限

  默认情况下,用户创建文件时,其属组为此用户所属的主组

  一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组

  通常用于创建一个协作目录

  权限设定:

    chmod g+s DIR…

    chmod g-s DIR…

Sticky 位

  具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权

  在目录设置Sticky位,只有文件的所有者或root可以删除该文件

  sticky设置在文件上无意义

  权限设定

    chmod o+t DIR…

    chmod o-t DIR…

  例如

    ls -ld /tmp drwxrwxrwt 12 root root 4096 Nov 2 15:44/tmp

特殊权限数字

  SUID SGID STICKY

    000 0

    001 1

    010 2

    011 3

    100 4

    101 5

    110 6

    111 7

  chmod 4777 /tmp/a.txt

权限位映射

  SUID: user,占据属主的执行权限位

    s: 属主拥有x权限

  S: 属主没有x权限

  SGID: group,占据属组的执行权限位

    s: group拥有x权限

    S: group没有x权限

  Sticky: other,占据other的执行权限位

    t: other拥有x权限

    T:other没有x权限

设定文件特定权限

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

  chattr +a只能追加内容

  lsattr显示特定属性

访问控制列表

  ACL:Access Control List,实现灵活的权限管理

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

  CentOS7默认创建的xfs和ext4文件系统具有ACL功能

  CentOS7之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加

    tune2fs –o acl/dev/sdb1

    mount –o acl/dev/sdbl /mnt/test

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

访问控制列表

  为多用户或者组的文件和目录赋予访问权限rwx

  mount –o acl/directory

  getfacl file | directory

  setfacl –m u:wang:rwx file | directory

  setfacl –Rm g:sales:rwX directory

  setfacl -M file.acl file directory

  setfacl -m g:salesgroup:rw file | directory

  setfacl –m d:u:wang:rx directory

  setfacl –x u:wang file | directory

  setfacl -X file.acl directory

  ACL文件上的group权限是mask值(自定义用户,自定义组,拥有组的最大权限),而非传统的组权限

  getfacl可看到特殊权限:flags

  通过ACL赋予目录默认x权限,目录内文件也不会继承x权限

  base ACL不能删除

  setfacl –k dir删除默认ACL权限

  setfacl –b file1清除所有ACL权限

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

  mask只影响除所有者和other的之外的人和组的最大权限

  Mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission)

    用户或组的设置必须存在于mask权限设定范围内才会生效setfacl-m mask::rx file

  –set选项会把原有的ACLI.页都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以

  示例:

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

  备份和恢复ACL

  主要的文件操作命令cp和mv都支持ACL,只是印命令需要加上 -p参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息

  getfacl -R/tmp/dirl>acl.txt

  setfacl-R -b/tmp/dirl

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

  setfacl—restore acl.txt

  getfacl-R /tmp/dir1

0%