
Ich möchte eine Sudo-Regel entwerfen, die es dem Benutzer ermöglicht, ricardo
das System mit zu aktualisieren aptitude
, ihn aber daran hindert, mit Sudo andere Befehle auszuführen (er ist ein Problembenutzer). Gibt es bei dieser Regel irgendwelche Fallstricke, die ich übersehen habe?
ricardo ALL=(root) /usr/bin/aptitude
Ricardo verwendet nur aptitude
, nicht apt-get
. Außerdem habe ich Ubuntu momentan nirgends installiert, daher ist mir klar, dass dies /usr/bin/aptitude
möglicherweise nicht die genau richtige Datei ist, die zugelassen werden sollte.
Wenn diese Regel Fallstricke aufweist, wie kann ich sie verbessern?
Antwort1
Dieser Befehl verhindert, dass der Benutzer den Befehl aptitude
für andere Zwecke als die Aktualisierung des Repository-Cache und die Durchführung eines sicheren Upgrades des Systems verwenden kann.
ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude safe-upgrade
Mit einem ähnlichen Befehl kann der Benutzer ein vollständiges Upgrade durchführen, mehr jedoch nicht:
ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude full-upgrade
Proaptitude-Dokumentation (10.04), safe-upgrade
:
Aktualisiert installierte Pakete auf die neueste Version. Installierte Pakete werden nicht entfernt, es sei denn, sie werden nicht verwendet.
Im Gegensatz, full-upgrade
:
Aktualisiert installierte Pakete auf die neueste Version und entfernt oder installiert Pakete nach Bedarf. Dieser Befehl ist weniger konservativ als Safe-Upgrade und führt daher eher unerwünschte Aktionen aus. Er kann jedoch Pakete aktualisieren, die Safe-Upgrade nicht aktualisieren kann.
Entscheiden Sie nach bestem Wissen und Gewissen, welche Aktionen der Benutzer ausführen darf. Wenn Sie sich nicht sicher sind, verwenden Sie die erste Regel, die nur zulässt safe-upgrade
.
*
Beachten Sie, dass Sie nach dem aptitude
Befehl ein einfügen müssen, wenn Sie einem Benutzer das Installieren von Paketen erlauben möchten (was die Sicherheit stark einschränkt, aber nur hypothetisch), d. h.
ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude safe-upgrade, /usr/bin/aptitude install *
Andernfalls erhalten Sie eine Fehlermeldung, dass der Benutzer ricardo
den Befehl nicht ausführen darf /usr/bin/aptitude install <package_name>
.
Antwort2
Sie können sudo -l
sehen, welche Befehle ein Benutzer ausführen darf. So können Sie beispielsweise sehen, welche Befehle ricardo ausführen darf:
sudo -ll -U ricardo
um zu sehen, ob er Eignung ausführen kann,
sudo -ll -U ricardo /usr/bin/aptitude
Dadurch wird entweder der Befehlsname mit der Erweiterung „sudo“ gedruckt oder das Programm wird mit Code 1 beendet, wenn der Benutzer den Befehl nicht verwenden darf.
Dies sollte zu Ihrem Test auf jedem aktuellen Debian-basierten System funktionieren; die Syntax ist nicht Ubuntu-spezifisch.
Quelle:Mann sudo
Antwort3
Ich kann eigentlich nichts sehenfalschsudo
mit dieser sudoers-Zeile. Leider habe ich nicht so viel mit den Konfigurationseinstellungen von herumgespielt , daher ist mein Rat in diesem Fall möglicherweise nicht zuverlässig. Glücklicherweise habe ichdürfenIch gebe Ihnen nur eine Zeile, von der ich weiß, dass sie sicher ist:
ricardo ALL=/usr/bin/aptitude
Diese Zeile ermöglicht garantiert nur die Ausführung von ricardo aptitude
als Root, solange ricardo kein Mitglied einer sudo-fähigen Gruppe wie sudo
oder ist admin
.
Quelle:8 Möglichkeiten zum Optimieren und Konfigurieren von Sudo unter Ubuntu - How-to Geek.