oom*_*pah 44 linux permissions ubuntu
我有一个文件夹,其中将通过脚本自动创建新的子文件夹和文件。
我想递归地维护放置在父目录中的所有新文件夹和文件的用户和组权限。我知道这涉及设置一个粘性位,但我似乎无法找到一个能准确显示我需要的命令。
这是我到目前为止所做的:
sudo mkdir -p /path/to/parent
sudo chmod -R 660 myself:somegroup /path/to/parent
Run Code Online (Sandbox Code Playgroud)
此后,我希望将 660 权限递归设置到/path/to/parent.
但是,到目前为止我尝试过的一切都失败了。有人可以帮忙吗?
实际上,八进制标志 660 甚至可能都不正确。我想要的权限是:
/path/to/parent可由具有权限的用户执行/path/to/parent不是世界可读的我在 Ubuntu 10.0.4 LTS 上运行。
有人可以帮忙吗?
use*_*686 70
您要查找的权限位是 0770 和 0660。
rw-权限?110二进制 ? 6八进制该组所有权可以通过使用设置setgid位新的文件和文件夹中的文件夹/路径/到/父创建继承chmod g+s这样的:
chmod g+s /path/to/parent
Run Code Online (Sandbox Code Playgroud)
现在,在 /path/to/parent 下创建的所有新文件和文件夹都将分配与 /path/to/parent 上设置的相同的组。
POSIX 文件权限不会被继承;它们由创建过程给出,并与其当前的 umask 值相结合。
但是,您可以使用POSIX ACL来实现这一点。在目录上设置默认 ACL:
setfacl -d -m u::rwX,g::rwX,o::- /path/to/parent
Run Code Online (Sandbox Code Playgroud)
这将适用setfacl于/路径/到/父目录,-modifying的-dEFAULT的ACL -那些将被应用到新创建的项目。(大写X表示只有目录会收到该+x位。)
(如果需要,您可以向 ACL添加一个u:someuser:rwX或g:someuser:rwX- 最好是一个组。)
注意:在使用 ext3/ext4 的旧系统上,您过去需要使用该acl选项挂载文件系统,否则它会忽略所有 ACL 并不允许设置新的 ACL。
mount -o remount,acl /
Run Code Online (Sandbox Code Playgroud)
要永久设置它,请使用tune2fs -o acl <device>或编辑/etc/fstab。
Pri*_*cey 11
Grawity 给出了一个很好的答案,但我怀疑编辑过的问题可能会略有改变。
我建议离开 apache 用户/组拥有的目录。这可能是apache或httpd,具体取决于您的发行版。
例如
chown -R apache:apache /path/to/parent
Run Code Online (Sandbox Code Playgroud)
然后您可以执行类似https://serverfault.com/questions/164078/is-adding-users-to-the-group-www-data-safe-on-debian 之类的操作,甚至将自己添加到 apache 组以确保您具有对目录的组访问权限。(类似的东西usermod -aG apache username)
我不会chmod -R整个目录,因为你不想要 html 脚本或 jpg 或其他随机可执行的东西。您应该根据需要更改权限。(尽管将其重置为 660 可能不是最糟糕的想法。)
您可能想尝试的是:
chmod o+w file
Run Code Online (Sandbox Code Playgroud)
“o”表示“其他”,“w”表示“写”。您还可以将 'u' 用于 'user' 和 'g' 用于 'group',以及 'r' 和 'x',希望它们是不言自明的。您可以使用“-”而不是“+”来删除权限。