如何更改目录中所有文件的权限以及添加新文件时的权限并将其更改为默认值?

如何更改目录中所有文件的权限以及添加新文件时的权限并将其更改为默认值?

我有一个文件夹/home/userName/Public/Media,用于存储机器上的所有媒体;该文件夹旨在供机器的所有其他用户访问 - 只是为了阻止他们独立下载/翻录相同的媒体文件。

有什么方法可以将权限更改为:

owner: userName /* my own user */
Access: read and write

group: users
Access: read only /* I'm not entirely sure I trust all my users enough to give them powers of delete */

Others
Access: read only

理想情况下,我希望其他人能够添加自己的媒体,但我自己添加的任何媒体/文件/目录的权限默认为上面列出的权限。我希望用户添加的文件的权限默认为上面列出的权限,但用户保留所有权。

我假设可以使用 inotify 和 umask;但是 - 我只能为此道歉 - 我不知道如何使用它们来解决问题。

感谢您提供的任何帮助。有一天,我希望能够毫无困惑地使用 Ubuntu... =)

答案1

chown -R userName:groupname folderName
chmod -R 744 folderName

umask 022 (in .login or .profile)

chmod 更改文件的权限。如果你不习惯它,可能会觉得有点奇怪,但简而言之:

用法(八进制):chmod ABC(目标文件/文件夹)

“A”是所有者的权限,“B”是拥有组的权限,C 是每个人的权限。

权限细分如下

1 = 执行 2 = 写入 4 = 读取

将它们相加以确定权限级别。例如,要授予读取和写入权限但不授予执行权限,请使用 (2+4) = 6。对于读取、写入和执行权限,请使用 (1+2+4) = 7。对于仅执行权限,请使用 1。

因此“chmod -R 744 folderName”的意思是:

将所有者的权限设置为读取+写入+执行(7)将拥有者的权限设置为读取(4)将所有人的权限设置为读取(4)

将这些权限应用于 folderName,然后从那里将它们递归(-R)应用于文件夹中的所有文件。

这是非常基础的;还有其他方法可以使用 chmod,以及可以用它设置其他属性等等,但这是一个好的开始。

现在 umask:

Umask 基本上是一种设置文件和目录创建默认权限的方法。通常,它是在每个用户的 .profile 或 .login 文件中设置的,但您可以在不同时间通过输入 umask 022 或其他任何内容为自己设置它...它会一直保留,直到您更改它或注销。

umask 权限(八进制)是撤销chmod 权限。我知道这很奇怪。但是如果您希望目录中的所有文件都以文件权限 777(所有者、组和所有人的读+写+执行)创建,则需要将 umask 设置为 000。

因此,为了让所有用户都能创建 644(读/写、读取、读取)的文件,您需要将 umask 设置为 022(这似乎不正确,但文件默认情况下不可执行,因此新创建的文件将是 644,新创建的目录将是 755)。

希望这不会太令人困惑。

相关内容