分享

9、RedHat7系列——文件权限(二)

 苏醒的贝壳 2018-05-13

一、文件的隐藏属性

隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发觉。

1、chattr命令

chattr命令用于设置文件的隐藏权限,格式为“chattr [参数] 文件”。

如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”,如果想要把某个隐藏功能移出文件,则需要追加“-参数”。

参数作用
i无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
S文件内容在变更后立即同步到硬盘(sync)
s彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)
A不再修改这个文件或目录的最后访问时间(atime)
b不再修改文件或目录的存取时间
D检查压缩文件中的错误
d使用dump命令备份时忽略本文件/目录
c默认将文件或目录进行压缩
u当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
t让文件系统支持尾部合并(tail-merging)
X可以直接访问压缩文件中的内容

示例:

创建一个abc.txt文件后删除,此时可以删除成功,再次创建abc.txt文件并为其设置不允许删除与覆盖权限后再次删除提示操作失败。

9、RedHat7系列——文件权限(二)

2、lsattr命令

lsattr命令用于显示文件的隐藏权限,格式为“lsattr [参数] 文件”。

文件的隐藏权限必须使用lsattr命令来查看。

使用lsattr查看文件隐藏权限

9、RedHat7系列——文件权限(二)

二、文件访问控制列表

一般权限、特殊权限、隐藏权限其实有一个共性—权限是针对某一类用户设置的。如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(ACL)。

基于普通文件或目录设置ACL其实就是针对指定的用户或用户组设置文件或目录的操作权限。

如果针对某个目录设置了ACL,则目录中的文件会继承其ACL;若针对文件设置了ACL,则文件不再继承其所在目录的ACL。

示例:

切换普通用户登录后尝试进入root家目录中,在没有针对普通用户对root家目录设置ACL之前提示如下:

9、RedHat7系列——文件权限(二)

1、setfacl命令

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

文件的ACL提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制,使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。其中,针对目录文件需要使用-R递归参数;针对普通文件则使用-m参数;如果想要删除某个文件的ACL,则可以使用-b参数。

示例:设置hello用户在root目录上的权限:

9、RedHat7系列——文件权限(二)

可以看出文件的权限最后一个点变成了加号,这意味着文件已经设置了ACL。

9、RedHat7系列——文件权限(二)

2、getfacl命令

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

示例:使用getfacl命令显示在root管理员家目录上设置的所有ACL信息

9、RedHat7系列——文件权限(二)

三、su命令与sudo命令

su命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户,比如从root管理员切换至普通用户;

另外,当从root管理员切换到普通用户时是不需要密码验证的,而从普通用户切换成root管理员就需要进行密码验证;

使用sudo命令把特定命令的执行权限赋予给指定用户。

sudo命令用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务。

格式为“sudo [参数] 命令名称”。

sudo服务中的可用参数以及作用:

参数作用
-h列出帮助信息
-l列出当前用户可执行的命令
-u用户名或UID值以指定的用户身份执行命令
-k清空密码的有效时间,下次执行sudo时需要再次进行密码验证
-b在后台执行指定的命令
-p更改询问密码的提示语

sudo命令具有如下功能:

  1. 限制用户执行指定的命令;

  2. 记录用户执行的每一条命令;

  3. 配置文件(/etc/sudoers)提供集中的用户管理、权限与主机等参数;

  4. 验证密码的后5分钟内(默认值)无须再让用户再次验证密码;

如果担心直接修改配置文件会出现问题,则可以使用sudo命令提供的visudo命令来配置用户权限。这条命令在配置用户权限时将禁止多个用户同时修改sudoers配置文件,

还可以对配置文件内的参数进行语法检查,并在发现参数错误时进行报错。

只有root管理员才可以使用visudo命令编辑sudo服务的配置文件。

9、RedHat7系列——文件权限(二)

在sudo命令的配置文件中,按照下面的格式填写上相应的信息

9、RedHat7系列——文件权限(二)

谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表

切换至指定的普通用户身份,此时就可以用sudo -l命令查看到所有可执行的命令

9、RedHat7系列——文件权限(二)

作为一名普通用户是肯定不能看到root管理员的家目录(/root)中的文件信息的,但是,只需要在想执行的命令前面加上sudo命令就可以了

9、RedHat7系列——文件权限(二)

如果需要让某个用户只能使用root管理员的身份执行指定的命令,切记一定要给出该命令的绝对路径,否则系统会识别不出来。

使用whereis命令找出命令所对应的保存路径

9、RedHat7系列——文件权限(二)

用户权限参数修改成对应的路径

9、RedHat7系列——文件权限(二)

保存退出,再次切换到指定的普通用户,然后尝试正常查看某个文件的内容,此时系统提示没有权限。这时再使用sudo命令就可以顺利地查看文件内容

9、RedHat7系列——文件权限(二)

添加NOPASSWD参数,使得用户执行sudo命令时不再需要密码验证,当切换到普通用户后再执行命令时,就不用再频繁地验证密码

9、RedHat7系列——文件权限(二)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多