没有sudo或用户特定的安装和重新配置,不能使用virtualenv

时间:2013-12-13 16:12:51

标签: python permissions debian virtualenv pip

我想在我的debian jessie服务器上安装一个系统范围的virtualenv,每个用户都可以使用,无需sudo(无论如何应该工作)或用户特定的安装。

这是我从头开始输入的内容:

$ sudo apt-get install python3
#Install OK
$ sudo apt-get install python3-pip
#Install OK
$ pip3 install virtualenv
#Fails with "error: could not create '/usr/local/lib': Permission denied"
$ sudo pip3 install virtualenv
#Install OK, but it appears that '/usr/local/bin' now has 'drwxr-s---'
#permissions instead of 'drwxrwsr-x' (users can't list files in the directory...)
$ virtualenv env1
#Fails with "Command not found" (virtualenv is in '/usr/local/bin')
$ sudo virtualenv env1
#OK, but that's not the way it should work

我可以使用特定于用户的安装(pip3 install --user virtualenv)和“〜/ .bashrc”中的一些$ PATH初始化,但每个用户必须安装和重新配置virtualenv才有点费力。< / p>

我确定我错过了一些东西,但是当我运行命令安装virtualenv时,似乎pip3没有正确设置它在'/ usr / local'中创建的文件和文件夹的权限。

1 个答案:

答案 0 :(得分:1)

解决了它。

问题出在我的'/etc/logins.def'文件中,我将所有用户(包括root用户)的默认UMASK设置为007(非所有者的新文件或文件夹没有读/写/执行权限或非团体成员)。因此,sudo pip3 install virtualenv行在'/ usr / local'中创建文件夹和可执行文件,权限过于严格。

为了解决这个问题,我在'/root/.bashrc'中更改了root的umask(如果有人使用sudo su安装包),并在'/ etc / sudoers'中添加以下行visudo命令:

#UMASK is not unioned with the one set in the PAM module
Defaults        umask_override
#Default UMASK is 007 for non-root users (for some reason I can't use 'Defaults>!root')
Defaults        umask=0007
#Root UMASK is 022, to overcome permission problems when installing packages
Defaults>root   umask=0022

现在我可以在重复这些步骤后执行virtualenv:

$ sudo apt-get install python3
#Install OK
$ sudo apt-get install python3-pip
#Install OK
$ sudo pip3 install virtualenv
#Install OK
$ virtualenv env1
#OK