Linux + 如何只给特定用户读取文件

yae*_*ael 6 linux permissions group files

假设我们希望只有用户 tutu 可以读取文件

/home/grafh/file.txt 
Run Code Online (Sandbox Code Playgroud)

为了启用它需要做哪些配置?

  • 文件所有者必须保持 root 身份(并且只有用户 tutu 可以读取文件)

Whi*_*olf 8

您有两种可能性,使用经典的 DAC(自由访问控制,通常的rwx权限)和使用文件 ACL(访问控制列表)。

使用 DAC 权限

如果tutu没有自己的组(检查groups tutu输出),则必须创建一个新组并使tutu成为该组的唯一成员。

root@host:~# addgroup tutu
root@host:~# usermod -G tutu tutu
Run Code Online (Sandbox Code Playgroud)

然后更改文件权限以允许对tutu组的成员进行读取访问:

root@host:~# chgrp tutu /home/grafh/file.txt
root@host:~# chmod 640 /home/grafh/file.txt
Run Code Online (Sandbox Code Playgroud)

该文件仍由root拥有,但tutu可以读取(但不可写入),而其他用户则无法读取。

使用 ACL 权限

ACL 是除上述 DAC 权限之外的附加权限。旨在解决使用历史上的 Unix DAC 权限系统无法轻松解决的情况。

允许tutu读取文件:

root@host:~# setfacl -m u:tutu:r /home/grafh/file.txt 
Run Code Online (Sandbox Code Playgroud)

  • 在基于 Red Hat 的系统上,命令是 groupadd。 (2认同)