在 Linux 中为特定用户和组设置权限

在 Linux 中为特定用户和组设置权限

如何向特定用户或特定组授予文件权限?

我们有三个组:“g12”(“u1”和“u2”),“g34”和“g56”。

  • g12-应该只读取文件。

  • g34-应该写入和读取它。

  • g56-应该拥有所有权限(rwx)。

其他人根本就不应该访问该文件。

答案1

您需要使用访问控制列表。与 Linux 中的默认用户/组/其他方式相比,它们是处理权限的更高级的方式。请参阅此页面以了解示例:Ubuntu 访问控制列表

该页面的一个示例:

setfacl -m u:mike:rwx file or directory

我自己只在服务器管理课程的实验室中使用过这些命令,但据我所知,这是一种非常简单的方法。

答案2

以 root 身份:

chown u1:u1 f1.txt
chmod 400 f1.txt

这将确保该文件归用户 u1 (chown) 和组 u1 所有(假设用户 u1 的默认组是 u1),并且只有该用户可以读取该文件 (chmod)。如果您希望该用户能够写入该文件,请将 400 更改为 600。

您可以使用以下命令将第二个用户添加到第一个用户的默认组:

useradd -G u1 u2

上述命令假设用户 u1 的默认组也称为 u1,第二个用户是 u2。

现在我们更改 f1.txt 的权限,以允许组 u1 的成员具有读访问权限(400 中的第二个“4”是组权限):

chmod 440 f1.txt

chmod 命令后面的三位数字分别代表所有者(第一位)、组(第二位)和系统上所有其他用户(第三位)的权限。值 1 表示执行权限,2 表示写入权限,4 表示读取权限。将这些数字相加可以“混合”这三种类型的权限。例如,4(读取)+ 1(执行)= 5,因此,要允许所有者和组读取和执行文件,但限制其他所有人的访问,则可以使用 550;要允许所有者读取和写入文件,并允许组和所有其他用户读取文件,则可以使用 644。

还有其他格式来设置权限,输入:

man chmod

在命令提示符下获取更多详细信息。

答案3

简短的回答是,你不能

您不能为组或用户设置权限,而只能为文件设置权限。文件有所有者和组,您可以为一个用户、一个组和其他所有人分别设置“读取”、“写入”和“执行”权限。

你能举例说明一下你想要做什么吗?

答案4

我认为你想要完成的是如何组织你的团队。

我对 Linux 还比较陌生,但据我所知,你可以创建一些新组。比如 AccessLow 和 AccessAll。假设你想让 Jim 访问所有,那么你只需将 Jim 放入该组中。然后,你将希望他们访问的特定目录赋予 AccessAll 的组所有权。然后说出您希望他们能够用 chmod 做什么(如果您希望他们使用执行来访问它,只需给他们 Chmod 750。这将为所有者提供完全控制权,而 AccessAll 组仅具有读取和执行能力,但不能写入文件夹。如果您希望文件夹具有有限的访问权限,则将组所有权设置为 AccessLow,并针对您希望他们能够做的事情执行适当的模式。我认为这会起作用,因为我知道。如果出现了一个新人,你想授予他访问权限,你可以简单地考虑“其他人”并给予特定的 chmod 以允许他们只读取,但是如果您希望他们做比“其他人”指定的更多的事情,但仍然希望隐藏一些东西,那么我建议把他们放在一个有能力做更多事情但不像“其他人”那样访问权限低的组中。它需要一点设置,但似乎能够做你想要的。这是我在寻找一种方法来自己改变所有权以获得非常类似的东西时从这里阅读的内容中所知道的全部。使用 Ubuntu 服务器,我只能更改这些参数,但在过程中发现了这一点并最终决定写下我认为可行的方法。

编辑:在考虑这个问题时,我想知道是否有办法将人员分配到多个组,因为我现在想出了一个在 Samba 中进行不同类型的共享的想法。我可能会稍后研究这个问题并得到自己的答案。但在 Windows 中,您可以这样做,所以认为在这里可能以某种方式实现。如果说当前具有我的域访问权限的人能够拥有大多数可用权限,而经过身份验证但不在域中的某人仅具有读取能力,并且可能执行而根本没有写入能力,等等​​,那就太好了。我认为也可以通过为他们设置特定但通用的登录名来实现。比如要访问我的音乐目录,只需创建一个名为“music”(使用简单的密码)的登录名,该登录名已在 Samba 中设置,以便能够以完全读取的能力访问特定目录 Music,并且不会看到任何其他内容。

相关内容