如何禁止一个用户访问文件?
我试图禁止用户打开文件.
目的是当用户尝试打开特定文件时,他将无法做到. 此外,我希望能够返回权限并让用户打开文件. 我只找到了启用预设的方法:os.chmod(path,0444),但我无法理解如何禁用权限. 解决方法
Unix许可入门:
每个文件都有一个用户.这是系统上的用户.每个文件也有一个组.这是系统上的一个组.用户可以在一个或多个组中.一个文件只有一个用户和一个“拥有”该文件的组 那么像0444这样的数字是什么意思呢? 第一个数字用于一些特殊标志,如sticky,setuid,setgid.我们现在不需要为此烦恼.只记得将其设置为0 接下来的三个数字表示三个权限:一个用于用户,组和其他(非每个用户或组),按顺序. 要设置权限,我们使用从0到7的数字(八进制数).这实际上是bitmask. 1表示执行,2表示写入,4表示读取. 在表中它看起来像:2 N Description ls output 0 No read,no write,no execute --- 1 No read,execute --x 2 No read,write,no execute -w- 3 No read,execute -wx 4 Read,no execute r-- 5 Read,execute r-x 6 Read,no execute rw- 7 Read,execute rwx 读写应该是不言自明的.执行意味着您可以使用./ls运行文件(这不是安全措施,可以通过这种方式规避).请注意,目录也是Unix系统(如Linux)上的文件.如果您希望能够将cd设置为目录,则必须设置执行位. 您最常使用的数字是: > 7,完全访问权限 因此,如果您查看命令os.chmod(path,我们会看到您为所有用户设置了只读访问权限.这不是你想要的. 正确的权限取决于哪个用户和组拥有该文件.如果该文件不属于您要禁止访问的用户,并且不在该文件所属的组中,则可以使用: os.chmod(path,0440) 如果我们看一下上表,我们就会发现它意味着: >读取,写入,不执行用户. 如果该文件不属于您要禁止访问的用户,并且该文件位于该文件所属的组中,0400) 这将使其仅对用户可读.请注意,这可能会产生副作用,因为组中的其他人现在也无法读取它. 但是,如果文件属于用户,则需要更改文件用户.这可以通过 os.chown(path,'martin') os.chmod(path,0400) 1:如果要将更多用户或组分配给文件,则可以使用ACL,但是> 95%则不需要,并且只会增加可能难以管理的复杂性.它通常默认禁用. 2:表从FreeBSD handbook上升 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |