Ich habe ein Skript, das einige meiner Benutzer ausführen können sollen und für das Administratorrechte erforderlich sind. Natürlich möchte ich ihnen keine Administratorrechte erteilen. Wie kann ich die Ausführung dieses Skripts auf sichere Weise ermöglichen?
Update: Dies ist ein Ubuntu 9.10-System.
Antwort1
Verwenden Sie einfach sudo. Sie müssen sudo in konfigurieren /etc/sudoers
, etwa so:
fred ALL = (root) NOPASSWD: /path/to/command
Ersetzen Sie „fred“ durch den Benutzernamen oder verwenden Sie „%group“ für eine Gruppe. Wenn Sie die Option „NOPASSWD:“ entfernen, werden die Benutzer jedes Mal nach ihrem Passwort gefragt.
setuid in einem Skript ist unsicher und funktioniert unter Linux nicht.
Antwort2
sudo und SUID sind beidesehr unsicher. Es ist möglich – und je nach Skriptsprache auch einfach –, aus beiden auszubrechen. SUID ist bei weitem das Schlimmste, und einige Skriptsprachen laufen in diesem Fall nicht einmal.
Ich habe einen Blogbeitrag darüber, wie man es sicher macht, den ich zuerst fürNagios-Check-Plugins als Root ausführenaber ist hier perfekt anwendbar. Es gibt ein kleines C-Programm (das seit Jahren in der Linux-Admin-Welt kursiert), das einfach als Wrapper für das Skript fungiert. Sie bearbeiten einfach die C-Programmquelle, um den vollständigen Pfad zum Skript einzuschließen, kompilieren es und legen dann diese SUID fest (oder erteilen Sudo-Zugriff darauf). Die Quelle befindet sich auf meiner Site:setuid-prog.c.
Das inhärente Problem beim Ausführen von Skripten als Root (für Nicht-Root-Benutzer) besteht darin, dass es in vielen Sprachen mithilfe verschiedener Techniken (von schlechter Eingabeprüfung bis hin zu Überläufen) möglich sein kann, aus dem laufenden Skript auszubrechen und vollen Root-Zugriff zu erhalten. Viele alte Unix-Leute empfehlen, einfach ein C-Programm zu schreiben, um das zu tun, was Sie brauchen - aber andererseits waren die meisten davon SAs, als Sieerforderlichkompetent C schreiben zu können.
Antwort3
Auf welchem Betriebssystem?
Unter Linux/Unix können Sie ihnen erlauben, es über sudo auszuführen. Die Datei /etc/sudoers kann geändert werden, um ihnen bestimmte Berechtigungen für bestimmte Befehle und bestimmte IDs (Benutzer) zu erteilen.
Alternativ können Sie das SUID-Bit setzen und das Skript so ändern, dass es einem privilegierten Benutzer gehört. Dadurch wird das Skript so eingestellt, dass es als dieser Benutzer ausgeführt wird und nicht als der Benutzer, der es ausführt. Dies gilt jedoch für alle Benutzer, die es ausführen.
Antwort4
Es gibt zwei Möglichkeiten:
Am besten ist es, das SUID-Bit darauf zu setzen: chown root yourscript; chmod a+s yourscript
.
Alternativ können Sie ihnen den Zugriff zum Ändern erteilen sudo
, indem Sie ausführen visudo
und den Anweisungen folgen. Dies ist jedoch nicht erforderlich, da dies funktioniert, indem sie ausführen sudo
, das über das SUID-Bit verfügt.