【问题标题】:Sudoer statement syntax to source virtualenv activate file源 virtualenv 激活文件的 Sudoer 语句语法
【发布时间】:2013-09-29 16:56:55
【问题描述】:

我使用的是 64 位 Centos 5 Linux。这是 Python2.4 附带的,但我需要 2.6 或更高版本才能获得 psycopg2。我安装了一个虚拟环境来运行 Python2.7.3(基于此http://toomuchdata.com/2012/06/25/how-to-install-python-2-7-3-on-centos-6-2/)现在当我以 root 身份登录时,事情似乎运行良好。

但我需要能够以非 root 用户身份使用 virtualenv,joshmoe。 (并以其他用户身份启动/停止 postgresql)

进入virtualenv的命令是:

source /root/Python-2.7.3/projectdir/bin/activate

可以理解,当我以 joshmoe 身份运行此命令时,我收到一条权限被拒绝消息:

-bash: /root/Python-2.7.3/projectdir/bin/activate: Permission denied

为了让 joshmoe 可以使用此命令,我编辑了 /etc/sudoers 以包含以下行:

joshmoe ALL=NOPASSWD: /root/Python-2.7.3/projectdir/bin/activate

现在从 joshmoe 登录,当我运行时:

sudo source /root/Python-2.7.3/projectdir/bin/activate

我得到以下信息:

sudo: source: command not found

我似乎很清楚我没有正确使用 sudoers 文件来指定该文件的来源——我似乎成功地访问了该“激活”文件,但没有访问内置的源函数。以下任何一行都会在 sudoers 中给出语法错误:

joshmoe ALL=NOPASSWD: source 

joshmoe ALL=NOPASSWD: source /root/Python-2.7.3/projectdir/bin/activate

我发现了很多不寒而栗的例子。但我无法弄清楚使这项工作有效的语法。我希望一旦我得到这个,我将能够访问诸如“服务 postgresql 状态”之类的语句。

【问题讨论】:

    标签: python linux postgresql virtualenv sudoers


    【解决方案1】:

    您的问题是您的用户没有对您的virutalenv 目录的root 访问权限。您需要授予用户访问权限才能使其工作,例如使用:

    sudo chmod o+x /root                     # grant access to root directory
    sudo chmod o+rX /root/Python-2.7.3 -R    # recursively grant access to everything in Python-2.7.3
    

    source 不是一个程序,它是一个 shell butiltin,它导致在当前 shell 中获取脚本。 sudo 只能执行程序,不能执行 shell 内建函数、函数或别名,这就是您收到该错误的原因。

    【讨论】:

    • 是的,我读到 source 是一个内置函数。在弄乱 sudoers 之前,我尝试了 chmod a+x/root/Python-2.7.3/projectdir/bin/activate 。但是我有点担心授予对整个根目录的可执行访问权限...
    • 你不应该把你的文件放在根目录中。如果其他用户应该可以访问它,那么/usr/local 可能是更好的位置。
    【解决方案2】:

    你不能像sudo source一样运行source;它是 bash 的内置命令,而不是程序。您在这里想要做的可能是使用sudo -s 以超级用户身份启动一个新的shell。

    【讨论】:

    • 谢谢,我可以在以 sudo 身份登录时做我需要做的事情,但在以 joeshmoe 身份登录时需要一种方法。
    猜你喜欢
    • 2020-12-20
    • 2021-06-02
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 2011-02-24
    • 2012-02-13
    • 2018-04-10
    相关资源
    最近更新 更多