使用chmod
我可以设置文件的权限,但是如果父 ( ..
) 目录具有冲突的权限,会发生什么情况?
如果我使用touch
类似的东西创建一个新文件,初始权限是如何计算的?权限是从 继承的吗..
?
为什么当我删除权限标志时我不能在目录中执行任何操作executable
?
$ mkdir temp;
$ chmod -x temp;
$ touch temp/a;
$ ls temp;
touch: cannot touch `temp/a': Permission denied
答案1
严格来说,UNIX 中不存在“权限冲突”:文件系统条目(目录、文件等)的访问权限决定了您可以或不可以对该对象执行哪些操作。其他文件系统条目的权限不参与其中,路径中所有祖先目录上的“x”位除外到一个文件(最多
/
)——参见 3。新创建的文件的默认权限由创建程序允许的权限(或系统调用
mode
的参数)和当前进程决定。具体来说,“umask”中设置 (1) 的任何位都会在新创建的文件权限中重置 (0):采用类似于 C 的表示法:。阅读(查找)并了解详细信息。open
creat
umask
file_permissions = open_mode & ! umask
man 2 creat
O_CREAT
man umask
目录上的“x”(可执行文件)位控制是否可以遍历该目录:遍历目录意味着能够
cd
进入该目录并访问其中包含的文件。请注意,列出目录内容的能力由“r”位控制。
进一步阅读:
答案2
首先……在 Linux 中一切都是文件。我所说的一切是指一切......你的文件夹、鼠标或键盘......都是一个文件。
现在,我们来回答您的问题:
文件夹和包含的文件之间不存在冲突。如果您有一个仅具有读取权限的文件夹,但该文件夹中有一个具有写入权限的文件,则您可以写入该文件。但是您无法在该文件夹中创建/删除文件。所以,不用担心冲突。您还可以读取文件夹的内容(列出文件夹)。
默认权限通常为 644(含义:rw 代表用户,r 代表组和其他)
目录的“可执行”位意味着“列出”该目录。换句话说,如果您使用 -xa 文件夹,您将无法知道其内容,这意味着您无法对其进行任何操作。