递归创建的所有新文件夹和文件的文件权限

递归创建的所有新文件夹和文件的文件权限

我希望文件夹具有 777 权限,并且每次在其中创建新文件或文件夹时,该文件夹都应具有具有 777 权限的相同用户和组。
我尝试了以下操作,但文件夹内的新文件无法获得执行权限。

sudo chmod -R 2777 new_folder
ll 
drwxrwsrwx 2 test test 4096 Oct 11 08:30 new_folder
cd new_folder
touch new_file
ll new_file
-rw-rw-r-- 1 test test 0 Oct 11 08:31 new_file

我希望每当我在其中创建新文件夹或文件时,它都具有 -rwxrwxrwx。如何做到这一点?

答案1

您将永远不会自动拥有文件执行权限因为这是 Linux 的安全限制。

我认为使所有用户递归地拥有相同的所有者和组的唯一方法是设置一个 NFS 卷并使用all_squashanonuidanongid导出配置中将其安装到机器上。

setgid如果没有它,您可以使用父目录上的位从顶层继承父组( chmod g+s new_folder)但不能递归(在子文件夹中)。

对于文件夹权限,使用默认 acl。确保 acl 位于您的挂载选项中:

tune2fs -l /dev/sdX | grep options

如果没有,请将其添加到/etc/fstab并重新挂载,或者将其添加到默认挂载选项中tune2fs -o acl

然后 :

chmod 777 new_folder
setfacl -d -m u::rwx,g::rwx,o::rwx -m m::rwx new_folder

答案2

您无法对顶层文件夹执行任何操作来控制在其下创建的文件和文件夹的权限(组除外)。

如果您控制着创建这些条目的过程(正如其他人所建议的),那么您可以做的是将 umask 设置为 0(有关更多详细信息,请参阅手册页),但是这会影响在该会话中创建的所有对象,而不仅仅是该文件夹下的内容。

相关内容