大型企业网站建设方案,企业在网站建设上的不足,深圳市罗湖区住房和建设局官网,淘宝运营公司哪家好文件的特殊权限
在复杂多变的生产环境中#xff0c;单纯设置文件的rwx权限无法满足我们对安全和灵活性的需求#xff0c;因此便有了SUID,SGID,SBIT的特殊权限位。这是一种对文件权限进行设置的特殊功能#xff0c;可以与一般权限同时使用#xff0c;以弥补一般权限不能实现…文件的特殊权限
在复杂多变的生产环境中单纯设置文件的rwx权限无法满足我们对安全和灵活性的需求因此便有了SUID,SGID,SBIT的特殊权限位。这是一种对文件权限进行设置的特殊功能可以与一般权限同时使用以弥补一般权限不能实现的功能。
SUID
SUID是一种对二进制程序进行设置的特殊权限。可以让二进制程序的执行者临时拥有属主的权限仅对拥有执行权限的二进制程序有效。
例如
所有用户都可以执行passwd命令来修改自己的用户密码而用户密码保存在/etc/shadow文件中。仔细查看这个文件就会发现它默认权限是000也就是说除了root管理员外所有用户都没有查看或编辑这个文件的权限。但是在使用passwd命令时如果加上SUID特殊权限位就可让普通用户临时获得程序所有者的身份把变更的密码信息写入到shadow文件中。
SGID
SGID主要实现如下两种功能
①让执行者临时拥有属组的权限对拥有执行权限的二进制程序进行设置
②在某个目录中创建的文件自动继承该目录的用户组只可以对目录进行设置。
SGID的第一种功能是参考SUID而设计的不同点在于执行程序的用户获取的不再是文件所有者的临时权限而是获取到文件所属组的权限。举例来说在早期的Linux系统中/dev/kmem是一个字符设备文件用于存储内核程序要访问的数据权限为
cr--r----- 1 root system 2, 1 Feb 11 2017 kmem
除了root管理员或属于system组成员外所有用户都没有读取该文件的权限。由于在平时我们需要查看系统的进程状态为了能够获取到进程的状态信息可在用于查看系统进程状态的ps命令文件上增加SGID特殊权限位这样一来由于ps命令被增加了SGID特殊权限位所以当用户执行该命令时也就临时获取到了system用户组的权限从而可以顺利地读取设备文件了。
前面我们提到每个文件都有其归属的所有者和所属组当创建或传送一个文件后这个文件就会自动归属于执行这个操作的用户即该用户是文件的所有者如果现在需要一个部门内设置共享目录让部门内所有人员都能够读取目录中的内容那么就可以创建部门共享目录后在该目录上设置SGID特殊权限位。这样部门内的任何人员在里面创建的任何文件都会归属于该目录的所属组而不再是自己的基本用户组。此时我们用到的就是SGID第二个功能即在某个目录中创建的文件自动继承该目录的用户组只可以对目录进行设置 在使用上述命令设置好目录的777权限确保普通用户可以向其中写入文件并为该目录设置了SGID特殊权限位后就可以切换一个普通用户然后尝试在该目录中创建文件并查看新创建的文件是否会继承新创建的文件所在的目录的所属组名称 除了上面提到的SGID的这两个功能我们再简单学习两个权限的命令chmod和chown
chmod命令是一个非常有用的命令能够用来设置文件或者目录的权限。
格式为chomd 【参数】权限 文件或目录名称
如果要把一个文件的权限设置成其所有者可读可写可执行、所属组可读可写、其他人没有任何权限则相应的字符法表示为rwxrw----其对应的数字法表示为760.
通过前面的学习可以体会到数字法的简捷度 除了设置文件或目录的权限外还可以设置文件或目录的所有者和所属组这里使用的命令为chown。
其格式为 chown 【参数】所有者所属组 文件或目录名称
chmod和chown命令是用于修改文件和权限的最常用的命令
它们还有一个特别的共性就是针对目录进行操作时需要加上大写参数 -R 来表示递归操作即对目录内所有的文件进行整体操作。 SBIT
SBIT特殊权限位也可以称之为特殊权限位之粘滞位
SBIT特殊权限位可确保用户只能删除自己的文件而不能删除其他用户的文件。
与前面所讲的SUID和SGID权限显示方法不同当目录被设置SBIT特殊权限位后文件的其他人权限部分的x执行权限就会被替换成t或者T原本有x执行权限则会写成t原本没有x执行权限则会被写成T 其实文件是否被删除并不取决于自身的权限而是看其所在目录是否有写入权限。我们切换到另外一个普通用户然后尝试删除这个其他人创建的文件就会发现即便读、写、执行权限全开但是由于SBIT特殊权限位的缘故依然无法删除这个文件 当然要是也想对其他目录来设置SBIT特殊权限位用chomd命令就可以了。对应的参数ot代表设置SBIT粘滞位权限 文件的隐藏属性
chattr命令
chattr命令用于设置文件的隐藏权限
格式位 chattr 【参数】文件
如果想要把某个隐藏功能添加到文件上则需要再命令后面追加“参数”如果想要把某个隐藏功能移出文件则要追加“-参数”。
chattr命令可供选择的隐藏权限参数非常丰富
参数作用i无法对文件进行修改若对目录设置了该参数则仅能修改其中的子文件内容而不能新建删除文件a仅允许补充内容无法覆盖/删除内容S文件内容在变更后立即同步到硬盘syncs彻底从硬盘中删除不可恢复0填充原文件所在的硬盘区域A不再修改这个文件或目录的最后访问时间b不再修改文件或目录的存取时间D检查压缩文件中的错误d使用dump目录备份时忽略本文件/目录c默认将文件或目录进行压缩u当删除该文件后依然保留其在硬盘中的数据方便日后恢复t让文件系统支持尾部合并tail-mergingx可以直接访问压缩文件中的内容我们来简单实验一下
我们先删除一个普通文件在删除一个加权的普通文件作为对比 lsattr命令
lsattr命令用于显示文件的隐藏权限
格式为 lsattr 【参数】 文件
在Linux系统中文件的隐藏权限必须使用lsattr命令来查看平时使用的ls之类的命令则看不出细节 文件访问控制列表
权限一般是针对某一类用户设置的。
如果希望对某个指定的用户进行单独的权限控制那么就需要用到文件中的访问控制列表ACL了。通俗来讲基于普通文件或目录文件设置ACL其实就是针对指定的用户或用户组设置文件或目录的操作权限。另外。如果针对某个目录设置ACL则目录中的文件就会继承其ACL若针对文件设置了ACL则文件不再继承其所在目录的ACL。
我们来简单实验一下看看效果 setfacl命令
setfacl命令用于管理文件的ACL规则
格式为 setfacl 【参数】文件名称
文件的ACL提供的是在所有者、所属组、其他人的读/写/执行的权限之外的特殊权限控制使用setfacl命令可以针对单一用户或者用户组单一文件或者目录来进行读/写执行权限的控制。其中针对目录文件需要用到-R递归参数针对普通文件则使用-m参数如果想要删除某个文件的ACL则可以使用-b参数
我们来简单演示一下设置root目录上的权限 常用的ls命令是看不到ACL表的信息的但却可以看到文件的权限最后一个点.变成加号这就意味着该文件已经设置了ACL了 getfacl命令
getfacl命令用于显示文件上设置的ACL信息
格式为getfacl 文件名称
Linux系统中的命令有一定的规律
设置ACL setfacl
查看ACL getfacl su命令和sudo命令
su命令可以解决切换用户身份的需求 su - 用户名 之间的减号-代表完全切换到新的用户
即把环境变量信息也变更为新用户的相应信息而不是保留原有的信息。
root管理员切换到普通用户是不需要密码的而普通用户切换到root管理员则需要密码
sudo命令用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务
格式 sudo 【参数】命令名称
参数作用-h列出帮助信息-l列出当前用户可执行的命令-u 用户名或UID值以指定的用户身份执行命令-k清空密码的有效时间下次执行sudo时需要再次进行密码验证-b在后台执行指定的命令-p更改询问密码的提示语
sudo命令有以下几个功能
①限制用户执行指定命令
②记录用户执行的每一条命令
③配置文件/etc/sudoers提供集中的用户管理、权限和主机等参数
④验证密码的后5分钟内默认值无须再让用户再次验证密码
如果担心直接修改配置文件会出现问题我们可以使用sudo命令提供的visudo命令来配置用户权限。
这条命令在配置用户权限时将禁止多个用户同时修改sudoers配置文件还可对配置文件内的参数进行语法检查并发现参数错误时进行报错。
只有root管理员才可以使用visudo命令编辑sudo服务的配置文件
[rootDongFang ~]# visudo 我们切换到普通用户执行sudo -l 查看所有可执行命令下面验证的是该普通用户的密码而不是root管理员的密码 作为一个普通用户是肯定看不到root用户的家目录的但是经过修改配置文件后我们只需要在想执行的命令前面加上sudo命令就可以了 ALL参数不太合适因此只能赋予普通用户具体的命令以满足工作的需求这也受到了必要的约束
如果需要让某个用户只能使用root管理员的身份执行指定的命令切记一定要给出该命令的绝对路径
否则系统识别不出来我们可以先使用whereis命令找出命令所对应的保存路径然后把配置文件的用户权限参数修改成相应的路径即可 每次我们使用sudo前缀使用命令时。总是要验证普通用户的密码接下来我们也可以解决这个繁琐的步骤 验证密码这个问题在Linux8上并未成功上图解决频繁验证密码的方法是7版本或许有不同把另外有大神发现了错误请在评论区留言。学习学习