Aller au contenu principal
Sujet résolu
Ce sujet a été marqué résolu et ne nécessite aucune autre attention.
Sujet: setuid (Lu 396 fois) sujet précédent - sujet suivant

setuid

Bonjour,

j'apprends… Ces derniers jours j'ai fait quelques tests avec 'setuid' sur un script en bash (les attributs). Mais ça ne marche pas comme je le souhaite.

Présentation du dossier contenant le script:
thierry@toto-PC:~/Documents/Informatik> ll -d ../Informatik/
drwxr-xr-x 2 thierry users 4096  7 déc.  09:33 ../Informatik/
thierry@toto-PC:~/Documents/Informatik>

Le contenu du script SETUID_Prog:
thierry@toto-PC:~/Documents/Informatik> cat SETUID_prog 
#!/bin/bash
# Verwendung von 'SETUID', Dateiattribut…

echo "Geben Sie eine Zahl ein:"
read zahl
echo $zahl > zahl.txt
echo "Die Zahl ist $zahl und ist in der Datei zahl.txt gespeichert"
thierry@toto-PC:~/Documents/Informatik>

Attributs du script SETUID_Prog (petit 's', donc le script est exécutable 'x' et le 'setuid bit' est bien actif):
thierry@toto-PC:~/Documents/Informatik> ll SETUID_prog
-rwsr--r-- 1 root root 189  7 déc.  10:15 SETUID_prog
thierry@toto-PC:~/Documents/Informatik>

Le drame
:
thierry@toto-PC:~/Documents/Informatik> ./SETUID_prog
bash: ./SETUID_prog: Permission non accordée
thierry@toto-PC:~/Documents/Informatik>

Pourquoi ne puis-je pas exécuter ce script ?
Il doit certainement exister une sécurité pour éviter mes agissements, mais où ?

Merci.

Re : setuid

Répondre #1
Bonjour,
Car le propriétaire est root ?

Re : setuid

Répondre #2
Salut chalu,

oui, dans une situation "normale" (pas celle que j'évoque dans ce post), si un fichier a comme attributs -rwx------ root root, alors l'unique utilisateur pouvant exécuter ce fichier sera 'root'. Dans ce cas normal, il faut changer le propriétaire du fichier…

Mais il existe des attributs spéciaux, tels que setuid, setgid et sticky bit. Si le setuid bit d'un fichier (un programme en l'espèce) est 's' (s=setuid +x; S=setuid), ce dernier devrait être exécutable par tout le monde.
C'est par exemple le cas du fichier "-rwsr-xr-x 1 root shadow 60904  8 juin  22:12 /usr/bin/passwd", et pourtant chacun a le loisir de changer son mot de passe en appelant 'passwd', sans être 'root'.
Citer
A set-user-ID program allows a process to gain privileges it would not normally have, by setting the process’s effective user ID to the same value as the user ID (owner) of the executable file.

Je pense que cela est valable pour un programme compilé, un binaire. Mais que pour un script en bash (interprété), soit il doit y avoir des sécurités, soit cela n'est pas possible.

Re : setuid

Répondre #3
C'est une fonction qui pour des raisons de sécurité ne fonctionne aujourd'hui qu'avec un programme compilé, les scripts sont ainsi maintenant exclus du champs d'application du 'setuid' ainsi que du 'setgid'.

Citer
The setuid/gid-bit became ignored on many systems for security reasons.

Wiki (en anglais c'est mieux fourni!!):
Citer
The setuid and setgid flags only have effect on binary executable files. Setting these bits on scripts like bash, perl or python does not have any effect.

Due to potential security issues,[4] many operating systems ignore the setuid attribute when applied to executable shell scripts.

Remarque:
Par contre le 'setgid' fonctionne très bien sur un dossier. Son action: le groupe propriétaire de chacun des fichiers créés dans ce dossier sera celui du propriétaire du dossier (même si c'est 'root' qui crée un nouveau fichier dans ce dossier)

Exemple:
thierry@toto-PC:~/Documents> chmod 2770 Informatik2
thierry@toto-PC:~/Documents> ll -d Informatik2
drwxrws--- 2 thierry users 4096  7 déc.  11:57 Informatik2

toto-PC:/home/thierry/Documents/Informatik2 # touch toto
toto-PC:/home/thierry/Documents/Informatik2 # ls -l
total 0
-rw-r--r-- 1 root users 0  7 déc.  15:28 toto


 

Re : setuid

Répondre #4
ah oui le s
tu avais déjà créé un fil à ce sujet non ? ça me dit quelque chose 🧐
Donc c'est pour une raison de sécurité que ça ne fonctionne pas sur un script.