chmod 更改特定用户的权限

chmod 更改特定用户的权限

我有两个用户,user1 和 user2。我还有一个文件在/path/to/file. user1 应具有读写访问权限,而 user2 应仅具有读取访问权限。

我知道我可以将权限更改为chmod u=r /path/to/file只读,但这会更改每个人的权限吗?当以 user1 身份执行命令时,user1 和 user2 的访问权限也会发生变化。我还没有找到指定用户的选项。这是我必须使用组的地方吗?或者chown?我该怎么做呢?

对于充满文件的整个目录也可以这样做吗?如果有一个目录/path/to/dir包含n个文件和m个子目录,要更改每个文件和子目录中每个文件的权限吗?

答案1

您可以使用下一个解决方案:

  • 更改文件的所有权:chown user1 /path/to/file
  • 更改所有者、组和其他人的权限:chmod 644 /path/to/file

这将rw给予user1ruser2

对于目录,您必须添加x以便为用户提供在此目录中更改的选项:

chmod 755 /path/to/directory

请小心,-R因为这也会更改子目录

要自动化工作,您可以使用类似的东西。对起始目录要非常小心,因为这些命令可以更改您不想触及的文件的权限

find /path/to/file -type f -exec chmod 644 {} \;

对于文件

find /path/to/dir -type d -exec chmod 755 {} \; 

对于目录

答案2

传统的Unix权限是相当粗粒度的,只区分所有者(用户)、组和其他,其中一个用户(更准确地说是一个进程)可以属于多个组。大多数当前的 Linux 安装都会为每个用户创建一个私有组,以便在用户之间进一步隔离(许多旧版 Unix 系统users为所有用户都有一个包罗万象的组,因此,如果我将某些文件组设置为可读/可写,大家可以和他们一起度过一天)。

你可以设置一个仅属于的组user1user2并使用组权限来获取一些你想要的东西,但这一点也不完美。

现代 Linux 内核/文件系统/工具处理访问控制列表 (ACL),请参阅acl(5)。使用 ACL,您可以获得更细粒度的控制,即“user1对对象具有确切的权限foo”。

相关内容