如何为特定文件夹设置umask

出于某些显而易见的原因,我需要为一个特定文件夹设置umask值。 怎么能这样做?

先谢谢!

更新1

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

你可以使用setfacl

 setfacl -d -m group:name:rwx /path/to/your/dir 

其中name是组名

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

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

例如,如果你有一个目录/home/user/directory ,其中有一些文件和目录可以从进程中获得777等权限,请将/home/user/directory的权限位设置为700.这样就可以了其他用户(超级用户root除外)无法进入/home/user/directory

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


每次更新你的问题:仍然,你无法在文件系统中控制它(除了使用不同的文件系统类型,如强烈放弃的FAT),你需要在你的webapp中这样做。 如果您的webapp是用PHP编码的,您可以使用umask函数动态更改umask

 < ?php umask(0022); // other code ?> 

您可以将其放在配置文件中,例如包含数据库连接密码的文件(在Wordpress等应用程序中思考)。

请记住,这是一个过程值,一些Web服务器允许您在其配置文件中设置它,否则您可以修改启动脚本以设置所需的umask。 请记住,像755644这样的权限对于webapps来说是非常危险的,如果代码是敏感的,那么每个人都可以阅读它。

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

将umask设置为您需要的

 umask xxx 

完成后改回来

 umask 022 

另一种解决方案可能是在目录中创建的文件上设置组ID,这使得新文件由目录组ID拥有,而不是创建文件的用户的组ID。 所以我认为你可以做到:

chown www-data:www-data /my/folder

chmod 4755 /my/folder

这将设置setgid特殊文件权限,这将导致在/my/folder创建的所有文件归www-data组所有,后者由于父目录而具有rx(5)权限。