如何为特定文件夹设置 umask

Bak*_*yor 37 permissions umask

由于一些明显的原因,我需要umask为一个特定文件夹设置值。怎么能这样呢?

先谢谢了!

更新 1

我需要对特定文件夹使用 umask 的原因如下。我有一个 Web 应用程序,当它创建一些文件时,默认权限是 700。但我至少需要该文件的 755 权限。我想我现在可以更清楚地解释这个问题了。

小智 40

你可以用 setfacl

setfacl -d -m group:name:rwx /path/to/your/dir
Run Code Online (Sandbox Code Playgroud)

name群名在哪里

要查找您或特定用户属于哪些组,请参阅在 unix/linux 中,您如何通过命令行找出给定用户所在的组?

  • 非常确定`setfacl` 是用于*访问控制列表* 而不是`umask`。一个更好的解决方案,但实际上并不是所问的,我不认为。 (3认同)

Lek*_*eyn 12

您不能为每个目录设置 umask,它是一个进程级值。如果您需要阻止其他人读取目录中的文件,请撤销相应的权限位。

例如,如果您有一个/home/user/directory包含某些文件和目录的目录,这些文件和目录可以从进程中获得 777 等权限,请将其权限位设置为/home/user/directory700 之类的内容。这将使其他用户(超级用户 root 除外)无法下降在/home/user/directory

我很偏执并将权限设置/home/user为 750,所以只有我可以在我的主目录中读取、写入和下降。这导致/home/user/Public其他人无法访问像这样的文件夹,但我可以忍受。


每次更新您的问题:仍然,您无法在文件系统中控制它(除了使用不同的文件系统类型,如 FAT 被强烈拒绝),您需要在您的 webapp 中执行此操作。如果您的 web 应用程序是用 PHP 编码的,您可以使用以下umask函数动态更改 umask :

<?php
umask(0022);
// other code
?>
Run Code Online (Sandbox Code Playgroud)

你可以把它放在一个配置文件中,比如包含数据库连接密码的文件(在像 Wordpress 这样的应用程序中思考)。

请记住,它是一个过程值,一些网络服务器允许您在其配置文件中设置它,否则您可以修改启动脚本以设置所需的 umask。请记住,权限喜欢755644对于web应用相当危险的,如果代码是敏感的,每个人都可以阅读。

  • 我知道这是古老的,但我认为值得一提:管理员可以绑定挂载`/home/user/Public`(`mount -o bind /home/user/Public /some/other/place`)来解决父目录权限问题。 (2认同)

woj*_*jox 0

要更改文件夹的权限,请使用 chmod。umask 用于文件。

将 umask 设置为您需要的值

umask xxx
Run Code Online (Sandbox Code Playgroud)

完成后改回来

umask 022
Run Code Online (Sandbox Code Playgroud)

  • umask = 文件和目录,fmask = 仅文件,dmask = 仅目录。:P (15认同)
  • 实际上,这是某些文件系统(如 NTFS)的选项(不是文件创建掩码设置命令“umask”)。抱歉添加了令人困惑的信息。 (2认同)