在不卸载 python 的情况下为某些用户禁用 python 版本

Can*_*ner 7 python

我的 ubuntu 机器中有很多不同的 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
Run Code Online (Sandbox Code Playgroud)

我希望某个用户组只能访问“python”(例如 3.6.6)并禁用其他版本的访问。

我认为卸载 python 会导致其他问题。在不破坏任何东西的情况下实现这一目标的推荐方法是什么?

Can*_*ner 2

我是通过使用acl权限来做到这一点的。我刚刚删除了目标用户组对错误 python 版本的访问权限。就这么简单,没有任何问题(不敢相信有人建议这样做)。

安装acl

sudo apt-get install acl
Run Code Online (Sandbox Code Playgroud)

重新挂载系统盘并支持acl

编辑fstab

sudo nano /etc/fstab
Run Code Online (Sandbox Code Playgroud)

添加“acl”支持(如果尚未存在),例如从

UUID=abc-123-456-789 / ext4 defaults 1 1
Run Code Online (Sandbox Code Playgroud)

到:

UUID=abc-123-456-789 / ext4 defaults,acl 1 1
Run Code Online (Sandbox Code Playgroud)

重新挂载根:

sudo mount -o remount /
Run Code Online (Sandbox Code Playgroud)

设置访问权限

为 python3 创建符号链接,以便 python 和 python3 都适用于我的目标用户组:

sudo ln -s /usr/local/bin/python /usr/local/bin/python3
Run Code Online (Sandbox Code Playgroud)

更新 acl 权限,以便从用户组“blocked”的系统 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
Run Code Online (Sandbox Code Playgroud)