Deaktivieren Sie Python-Versionen für bestimmte Benutzer, ohne Python zu deinstallieren

7

Es gibt viele verschiedene Python-Versionen in meiner Ubuntu-Maschine:

/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

Ich möchte, dass eine bestimmte Benutzergruppe nur auf "Python" (z. B. 3.6.6) Zugriff hat und den Zugriff für andere Versionen deaktiviert.

Ich denke, die Deinstallation von Python würde andere Probleme verursachen. Was wäre der empfohlene Weg, um dieses Ziel zu erreichen, ohne etwas zu beschädigen?

Caner
quelle
Wenn Sie sich die realen Dateien und ihre Größe ansehen, haben Sie nur 3 Versionen: 2.7, 3.5 und 3.5m (das ist 3.5 mit einem anderen Speicherzuweisungsschema).
Xenoid
@ Xenoid, ja die kamen mit Ubuntu. Es gibt auch eine andere, die ich installiert habe (Version 3.6.6), und ich möchte, dass die Benutzer diese neue Version verwenden und keinen Zugriff auf ältere Versionen haben.
Caner

Antworten:

3

chown Die nicht öffentlichen Versionen einer bestimmten Gruppe können nur von dieser Gruppe ausgeführt werden (chmod 754 ...) und die zulässigen Benutzer zu dieser Gruppe hinzugefügt werden.

Beachten Sie jedoch, dass es Systemdienstprogramme gibt, die auf bestimmten Python-Versionen basieren, sodass Sie wahrscheinlich etwas kaputt machen werden: In meinem Ubuntu 16.04 /usr/binenthält es 106 Dateien mit einem python.*Shebang, von denen 47 einen python3Shebang haben.

Xenoid
quelle
2

Ich möchte, dass die Benutzer diese neue Version verwenden und keinen Zugriff auf ältere Versionen haben.

Tu es nicht.

Es gibt einen Grund, warum Ubuntu mit zwei Versionen von Python geliefert wird. Einige Dienstprogramme sind in Python2 geschrieben und können nicht in Python 3 ausgeführt werden. Andere sind in Python 3 geschrieben und können nicht in Python 2 ausgeführt werden.

Darüber hinaus wird Python 2 immer noch häufig für alle Arten von Aufgaben verwendet, und der Großteil des Python-Codes ist wahrscheinlich immer noch Python 2.

Python 2.7 wird bis mindestens 2020 mit Fehlerkorrekturen unterstützt.

vidarlo
quelle
2

Ich habe dies mithilfe der aclBerechtigungen getan . Ich habe gerade den Zugriff auf falsche Python-Versionen für meine Zielbenutzergruppe entfernt. so einfach ist, nichts ist kaputt (kann nicht glauben, dass jemand dies vorgeschlagen hat).

Installieren Sie acl

sudo apt-get install acl

Montieren Sie die Systemfestplatte erneut mit ACL-Unterstützung

Bearbeiten fstab:

sudo nano /etc/fstab

Fügen Sie "acl" -Unterstützung hinzu, falls nicht bereits vorhanden, z. B. Ändern von

UUID=abc-123-456-789 / ext4 defaults 1 1

Zu:

UUID=abc-123-456-789 / ext4 defaults,acl 1 1

Setzen Sie die Wurzel wieder ein:

sudo mount -o remount /

Zugriffsrechte festlegen

Erstellen Sie einen symbolischen Link für Python3, damit sowohl Python als auch Python3 für meine Zielbenutzergruppe funktionieren:

sudo ln -s /usr/local/bin/python /usr/local/bin/python3

Aktualisieren Sie die ACL-Berechtigungen so, dass der Zugriff aus den Systempythonversionen für die Benutzergruppe "blockiert" entfernt wird:

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
Caner
quelle