You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 24.04下sudoers文件添加带参数的chown命令时出现语法错误的解决咨询

Ubuntu 24.04下sudoers文件添加带参数的chown命令时出现语法错误的解决咨询

嗨,我来帮你搞定这个sudoers配置的问题~

你遇到的问题是因为在sudoers里直接写带固定参数的命令时,语法解析的严格性导致的。sudo对带参数的命令匹配有精确的要求,直接把所有参数堆在一行有时候会触发语法检查失败,不过有两个稳妥的解决办法:

方法一:用Cmnd_Alias封装命令(推荐)

这是最清晰也最不容易出错的方式,先把带参数的chown命令定义成一个命令别名,再给用户授权。编辑sudoers时依然用visudo命令打开,然后添加以下内容:

# 定义命令别名,把带参数的chown命令封装进去
Cmnd_Alias CHOWN_DEVICE_LOG = /usr/bin/chown -R device_monitor:device_monitor /var/log/device-monitor/*
# 给device_monitor用户授权使用这个命令,无需输入密码
device_monitor ALL=(ALL) NOPASSWD: CHOWN_DEVICE_LOG

保存退出后,用sudo -l -U device_monitor命令可以检查授权是否生效,正常情况下会看到这条CHOWN_DEVICE_LOG的权限。

方法二:直接在授权行里精确书写命令

如果你不想用别名,也可以直接在授权行里写完整的命令,但要确保参数和路径的格式完全正确,比如:

device_monitor ALL=(ALL) NOPASSWD: /usr/bin/chown -R device_monitor:device_monitor /var/log/device-monitor/*

不过这种方式有时候会因为sudo的语法检查规则(比如通配符和参数的组合)出问题,所以还是推荐用别名的方式。

补充说明

你之前去掉-R和用户组后能生效,是因为此时sudo只检查命令路径/usr/bin/chown,允许你用这个命令的任何参数组合;而当你加上固定参数后,sudo需要精确匹配你指定的参数序列,这时候写法稍有不慎就会触发语法错误,用命令别名可以规避这个问题。

最后再强调一遍:永远不要直接用vim或者其他编辑器编辑/etc/sudoers,一定要用visudo,它会在保存前自动做语法检查,避免因为配置错误导致无法使用sudo的尴尬情况。

备注:内容来源于stack exchange,提问作者user1994584

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 14:03:14