Linux下一切皆文件, 是文件就要有权限,Linux中将文件面对的人分为三种:分别是拥有者,所属组,其他(other)这三种人有不同的权限,其中other是除了拥有者和所属组之外的人拥有者一般用u表示所属组一般用g表示other就是用o表示对于一个文件,一般的权限就是读(r),写(w),执行(x),今天小编就来说说关于linux文件权限有几种?下面更多详细答案一起来看看吧!

linux文件权限有几种(文件权限之特殊权限)

linux文件权限有几种

一、权限介绍

Linux下一切皆文件, 是文件就要有权限,Linux中将文件面对的人分为三种:分别是拥有者,所属组,其他(other)这三种人有不同的权限,其中other是除了拥有者和所属组之外的人拥有者一般用u表示所属组一般用g表示other就是用o表示对于一个文件,一般的权限就是读(r),写(w),执行(x)

然而除了这些常用的权限外,linux还有一种特殊的权限,s,t 这两个权限很少使用,却是很实用

二、特殊权限详解

当s权限在文件所有者 x 权限上时,例如:-rwsr-xr-x,此时称为Set UID,简称为SUID的特殊权限,即当执行该文件时将具有该文件所有者的权限注意该权限只针对二进制文件生效

当s权限在文件组 x 权限上时,例如:-rwx--s--x,此时称为Set GID,简称为SGID的特殊权限,即当执行该文件时将具有该文件所在组的权限

还有一个t权限,只针对目录有效,为SBIT权限,当用户对此目录具有 w, x 权限,当用户在该目录下创建文件或目录时,仅有自己与 root用户才有权限删除该文件或目录

二、特殊权限测试

s权限测试

我用Python 写了一个小程序用来测试,代码如下

[root@localhost /usr/local/src/test -> ]# cat test.py #!/bin/env python #coding = "utf-8" import time with open("/tmp/tmp.txt","wb") as f: f.write(str(time.time())) print(time.time())

代码很简单,往tmp目录下的tmp.txt文件写入当前时间戳

当用户为root时,给文件增加s权限

[root@localhost /usr/local/src/test -> ]# chmod s test.py

当已root用户执行该文件执行时,该文件被顺利执行

当将用户切换到test用户,用python执行 该程序时,提示错误

我们将test.py 文件转换为二进制文件再次尝试

可以使用pyinstaller对文件进行打包,打包后的二进制文件可以在当前目录的dist目录找到,添加s权限后再次尝试

[root@localhost /usr/local/src/test -> ]# pyinstaller -F test.py [root@localhost /usr/local/src/test/dist -> ]# ll 总用量 4.7M -rwxr-xr-x 1 root root 4.7M 7月 13 21:21 test

这次尝试可以看出,在root用户和普通用户下程序都执行成功,s权限只能应用于二进制文件

那么该权限有什么用途呢,最典型的就是系统命令passwd了,任何用户都可以通过passwd命令对自己进行密码或者其他属性修改,但是却无法直接通过修改/etc/passwd进行权限修改

t权限测试

在/usr/local/src/test/目录下创建一个dir 文件夹目录权限设置为777,这样所有的用户都可以在该文件夹下进行操作

使用test1用户在该目录创建一个文件

使用test2用户在该目录可以将test1创建的文件删除

s权限测试

当我们给该目录增加t权限再次测试,发现test创建的文件 test2用户无法删除

t权限测试

linux系统/tmp 目录默认就有t权限,任何用户都可以创建用户,但是除root外的其他普通用户都无法删除其他用户创建的文件,哪怕该文件权限是777

如果有对此文章比较有兴趣的朋友,大家可以点个关注,欢迎大家收藏、点赞、转发,我将经常发表一些比较实用的文章,请大家多多关照