Warum funktioniert meine Einstellung mit NFS und setuid nicht unter Linux?

1740
Marcus Thornton

Ich verwende Linux. Auf dem Computer-AI haben diese NFS-Einstellungen folgende Einstellungen etc/exports:

/home 10.0.129.130(rw,no_root_squash) 

Ich mounte dieses Verzeichnis auf Maschine A auf /home/nfs/Maschine B. Und ich habe setuid mit gesetzt chmod u+x program1.sh.

Auf Machine BI soll der Benutzer xyzdie program1.shBerechtigung root verwenden. Die Einstellung von program1.shist wie folgt:

-rwsr-x--- 1 root house 1299 May 15 23:54 program1.sh 

, was beinhaltet mkdir -p /home/nfs/house/nsx/

Ich habe festgelegt xyz, in der Gruppe zu housesein, xyzdamit laufen kann program1.sh. Beim Laufen program1.shzeigt es jedoch:

mkdir: cannot create directory `/home/nfs/house/nsx/': Permission denied 

program1.shAls root zu laufen ist in Ordnung. Ich weiß nicht, warum es nicht mit dem Benutzer funktioniert xyz.

0

2 Antworten auf die Frage

1
grawity

Von den Namen program.sh, ich bin zu raten, dass Sie versuchen, eine interpretierte Skript auszuführen, keine ELF - Binaries. Linux hat das Setuid-Bit in Skripts aufgrund von möglichen Sicherheitsproblemen (Racebedingung zwischen dem Kernel, der das Bit + überprüft, und dem Skriptinterpreter, der die Datei öffnet) ignoriert .

Wenn dieses Skript für bestimmte Benutzer verfügbar sein muss, erstellen Sie sudoin / etc / sudoers eine Regel, die Folgendes zulässt:

xyz ALL=(root:root) NOPASSWD: /usr/local/bin/program.sh 

Möglicherweise gibt es andere Lösungen. Wenn Sie beispielsweise (bei der ersten Anmeldung) Heimatverzeichnisse automatisch erstellen möchten, ist hierfür das pam_mkhomedir.soPAM-Modul vorhanden.

0
alfasin

Weil nur rootBenutzer und Benutzer nfsBerechtigungen für Dateien / Ordner haben:/home/nfs

Ich habe setuid mit `chmod u + x` eingestellt. Bedeutet das nicht, dass ich dieses Programm als root ausführen kann. Wie "passwd" ist sein Privileg "-rwsr-xr-x", sodass andere Benutzer dies als root ausführen können. Marcus Thornton vor 9 Jahren 0