欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

linux文件的特殊权限及隐藏权限

程序员文章站 2022-09-04 15:38:12
基础知识 相信大家应该都知道linux的文件基本权限,使用ls -l命令可以显示文件的基本权限,"-rwxrwxrwx.",第一位表示文件的属性(是文件- ,目录d等),后面每隔三位为属主、属组、其他用户 对应的读写执行权限。这个比较简单很容易理解。 文件特殊权限 单纯的读写执行权限无法满足我们的基 ......

  

  基础知识

  相信大家应该都知道linux的文件基本权限,使用ls -l命令可以显示文件的基本权限,"-rwxrwxrwx.",第一位表示文件的属性(是文件-  ,目录d等),后面每隔三位为属主、属组、其他用户 对应的读写执行权限。这个比较简单很容易理解。

  文件特殊权限

  单纯的读写执行权限无法满足我们的基本要求,因此对应有了特殊权限位(suid、sgid、sbit),这些权限 位用来弥补一般权限不能实现的功能,帮助没有权限的用户执行需要root权限的工作。下面我们就详细了解一下这三个特殊权限位的功能和用法。

  1、suid

  suid可以让普通用户对某个可执行命令拥有属主的权限,比如普通用户可以用passwd命令,然而passwd的权限为:

[root@linux-node2 cron]# ll /bin/passwd
-rwsr-xr-x. 1 root root 27832 jan 30  2014 /bin/passwd

  可以看到passwd的属主权限是rws,即x被赋予了特殊权限,其他用户执行该命令的时候也会拥有属主的权限。我们就拿rm命令举一个例子(生产环境中不建议使用):

[root@linux-node2 cron]# ll /bin/rm
-rwxr-xr-x. 1 root root 62808 jan 25  2014 /bin/rm
[root@linux-node2 cron]# chmod u+s /bin/rm
[root@linux-node2 cron]# ll /bin/rm
-rwsr-xr-x. 1 root root 62808 jan 25  2014 /bin/rm
[root@linux-node2 cron]# touch /data/test
[root@linux-node2 cron]# ll /data/test 
-rw-r--r-- 1 root root 0 jan 10 17:52 /data/test
[root@linux-node2 cron]# su bing
[bing@linux-node2 cron]$ rm -f /data/test 

  通过上面的例子可以看出,当我们赋予rm特殊权限后,即使普通用户对文件没有写入权限,也可以使用特殊权限对其操作。

  2、sgid

  sgid可以让其他用户对某个可执行命令拥有属组权限,原理同suid,只是这个是属组中x被赋予特殊权限,具体不再详解,请看例子:

[bing@linux-node2 cron]$ ll /usr/bin/wall
-r-xr-sr-x. 1 root tty 15344 jan 27  2014 /usr/bin/wall

  删除sgid特殊权限:chmod g-s /usr/bin/wall,关于chmod的命令这里就不解释了。

  3、sbit

  sbit是针对others来设置的,和上面两个一样,只是功能不同而已。

  sbit目前只针对目录有效,对于目录的作用是:当用户在该目录下建立文件或目录时,仅自己与root用户才有权限删除。

  像/tmp目录(drwxrwxrwt.),任何人可以在/tmp内增加、修改文件,但是这个目录只有root和自己才能够删除文件。举例说明:

[bing@linux-node2 ~]$ cd /data/
[bing@linux-node2 data]$ touch test1
[bing@linux-node2 data]$ chmod o+t test1 
[bing@linux-node2 data]$ ll test1
-rw-rw-r-t 1 bing bing  0 jan 10 18:20 test1

上面的例子是错误示范,别的用户赋予w权限是可以删除的,这个特殊权限建议对目录操作,目录下的文件会生效哦。  

这里我就不演示切换到其他用户删除该文件了,感兴趣的自己测试。

 

  文件隐藏权限

  linux中有些文件,虽然我们对这个文件有权限,却没有办法编辑和删除,或者仅能对这个文件追加等操作,这个就涉及到了linux的隐藏权限。

  1、chattr命令用于设置文件的隐藏权限,用法“chattr [参数] [文件]”。

  参数:

 1 a:即atime,告诉系统不要修改对这个文件的最后访问时间。
 2 s:即sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
 3 a:即append only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
 4 b:不更新文件或目录的最后存取时间。
 5 c:将文件或目录压缩后存放。
 6 d:当dump程序执行时,该文件或目录不会被dump备份。
 7 d:检查压缩文件中的错误。
 8 i:即immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
 9 s:彻底删除文件,不可恢复,因为是从磁盘上删除,然后用0填充文件所在区域。
10 u:当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件,用来防止意外删除文件或目录。
11 t:文件系统支持尾部合并(tail-merging)。
12 x:可以直接访问压缩文件的内容。

  2、lattr 查看隐藏权限,用法:“lattr [文件]”。