如何创建具备类root系统文件读取权限但仅可写入自身文件的用户?
如何创建具备类root系统文件读取权限但仅可写入自身文件的用户?
嗨,这个需求挺实用的,我给你分享两种可行的办法,其中第一种是最稳妥的:
方法一:通过sudo配置实现精细化权限控制
这是最推荐的方案,既能让用户读取任何系统文件,又严格限制写入权限:
- 先创建一个普通用户(比如叫
limited_reader),执行命令:useradd -m limited_reader
接着设置用户密码:passwd limited_reader - 编辑sudo配置文件(一定要用
visudo命令,避免语法错误导致sudo失效),在文件末尾添加一行:limited_reader ALL=(ALL) NOPASSWD: /bin/cat, /bin/less, /bin/more, /bin/head, /bin/tail, /usr/bin/grep, /usr/bin/ls
这行配置的意思是:用户limited_reader可以在任何主机上,以root身份无密码执行后面列出的只读类命令。 - 测试效果:切换到这个用户后,日常操作就是普通用户权限,只能写入自己家目录或有写入权限的位置;如果要读取系统受限文件(比如
/etc/shadow),只需要在命令前加sudo前缀,比如sudo cat /etc/shadow就能正常读取,但如果尝试写入系统文件(不管是直接写还是用sudo执行写入命令)都会被拒绝。
方法二:利用文件系统ACL(不推荐,局限性大)
这个方法是直接给所有系统文件添加用户读取权限,但操作繁琐且可能影响系统安全性:
- 执行命令给根目录下所有文件/目录赋予该用户的读取权限:
setfacl -R -m u:limited_reader:r /
注意:-R是递归处理,这个操作会遍历整个系统,耗时久,而且可能破坏部分系统文件的默认权限,导致异常。 - 这种方式下用户不需要sudo就能读所有文件,但写入权限依然是普通用户级别,只能操作自己有权限的文件。不过因为风险高,一般不建议这么做。
注意事项
- 配置sudo时,只添加必要的只读命令,绝对不要包含
/bin/bash、/bin/sh这类shell命令,否则用户可以通过sudo bash获取root完整权限,那就违背需求了。 - 用
visudo编辑后,会自动检查语法,有错误会提示你修改,一定要确认无误再保存。
备注:内容来源于stack exchange,提问作者james hofer
相关产品推荐
相关产品推荐

