Warum haben Programme wie su Zugriff auf / etc / shadow
Weil Programme mögen su
und eingestellt passwd
haben SetUID
. Sie können Folgendes überprüfen:
[root@tpserver tmp]# ls -l /usr/bin/passwd
-r-s--x--x 1 root root 21200 Aug 22 2013 /usr/bin/passwd
Wenn Sie sich in Ihrer Dateiberechtigung umschauen, sehen Sie "s". Wenn jemand versucht, das passwd
Programm auszuführen , übernimmt er standardmäßig das Privileg des Eigentümers (hier root) der Datei. Dies bedeutet, dass jeder Benutzer das Root-Recht erhalten kann, das passwd
Programm auszuführen , da nur der Root-Benutzer das Programm bearbeiten oder aktualisieren /etc/passwd
und /etc/shadow
archivieren kann. Andere Benutzer können nicht. Wenn der normale Benutzer das passwd
Programm auf seinem Terminal ausführt, wird das passwd
Programm als "root" ausgeführt, da die effektive UID auf "root" gesetzt ist. So kann der normale Benutzer die Datei problemlos aktualisieren.
Sie können den chmod
Befehl mit den Argumenten u+s
oder verwenden g+s
, um die Bits setuid und setgid für eine ausführbare Datei festzulegen
Lange Antwort: Set-User_Id (SUID): Power für einen Moment:
Wenn ein Benutzer eine Datei ausführt, verfügt der Prozess, der zu dieser Ausführung führt, standardmäßig über dieselben Berechtigungen wie der Benutzer. Tatsächlich erbt der Prozess seine Standardgruppen- und Benutzeridentifikation.
Wenn Sie das SUID-Attribut für eine ausführbare Datei festlegen, verwendet der Prozess, der zu seiner Ausführung führt, nicht die Benutzeridentifikation, sondern die Benutzeridentifikation des Dateieigentümers.
Der von Dennis Ritchie erfundene SUID-Mechanismus ist ein potenzielles Sicherheitsrisiko. Es ermöglicht einem Benutzer, verborgene Kräfte zu erlangen, indem er eine solche Datei ausführt, die root gehört.
$ ls -l /etc/passwd /etc/shadow /usr/bin/passwd
-rw-r--r-- 1 root root 2232 Mar 15 00:26 /etc/passwd
-r-------- 1 root root 1447 Mar 19 19:01 /etc/shadow
Die Auflistung zeigt, dass passwd für alle lesbar ist, Schatten jedoch für Gruppen und andere nicht lesbar. Wenn ein Benutzer, der das Programm ausführt, zu einer dieser beiden Kategorien gehört (wahrscheinlich zu anderen), schlägt der Zugriff im Lesetest für Schatten fehl. Angenommen, ein normaler Benutzer möchte sein Passwort ändern. Wie kann er das machen? Er kann das tun, indem er rennt /usr/bin/passwd
. Viele UNIX / Linux-Programme verfügen über einen speziellen Berechtigungsmodus, mit dem Benutzer vertrauliche Systemdateien aktualisieren können - /etc/shadow
ähnlich wie etwas, das sie nicht direkt mit einem Editor tun können. Dies gilt für das passwd
Programm.
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 22984 Jan 6 2007 /usr/bin/passwd
Der Buchstabe s in der Benutzerkategorie des Berechtigungsfelds stellt einen speziellen Modus dar, der als set-user-id (SUID) bezeichnet wird. In diesem Modus verfügt ein Prozess während der Instanz des Programms über die Berechtigungen des Eigentümers der Datei. Wenn also ein nicht privilegierter Benutzer passwd ausführt, ist die effektive UID des Prozesses nicht die des Benutzers, sondern die des Stamms - des Eigentümers des Programms. Dieses SUID-Privileg wird dann von passwd zum Bearbeiten verwendet /etc/shadow
.
Referenzlink
sudo
undsu
Sie als root ausführen. Informationen zu den Interna finden Sie unter unix.stackexchange.com/questions/11285/how-does-sudo-work .