Linux系列——【文档权限】——06

1、【场景驱动学习】刚开始接触Linux系统时,一直是使用超级用户root来对文件进行操作,但又一天发现,我使用普通用户登录系统时,并不能运行甚至不能打开文件,这是什么原因呢?
答:这是因为文件权限限制的原因,Linux系统之所以安全高效,独特的文件权限设置是其中一个原因!本章也是主要对文件的权限设置进行介绍!

1. Linux系统中,主要的文件权限控制方法有以下几种:

  • 文件的"读、写、执行"[rwx]权限【常规权限设置】
  • 文件的黏着位权限【特殊权限设置】
  • 文件的acl【访问控制列表access control list】
  • 文件系统属性[chattr]权限控制
  • 磁盘挂载时的特殊权限分配 【更高层面的文件权限限制】

2. 下面将分别介绍以上几种常用的权限设置,及其注意事项

  • 【常规权限】rwx
    1.常规权限是什么,代表了什么意义,如何设置?

    • 常规权限包括了rwx,分别为读、写、执行;这三种权限代表的意义对于文档和目录的作用各不相同:
    • rwx对于文档来说分别意味着:(1)能打开文档查看文档内容;(2)能编辑文档内容(3)如果文档是可执行文件,则能执行;
    • 对于目录说来rwx分别意味着:(1)能浏览此目录下的内容【如进入目录后,可以使用ls命令列出目录中的文件信息】(2)w意味着能在此目录下创建、删除文件和修改文件名称(3)x意味能进入此目录
    • 如何设置常规文档权限:
      • 修改新建文件的默认权限:文件的最高权限为(rwxrwxrwx)777,分别对应着用户属主的权限、用户属组的权限、其他人的权限;新建的文档权限与#umask值有关,默认为022,新建文件的权限为777-022=755;但为了系统安全,所有新建的文档均没有可执行权限,所以最终的默认文档权限为:755-111=644,也就是rw_r__r__。
        在这里插入图片描述
      • 所以可以从修改umask值来设置文件的默认权限,修改umask值得方法有两种:一种是临时修改umask值:#umask 0077,那么新建的文档权限为777-077=700,700-111=600,即rw_ ___ ___;这种方法只是临时改变了umask值,系统重启后,umask值就会变回原来的0022;另一种修改umask值的方式是修改配置文件,从而达到永久修改umask值得效果,系统中与控制uamsk值的配置文件为/etc/profile和/etc/bashrc;这两个配置文件的区别是/etc/profile只在用户第一次登录时被执行,而/etc/bashrc则在用户每次登录加载Bash Shell时都会被执行。
      • chmod命令修改已有文件的常规权限设置;格式为#chmod [option] [filename|direction]常搭配的选项如下:
        • a = perm >a为all,即文件的属主、属组和其他人的权限均为perm,其中perm格式为777、740等,每个权限位是4、2、1之间的组合数
        • u [=|+|-] [rwx] >u为user属主的意思,[=|+|-]意味着可在属主原权限的基础上重新设置、增加或者减少权限
        • g [=|+|-] [rwx] >g为group,文件属组,[=|+|-]意味着可在属组原权限的基础上重新设置、增加或者减少权限
        • o [=|+|-] [rwx] >o为other,文件其他人;[=|+|-]意味着可在文件其他人原权限的基础上重新设置、增加或者减少权限
  • 【特殊权限】为什么还需要设置特殊权限呢?【特殊权限USID和GSID只对可执行文件生效】

    • 答:主要为了满足人们对文件权限的各种需求,比如一批用户想拥有文件file属组group的权限,但如果把这批用户加入到组group中,那么这批用户也就拥有了group对其他非file文件的权限,导致了这批用户的权限过大了。为了解决此问题,Linux中设置了特殊权限位,SUID是属主的特殊权限位、SGID是属组的特殊权限位和SBIT是other的特殊权限位,分别可使用4、2、1来表示。
    • 设置特殊权限位的命令格式:chmod [option] filename,常搭配的选项如下所示:
      • a+s >表示在文件属主权限的基础上增加SUID权限,那么其他非属主的用户执行此文件时,都会拥有此文件属主的权限,直到文件执行完毕;【即非属主用户会在文件执行过程中暂时性地拥有属主的权限,文件执行完成后,恢复原来权限】
      • g+s >表示在文件属组权限的基础上增加GUID权限,那么其他非属组的用户执行此文件时,都会拥有此文件属组的权限,直到文件执行完毕;【即非属组用户会在文件执行过程中暂时性地拥有属组的权限,文件执行完成后,恢复原来权限;但当用户对文件的权限 比属组的权限还要大或者相等时,用户会以自己的权限去执行文件】
      • o+s >在具有SBIT的目录下,即使使用者若具有该目录下wr权限,也只能管理自己建立的文件。
  • 【ACL访问控制列表】有时候需要对多个用户设置不一样的权限,使用常规权限或者特殊权限依然很难满足,这时候就需要使用acl权限设置来对不同用户赋予文件不同的权限;

    • 命令模式setfacl [option] [u:username|g:groupname]:[r|w|x] [directory|filename],常搭配的选项如下所示:
      • -m >增加acl权限 #setfacl -m [u:username|g:groupname]:[r|w|x] [directory|filename],其中u代表增加用户,后接指定的用户名,然后是赋予此用户的权限,最后是指定目标文件
      • -x >删除acl权限 #setfacl -x [u:username|g:groupname] [directory|filename],其中u代表用户、g为组,后接指定的用户名或者组名,最后是指定目标文件
      • -R >setfacl -m u:user01:rwx -R directory 递归赋予用户user01用户目录directory及此目录下的子目录及所有文件rwx权限【只对现有文件起作用】
      • -b >删除文件上所有的Acl权限setfacl -b filename
      • -d >设定默认Acl权限
      • 【acl控制器mask】因为acl是适用多用户对文件授权,但由于人数过多,容易出现失误,比如某个用户的权限过高;此时可以使用设置mask值来设定可以赋予的最高权限。
#setfacl -m m:rx [filename|directory] >设定文件或目录的最大acl权限

在这里插入图片描述

  • 【文件属性权限设置】Liunx中root用户的权限最大,在Linux世界中像神一样强大,但这个神却是由人来控制着,而生为人就难免会出现错误,有些错误是不能犯的。所以有什么方法来防止root用户不小心把重要配置文件删除呢?
    • 对于这个问题,可以使用文件属性权限来防止root用户意外删除重要配置文件,但这也只是防止意外删除,而不能防止root用户主动删除,毕竟神就是神,人类是无法控制的。
    • 命令格式chattr [+|-|=] [option] [file|directory],常搭配的选项如下:
      • +i >[initial原始]如果对文件设置了i属性,那么任何人不允许对文件进行删除、改名也不能添加或者修改数据 ;如果对目录设置了i属性,那么只能修改目录下文件里的数据,但不允许新建和删除文件,也不能修改文件名称
chattr +i /root/script/book_shell/

在这里插入图片描述

  • +a >[append追加]如果对文件设置了a属性,那么只能在文件中追加数据,但不能删除和修改数据;对目录设置了a属性,那么只能建立和修改文件,但不允许删除
chattr +a /root/script/book_shell
  • [如何查看目录或者文件是否设置了特殊的文件属性呢?]
    • lsattr [option] [filename|directory]常搭配的选项如下:
      • -a >显示所有文件和目录
      • -d >若目标是目录,仅列出目录属性而非子文件
        在这里插入图片描述

**【磁盘挂载分区权限设置】**本章内容过多,这一块留在"分区"应用时再做详细介绍

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值