-6 python
我试图禁止用户打开文件.目的是当用户尝试打开特定文件时,他将无法做到.
此外,我希望能够返回权限并让用户打开文件.
我只找到了启用预设的方法:os.chmod(path, 0444)但我无法理解如何禁用权限.
Unix许可入门:
每个文件都有user.这是系统上的用户.每个文件也有一个group.这是系统上的一个组.A user可以在一个或多个groups中.一个文件只能有一个user,一个group是"自己"的文件.1
那么数字0444是什么意思呢?
第一个数字是用于一些特殊的标志,如sticky,setuid,setgid.我们现在不需要为此烦恼.只记得把它设置为0
接下来的三个数字表明三个权限:一个是user,group和other(大家不是user或group),按照这个顺序.
要设置权限,我们使用从0到7的数字(八进制数).这实际上是一个位掩码.1是为了execute,2为write,4是为了read.
在表中它看起来像:2
N Description ls output
0 No read, no write, no execute ---
1 No read, no write, execute --x
2 No read, write, no execute -w-
3 No read, write, execute -wx
4 Read, no write, no execute r--
5 Read, no write, execute r-x
6 Read, write, no execute rw-
7 Read, write, execute rwx
Run Code Online (Sandbox Code Playgroud)
read并且write应该是不言自明的.execute意味着你可以运行一个文件./ls(这不是一个安全措施,可以通过这种方式规避).请注意,目录也是 Unix系统(如Linux)上的文件.execute如果您希望能够cd进入该目录,则必须设置该位.
您最常使用的数字是:
因此,如果您查看命令,os.chmod(path, 0444)我们会看到您为所有用户设置了只读访问权限.这不是你想要的.
正确的权限取决于哪个文件user和group拥有该文件.如果文件不属于你希望禁止访问用户,是不是该文件所属的组中,你可以使用:
os.chmod(path, 0440)
Run Code Online (Sandbox Code Playgroud)
如果我们看一下上表,我们就会发现它意味着:
user.group.other.如果文件不属于用户要禁止访问,且是该文件属于,你可以使用组中:
os.chmod(path, 0400)
Run Code Online (Sandbox Code Playgroud)
这将使其user 唯一可读.请注意,这可能会产生副作用,因为组中的其他人现在也无法读取它.
但是,如果该文件属于该用户,则需要更改该文件user.这可以通过该os.chown()功能完成.例如:
os.chown(path, 'martin')
os.chmod(path, 0400)
Run Code Online (Sandbox Code Playgroud)
1:如果要将更多用户或组分配给文件,则可以使用ACL,但是> 95%则不需要,并且只会增加可能难以管理的复杂性.它通常默认禁用.
2:表从FreeBSD手册中解脱出来
| 归档时间: |
|
| 查看次数: |
666 次 |
| 最近记录: |