Существует много различных версий Python в моей машине человечности:
/home$ ls /usr/bin/ | grep python
dh_python2
dh_python3
python
python2
python2.7
python3
python3.5
python3.5m
python3m
/home$ which python
/usr/local/bin/python
python --version
Python 3.6.6
Я хочу определенную группу пользователей, имеют доступ только к "Python" (например, 3.6.6) и отключают доступ для других версий.
Я думаю, удаляя Python, вызвал бы другие проблемы. Каков был бы рекомендуемый способ достигнуть этой цели, ничего не повреждая?
Я сделал это при помощи acl
полномочия. Я просто удалил доступ к неправильным версиям Python для моей группы целевого пользователя. простой как это, ничто не повреждается (не может полагать, что любой предложил это).
sudo apt-get install acl
Править fstab
:
sudo nano /etc/fstab
Уже добавьте поддержку "acl" если не там, например, изменившись от
UUID=abc-123-456-789 / ext4 defaults 1 1
Кому:
UUID=abc-123-456-789 / ext4 defaults,acl 1 1
Повторно смонтируйте корень:
sudo mount -o remount /
Создайте символьную ссылку для python3 так, чтобы и Python и python3 работали на мою группу целевого пользователя:
sudo ln -s /usr/local/bin/python /usr/local/bin/python3
Обновите acl полномочия так, чтобы доступ был удален из системных версий Python для "заблокированной" группы пользователей:
setfacl -m g:blocked:- -R /usr/bin/python2
setfacl -m g:blocked:- -R /usr/bin/python3
setfacl -m g:blocked:- -R /usr/bin/python3.5m
chown
непубличная версия (версии) спец группе, сделайте это исполняемым файлом только той группой (chmod 754...) и добавьте разрешенных пользователей к той группе.
Но имейте в виду, что существуют системные утилиты, которые полагаются на определенные версии Python, таким образом, Вы, вероятно, повредите что-то: в моей Ubuntu 16.04, /usr/bin
содержит 106 файлов с a python.*
хижина, которой 47 имеют a python3
хижина.
Я хочу, чтобы пользователи использовали ту новую версию и не имели никакого доступа к более старым версиям.
Не делать.
Существует причина, Ubuntu идет с двумя версиями Python. Это - это, некоторые утилиты записаны в Python2 и не могут работать в Python 3. Другие записаны в Python 3 и не могут работать в Python 2.
Кроме того, Python 2 все еще широко используется для всех видов задач, и большинством кода Python там является, вероятно, все еще Python 2.
Python 2.7 будет поддерживаться с исправлениями ошибок до, по крайней мере, 2020.