无需授予sudo权限,实现普通用户以root权限执行命令的问题求助
无需授予sudo权限,实现普通用户以root权限执行命令的问题求助
看起来你遇到了两个问题——一是su命令的写法不对导致报错,二是想找到一种不用给用户完整sudo权限,却能让他们以root身份执行特定操作的方法。我来帮你一步步解决:
先解决你测试命令的报错问题
你写的su adminuser echo "Hello World"其实并没有让echo命令在adminuser的权限下执行。su默认只会切换用户并启动一个新的shell,后面的echo还是在你当前普通用户的环境里运行,这就导致了权限拒绝的错误。正确的写法应该用su的-c参数来指定要执行的命令,同时加上-来加载目标用户的完整环境:
su - adminuser -c 'echo "Hello World"'
这样echo就会在adminuser的权限下正常执行了。
针对你的核心需求:无完整sudo权限却能执行root级命令
我更推荐用限制型sudo配置,这比单纯用su更安全可控:
- 用
visudo命令打开sudoers配置文件(一定要用visudo,它会自动检查语法错误,避免配置出错导致sudo功能失效) - 在文件末尾添加类似这样的配置行:
你的普通用户名 ALL=(root) NOPASSWD: /usr/bin/echo "Hello World"
- 其中
NOPASSWD:是可选的,如果不想让用户每次执行都输入密码就加上;去掉的话,用户执行时需要输入自己的登录密码。 - 这样配置后,用户只能用sudo执行这一条特定的
echo命令,完全无法使用sudo进行其他管理员操作,完美符合你不想让他们成为管理员的需求。
如果你实在不想碰sudo,还有一种方法是给特定二进制程序设置setuid位,但这个方法风险极高——如果程序存在漏洞,很可能被用来获取完整root权限,而且shell脚本无法设置setuid,只能用编译后的二进制文件,所以非常不推荐这种方式。
备注:内容来源于stack exchange,提问作者Lucy Ciara
相关产品推荐
相关产品推荐

