linux添加只读用户读取log
root用户下执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
useradd -s /bin/bash readlog
passwd readlog
mkdir /home/readlog/.bin
chown root. /home/readlog/.bash_profile
chmod 755 /home/readlog/.bash_profile
vi /home/readlog/.bash_profile
PATH=$HOME/.bin
ln -s /usr/bin/wc /home/readlog/.bin/wc ln -s /usr/bin/tail /home/readlog/.bin/tail ln -s /bin/more /home/readlog/.bin/more ln -s /bin/cat /home/readlog/.bin/cat ln -s /bin/grep /home/readlog/.bin/grep ln -s /bin/find /home/readlog/.bin/find ln -s /bin/pwd /home/readlog/.bin/pwd ln -s /bin/ls /home/readlog/.bin/ls ln -s /bin/less /home/readlog/.bin/less ln -s /bin/tar /home/readlog/.bin/tar ln -s /bin/clear /home/readlog/.bin/clear ln -s /bin/cd /home/readlog/.bin/cd
|
切换到只读账号使环境变量生效
1 2 3 4 5
| su - readlog
source /home/readlog/.bash_profile
|
设置readlog用户可读的目录
1 2 3 4 5 6 7 8 9 10 11 12
| setfacl -m u:readlog:rx /home/iprobe setfacl -m u:readlog:rx /home/iprobe/test setfacl -m u:readlog:rx /home/iprobe/test/prod-project setfacl -m u:readlog:rx /home/iprobe/test/prod-project/logs setfacl -m u:readlog:r /home/iprobe/test/prod-project/logs/stdout.log
getfacl /home/iprobe/test/prod-project/logs/stdout.log
setfacl -R -m u:readlog:rx /home/iprobe
|
如果通过 setfacl
设置的 ACL 权限不生效,有几个可能的原因需要检查:
-
确保文件系统挂载时启用了 ACL 功能。您可以通过执行 mount
命令来查看文件系统的挂载选项,确认是否包含了 acl
选项。
-
检查文件所在目录的权限设置。即使文件本身具有 ACL 权限,如果其所在的目录没有相应的访问权限,也会导致访问被拒绝。
-
确保 readlog
用户对文件路径中的每个目录都具有执行权限。在 Linux 中,要对一个文件进行读取操作,用户需要对该文件所在的每个目录都具有执行权限。
-
如果您的系统使用了 SELinux(安全增强型 Linux),还需要确保 SELinux 的安全策略不会阻止 readlog
用户对该文件的访问。
请检查上述可能的原因,特别是目录权限和文件系统挂载选项,确保 ACL 权限能够生效。