一、文件的隐藏属性隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发觉。 1、chattr命令 chattr命令用于设置文件的隐藏权限,格式为“chattr [参数] 文件”。 如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”,如果想要把某个隐藏功能移出文件,则需要追加“-参数”。
示例: 创建一个abc.txt文件后删除,此时可以删除成功,再次创建abc.txt文件并为其设置不允许删除与覆盖权限后再次删除提示操作失败。 2、lsattr命令 lsattr命令用于显示文件的隐藏权限,格式为“lsattr [参数] 文件”。 文件的隐藏权限必须使用lsattr命令来查看。 使用lsattr查看文件隐藏权限 二、文件访问控制列表一般权限、特殊权限、隐藏权限其实有一个共性—权限是针对某一类用户设置的。如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(ACL)。 基于普通文件或目录设置ACL其实就是针对指定的用户或用户组设置文件或目录的操作权限。 如果针对某个目录设置了ACL,则目录中的文件会继承其ACL;若针对文件设置了ACL,则文件不再继承其所在目录的ACL。 示例: 切换普通用户登录后尝试进入root家目录中,在没有针对普通用户对root家目录设置ACL之前提示如下: 1、setfacl命令 setfacl命令用于管理文件的ACL规则,格式为“setfacl [参数] 文件名称”。 文件的ACL提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制,使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。其中,针对目录文件需要使用-R递归参数;针对普通文件则使用-m参数;如果想要删除某个文件的ACL,则可以使用-b参数。 示例:设置hello用户在root目录上的权限: 可以看出文件的权限最后一个点变成了加号,这意味着文件已经设置了ACL。 2、getfacl命令 getfacl命令用于显示文件上设置的ACL信息,格式为“getfacl 文件名称”。 示例:使用getfacl命令显示在root管理员家目录上设置的所有ACL信息 三、su命令与sudo命令su命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户,比如从root管理员切换至普通用户; 另外,当从root管理员切换到普通用户时是不需要密码验证的,而从普通用户切换成root管理员就需要进行密码验证; 使用sudo命令把特定命令的执行权限赋予给指定用户。 sudo命令用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务。 格式为“sudo [参数] 命令名称”。 sudo服务中的可用参数以及作用:
sudo命令具有如下功能:
如果担心直接修改配置文件会出现问题,则可以使用sudo命令提供的visudo命令来配置用户权限。这条命令在配置用户权限时将禁止多个用户同时修改sudoers配置文件, 还可以对配置文件内的参数进行语法检查,并在发现参数错误时进行报错。 只有root管理员才可以使用visudo命令编辑sudo服务的配置文件。 在sudo命令的配置文件中,按照下面的格式填写上相应的信息 谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表 切换至指定的普通用户身份,此时就可以用sudo -l命令查看到所有可执行的命令 作为一名普通用户是肯定不能看到root管理员的家目录(/root)中的文件信息的,但是,只需要在想执行的命令前面加上sudo命令就可以了 如果需要让某个用户只能使用root管理员的身份执行指定的命令,切记一定要给出该命令的绝对路径,否则系统会识别不出来。 使用whereis命令找出命令所对应的保存路径 用户权限参数修改成对应的路径 保存退出,再次切换到指定的普通用户,然后尝试正常查看某个文件的内容,此时系统提示没有权限。这时再使用sudo命令就可以顺利地查看文件内容 添加NOPASSWD参数,使得用户执行sudo命令时不再需要密码验证,当切换到普通用户后再执行命令时,就不用再频繁地验证密码 |
|