ACL权限:是使用在当三种身份不够用的情况下,抛出这三种身份,为指定用户添加某目录或文件的指定权限。 可通过dump2fs命令查看分区是否支持ACL。 setfacl -m u:user1:rx /project 给用户user1对目录project的rx权限。 setfacl -m g:tgroup:rwx /project 给用户组tgroup对目录project的rwx权限。 getfacl /project 查看目录的acl权限信息。 上面的命令当给一个目录增加acl权限时,对目录下的文件是没有增加acl权限的。 所以我们就需要递归的设置acl权限:setfacl -m u:user1:rx -R /project 这样该project目录下的所有子文件也会有acl权限,但是它仍有一个问题,当在该目录下新增文件时,新增的文件并没有acl权限。所以需要设置默认acl权限,让目录下新建的子文件继承父目录的acl权限:setfacl -m d:u:user1:rx /project
文件特殊权限: SetUID 也就是对于可执行文件(命令)如果具有SetUID权限,那么普通用户再执行这个命令 的时候会被认为是该文件的所属者。 例如linux中,passwd命令就是这样: 我们可以通过修改文件权限让某个文件具有SetUID权限或者去除该权限。其实文件的权限由4位数字表示,第一位就代表SetUID(4),SetGID(2),Sticky BIT(1)。用例:chmod 4755 文件名:使文件具有SetUID权限。
让一个文件具有这种特殊权限是非常危险的,所以我们非必要不要给文件添加该种权限。例如:如果root不小心给 usr/bin/vim文件赋予了SetUID,那么所有普通用户执行vim命令的时候就被认为是root,那么它可以修改系统里任意的文件了!!这是多么的可怕! SetGID对于可执行文件的作用是和SetUID很相似的,就是普通用户执行这样的命令,它就会被默认成该命令所属组的成员。 例子: 我们知道任何用户都可以使用locate命令来搜索文件,locate命令实际上搜索的是mlocate.db这个数据库文件。 可以看到,普通用户对该文件并没有读权限。我们之所以可以搜索该数据库就是因为locate命令具有SetGID权限,我们在使用过程中相当于slocate用户组的成员,而slocate对mlocate.db具有读权限。
SetGID也可以对目录有效,此时它的作用是普通用户在该目录下创建的文件的所属组是该目录的所属组而不是该用户的初始组。
chattr修改文件属性权限; 选项:-i 对于文件不能修改,删除,只能查看。对于目录不能创建,删除文件,可以修改文件内容。 -a 对于文件只能通过echo添加和查看。对于目录相比-i也是可以创建新文件。 它的主要作用是防止一些误操作,比如把重要的文件目录设置相关权限,防止误删除。 用法:
sudo权限: root用户可以通过visudo命令赋予普通用户指定的命令权限。 例如:赋给普通用户user1命令:/sbin/shutdown -r now su -user1切换成普通用户,可以通过sudo -l查看root赋予了当前用户哪些权限。 然后,需要在命令前使用sudo来使用root赋予给我们的权限。
|