【发布时间】:2019-01-08 08:54:00
【问题描述】:
我有一个用户“abc”,我想授予他非常有限的权限。其中之一是“abc”必须能够获取文件但不能读取它。因此,我将 root 设置为该文件的所有者,并尝试为这个“abc”用户授予 sudo 访问权限,以便他可以获取它。
abc ALL = (root) NOPASSWD: source /file/path
当我将以上内容写入 /etc/sudoers 文件时,出现语法错误。
我知道'source' 是一个内置函数而不是一个可以在 sudoers 文件中使用的程序。如果是这样,那我的问题还有其他出路吗?
【问题讨论】:
-
“必须能够获取文件但不能读取它”没有意义,您必须具有读取权限才能获取文件。请显示确切的错误消息以及您收到错误的情况。 “当我将上述内容写入 /etc/sudoers 文件时,出现语法错误”不明确,您是如何编写的?
-
我正在使用 visudo 编写它。我得到的错误是 /etc/sudoers: 第 116 行附近的语法错误
-
must beable to source a file but not read it这是不可能的。source是 bash 内置的,不能传递给 sudo。您可以创建一个包装器,在执行时将输出相关文件。 -
@AbhishekSharmaM :您可以将命令指定为,即
/bin/bash -c "source /file/path",虽然我不明白为什么您不使用内置的source不简单地运行脚本,但当然这由您决定。但是,我认为这不会让您的错误消失,因为您说您在 sudoers 文件中收到 syntax 错误,这意味着 sudo 甚至不会尝试调用您的(错误) source 命令。由于您发布的行在语法上没有错误,因此错误必须在其他地方。例如检查文件的行尾。