web-dev-qa-db-fra.com

Que signifie l'attribut «s» dans les autorisations de fichier?

Veuillez comparer les deux lignes suivantes:

-rws---r-x 1 root root 21872 2009-10-13 21:06 prg1 

-rwx---r-x 1 root root 21872 2009-10-13 21:06 prg2 

Le bit setuid sur prg1, avec les bits de lecture et d'exécution pour 'autre' signifie que n'importe quel utilisateur peut l'exécuter avec les privilèges root? Le prg2 a également lu et exécuté pour 'autre', mais n'a pas le bit setuid défini, donc cela signifie-t-il qu'il peut toujours être exécuté par n'importe quel utilisateur mais sans privilèges root?

59
anders

C'est exactement le contraire, vous n'avez pas besoin d'utiliser Sudo ou de passer en root, l'exécutable le fait pour vous.

20
orion

Il s'agit du bit "setuid", qui indique au système d'exploitation d'exécuter ce programme avec l'ID utilisateur de son propriétaire. Ceci est généralement utilisé avec des fichiers appartenant à root pour permettre aux utilisateurs normaux de les exécuter en tant que root sans outils externes (tels que Sudo).

Vous pouvez définir le bit suid en utilisant chmod, par exemple chmod 4755 qui donnera un fichier donne les permissions normales 755 (rwxr-xr-x) et ajoutez le bit suid pour donner rwsr-xr-x

Vous pouvez effacer le bit setuid en émettant une commande chmod normale avec un 0 ajouté. Par exemple, pour redéfinir les autorisations sur rwxr-xr-x vous utiliseriez chmod 0755.

69
casey