linux权限管理( 二 )


命令
作用
结果权限
chmod o-r a.file
取消其他人的可读权限
rw-rw---
chmod g-w a.file
取消组的写入权限
rw-r--r--
chmod ug+w a.file
赋予用户和组写入权限
rwxrwxr--
chmod o+w a.file
赋予其他人写入权限
rw-rw-rw-
chmod go-rwx a.file
取消组和其他人的阅读、写入和执行权限
rw-------
chmod a-w a.file
取消所有人的写入权限
r-- r-- r--
chmod uo-r a.file
取消用户和其它人的阅读权限
-w-rw--w-
chmod go=rw a.file
将组和其他人的权限设置为阅读和写入
rw-rw-rw-
使用数字的表示方式类似chmod 755 a,执行完成后a这个文件的权限对应就是 -rwxr-xr-x,这是文件权限的两种修改方式,如果你想修改文件的所有者和所有者组需要使用的命令就是chown,chgrp
[root@localhost test]# ll总用量 0-rw-r--r-- 1 root root 0 10月 18 01:26 file1[root@localhost test]# chown oracle file1[root@localhost test]# ll总用量 0-rw-r--r-- 1 oracle root 0 10月 18 01:26 file1[root@localhost test]# chgrp oracle file1[root@localhost test]# ll总用量 0-rw-r--r-- 1 oracle oracle 0 10月 18 01:26 file1这里,我们涉及到了三条与权限修改相关的命令
操作
可以执行的用户
chmod
Root用户和文件的所有者
chgrp
Root用户和文件的所有者(必须是组成员)
chown
只有root用户
以上是三种基本权限 -R
文件或目录的默认权限每一个新产生的文件都会有一个默认的权限,这个权限是通过系统中的umask来控制的
文件的最大权限是666
目录的权限是777
使用umask查看
二、特殊权限特殊权限的介绍之前我们提到了特殊权限有三个,这三个特殊权限是在可执行程序运行时影响操作权限的,它们分别是SUID,SGID,sticky-bit位
特殊权限
说明
SUID
当一个设置了SUID 位的可执行文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权 。任意存取该文件拥有者能使用的全部系统资源 。如果所有者是 root 的话,那么执行人就有超级用户的特权了 。
SGID
当一个设置了SGID 位的可执行文件运行时,该文件将具有所属组的特权,任意存取整个组所能使用的系统资源;若一个目录设置了SGID,则所有被复制到这个目录下的文件,其所属的组都会被重设为和这个目录一样,除非在复制文件时保留文件属性,才能保留原来所属的群组设置 。
stickybit
对一个文件设置了sticky-bit之后,尽管其他用户有写权限,也必须由属主执行删除、移动等操作;对一个目录设置了sticky-bit之后,存放在该目录的文件仅准许其属主执行删除、移动等操作 。
一个典型的例子就是passwd命令,这个命令允许用户修改自己的密码 。我们可以看到本来是rwx的权限表示形式变成了rws,同样如果/usr/bin/passwd这个文件同时被设置了三个特殊权限,那么权限的格式就会变成rwsrwsrwt,需要注意的是特殊权限设置的前置要求是可执行,也就是如果没有x权限位,是不要设置的,即便你使用root用户设置上了特殊权限,也不会生效 。
[root@localhost test]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 34928 5月 11 11:14 /usr/bin/passwd特殊权限的设置和查看特殊权限的设置也是使用chmod
[root@localhost test]# ll总用量 0-rwxr-xr-x 1 oracle oracle 0 10月 18 01:26 file1[root@localhost test]# chmod u+s file1[root@localhost test]# ll总用量 0-rwsr-xr-x 1 oracle oracle 0 10月 18 01:26 file1[root@localhost test]# chmod g+s file1[root@localhost test]# ll总用量 0-rwsr-sr-x 1 oracle oracle 0 10月 18 01:26 file1[root@localhost test]# chmod o+t file1[root@localhost test]# ll总用量 0-rwsr-sr-t 1 oracle oracle 0 10月 18 01:26 file1或者使用数字
[root@localhost test]# chmod u-s,g-s,o-t file1[root@localhost test]# ll总用量 0-rwxr-xr-x 1 oracle oracle 0 10月 18 01:26 file1[root@localhost test]# chmod 7755 file1[root@localhost test]# ll总用量 0-rwsr-sr-t 1 oracle oracle 0 10月 18 01:26 file1三、隐藏权限隐藏权限的介绍有时候你发现即使使用的是root用户也不能修改某个文件,大部分原因是因为使用过chattr命令锁定了该文件,这个命令的作用很大,通过chattr可以提高系统的安全性,但是这个命令并不适合所有的目录,如/dev,/tmp,/var 。与我们前面看到的chmod这些命令修改权限不同的是chattr修改的是更底层的属性,这里面我们所提到的隐藏权限指的就是使用chattr来设置属性


推荐阅读