我在 64 位 Centos 5 Linux 上。这是 Python2.4 附带的,但我需要 2.6 或更高版本才能获得 psycopg2。我安装了一个虚拟环境来运行 Python2.7.3(基于这个http://toouchdata.com/2012/06/25/how-to-install-python-2-7-3-on-centos-6-2/ ) 现在,当我以 root 身份登录时,一切似乎都运行良好。
但我需要能够以非 root 用户 joshmoe 的身份使用 virtualenv。(并以其他用户身份启动/停止 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 状态”之类的语句。