【问题标题】:Getting syntax error while using 'source /some/path/to/file' inside a sudoers file在 sudoers 文件中使用 'source /some/path/to/file' 时出现语法错误
【发布时间】: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 命令。由于您发布的行在语法上没有错误,因此错误必须在其他地方。例如检查文件的行尾。

标签: bash shell sudoers


【解决方案1】:

你应该用 source 命令创建一个文件(这里我叫它the_sourcerer.sh

#!/bin/bash    
source /file/path

确保在尝试使用之前运行以下命令

chmod +x /path/to/the_sourcerer.sh

然后将更正的行添加到/etc/sudoers

abc ALL = (root) NOPASSWD: /path/to/the_sourcerer.sh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-12
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 2022-12-26
    • 2012-08-27
    • 1970-01-01
    • 2023-01-31
    相关资源
    最近更新 更多