sudoer 文件如何授予特定用户仅对特定文件的完全访问权限

use*_*811 8 users permissions files privileges

我只想授予用户对某些文件的完全访问权限,有人可以告诉我该怎么做吗?例如,我想修改 sudoer 文件以仅授予用户对某些文件的访问权限。谢谢。

M0ε*_*εiπ 5

您可以使用访问控制列表来做到这一点:

1)首先,检查该文件的ACL:

getfacl PATH/files
Run Code Online (Sandbox Code Playgroud)

输出将是这样的:

# file: PATH/file
# owner: root
# group: root
user::rw-
group::r--
other::r--
Run Code Online (Sandbox Code Playgroud)

2)设置文件的ACL,以便为特定用户设置完全访问权限:

setfacl -m u:USERNAME:rwx PATH/file
Run Code Online (Sandbox Code Playgroud)

3)现在,如果您在文件上尝试“ls -l”命令,则会在输出中添加加号(+):

-rw-rwxr--+ 1 root  root      0 Nov 10 20:12 file
Run Code Online (Sandbox Code Playgroud)

4)再次获取文件的ACL查看变化(命令与步骤1相同),输出将是这样的:

# file: file
# owner: root
# group: root
user::rw-
user:USERNAME:rwx
group::r--
mask::rwx
other::r--
Run Code Online (Sandbox Code Playgroud)

您可以看到,为您的特定用户声明了一个例外,使其具有与所有者用户、所有者组和其他权限不同的此文件的权限。

我希望你的问题尽快得到解决:)


小智 4

这通常是使用组来完成的。

所有权

文件有两个所有者:用户和组。例如:

$ ls -l file1.txt
-rw-rw-r-- 1 foo foo 6 Nov  9 15:37 file1.txt
Run Code Online (Sandbox Code Playgroud)

这里,用户和组都是foo

我们可以使用 chown更改文件所有权。请注意,该链接链接到 Linux 的联机帮助页,但chown它是相当标准的,因此它可能会起作用。如有疑问,请查阅操作系统手册 ( man chown)。

例如,将组更改为bar

$ chown :bar file1.txt
$ ls -l file1.txt
-rw-rw-r-- 1 foo bar 6 Nov  9 15:37 file1.txt
Run Code Online (Sandbox Code Playgroud)

请注意,该bar组需要存在。下面您将看到如何添加新组。

权限

权限如下:

-rw-rw-r--
Tuuugggooo
Run Code Online (Sandbox Code Playgroud)

哪里T是类型;对于普通文件-,对于目录d,对于符号链接l等。用户权限是
::读、写。组权限也是。其他人 ( ) 获得或 只读访问权限。uuurw-gggrw-ooor--

我们可以使用chmod更改权限(同样是 Linux 手册页,但 chmod 是相当标准的)。如果我们想bar从文件中删除组的写权限,我们可以这样做:

$ chmod g-w file1.txt
$ ls -l file1.txt
-rw-r--r-- 1 foo bar 6 Nov  9 15:37 file1.txt
Run Code Online (Sandbox Code Playgroud)

添加新组

您可以添加专门用于管理对某些文件的访问的组。如何完成此操作取决于平台。对于 Linux,有addgroup

addgroup bar
Run Code Online (Sandbox Code Playgroud)

对于 FreeBSD,有pw。检查您的操作系统手册以获取正确的命令!

将用户添加到组中

这又是依赖于平台的。对于 FreeBSD,pw上面提到的命令可以处理这个问题。对于 Linux,它是usermod

用户通常具有主要(或初始)组和次要(或补充)组。创建新文件时使用主组。

对于 Linux,将 ( -a) 用户添加foo到辅助 ( -G)bar组的操作如下:

$ usermod -G bar -a foo
Run Code Online (Sandbox Code Playgroud)

现在,下次用户foo登录时,他/她的组将被更新。使用id命令(Linux id / FreeBSD id:相当标准)检查组成员身份:

$ id
uid=1000(foo) gid=1000(foo) groups=1000(foo),1001(bar)
Run Code Online (Sandbox Code Playgroud)