Erlauben Sie dem Benutzer nicht, das Programm zu beenden, das als anderer Benutzer mit setuid bit gestartet wurde

439
varun

Ich habe ein binäres mit folgenden Berechtigungen. -rwsr-xr-x. 1 root root Wenn also ein Benutzer X versucht, die Binärdatei auszuführen, wird er als root ausgeführt. Darüber hinaus kann der Benutzer diesen Prozess (der als Root ausgeführt wird) von seiner ID abbrechen, indem er die kill -9 Methode Any auf beliebige Weise verwendet, um zu verhindern, dass der Benutzer den Prozess abbrechen kann.

0

1 Antwort auf die Frage

0
Tom Yan

Der Benutzer kann den Prozess töten, weil der Prozess mit der gestartet wird, Effective UIDder rootaber die Real UIDvon selbst. Andere Benutzer können diesen Prozess nicht beenden.

Sie können versuchen, das Bit SETUID und SETGID für Folgendes festzulegen id:

# chmod u+s,g+s $(which id) 

und vergleichen Sie dann die Ausgabe von:

id 

und

sudo id 

und du wirst den Unterschied sehen.

Sie können auch versuchen, einen Prozess zu beenden, der SETUID- und SETGID-Bits gesetzt hat und vom aktuellen Benutzer mit gestartet wird sudo -u SOMEOTHERUSER. Sie werden sehen, dass es nicht getötet werden kann.

Ich denke, der Punkt der SETUID- und SETGID-Bits besteht nicht darin, Root den Prozess selbst zu erlauben, sondern lediglich, um die Rechte zu eskalieren, aber den Prozess dem ausführenden Benutzer zu überlassen. Und ich bezweifle, dass Sie es ändern können, egal ob Sie es mögen oder nicht (es sei denn, Sie hacken den Kernel oder so?).