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

Dav*_*ica 6 permissions ubuntu-9.04

我有一个文件夹/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
Run Code Online (Sandbox Code Playgroud)

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

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

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

Sat*_*ppy 8

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

umask 022 (in .login or .profile)
Run Code Online (Sandbox Code Playgroud)

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

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

“A”是Owner的权限,“B”是所属组的权限,C是Everyone的权限。

权限细分如下

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

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

所以“chmod -R 744 folderName”的意思是:

设置Owner权限为读+写+执行(7) 设置Ownering组权限为读取(4) 设置每个人的读取权限(4)

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

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

现在umask:

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

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

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

希望这不会太令人困惑。