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.
Bonjour,
Car le propriétaire est root ?
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 "-rw
sr-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'.
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.
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'.
Wiki (https://en.wikipedia.org/wiki/Setuid) (en anglais c'est mieux fourni!!):
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
drwxrw
s--- 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
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.