2013-12-13 3 views
2

Я хотел бы иметь общесистемную установку virtualenv на моем сервере debian jessie, который можно использовать для каждого пользователя, не требуя sudo (как он должен работать в любом случае) или пользовательской установки.Невозможно использовать 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) и около $ PATH инициализации в «~/.bashrc», но это немного трудоемкий для каждый пользователь должен установить и перенастроить virtualenv.

Уверен, что у меня что-то не хватает, но кажется, что pip3 не устанавливает права доступа к файлам и папкам, которые он создает в '/ usr/local', когда я запускаю команду для установки virtualenv.

ответ

1

Решено.

Проблема была в моем файле «/etc/logins.def», в котором я установил UMASK по умолчанию для всех пользователей (включая root) на 007 (без разрешения на чтение и запись/выполнение для новых файлов или папок для не владельца или не члены группы). Таким образом, строка sudo pip3 install virtualenv создавала папки и исполняемые файлы в '/ usr/local' со слишком строгими разрешениями.

Чтобы преодолеть это, я изменил мой корневой биты полномочий в «/root/.bashrc» (в случае, если кто-то использует sudo su установить пакет), а также добавлены следующие строки в «/ и т.д./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 
Смежные вопросы