D'où vient le terme "superutilisateur"? S'agit-il d'un raccourcissement du terme "utilisateur superviseur" ou est-il simplement un indicateur du niveau de puissance qu'un tel utilisateur détient dans un système?
su permet de devenir le super-utilisateur, qui dispose de toutes sortes de pouvoirs merveilleux.
De la page de manuel First Edition Unix su:
11/3/71 SU (I)
NAME su -- become privileged user
SYNOPSIS su password
DESCRIPTION su allows one to become the super--user, who has all sorts
of marvelous powers. In order for su to do its magic, the
user must pass as an argument a password. If the password
is correct, su will execute the Shell with the UID set to
that of the super--user. To restore normal UID privileges,
type an end--of--file to the super--user Shell
FILES
SEE ALSO Shell
DIAGNOSTICS "Sorry" if password is wrong
BUGS
OWNER dmr, ken
Source minnie.tuhs.org/UnixTree/V5/usr/source/s2/su.c.html
su
est utilisé sur les systèmes Unix pour changer d'utilisateur, et est généralement utilisé pour exécuter des commandes en tant qu'utilisateur root.
Et ... lisez la suite
J'ai eu un autre moment de tremblement de base avec la signification de "su". J'ai trouvé un vieux code source Unix, où le code su.c était disponible . Curieux, j'ai regardé la source. Qu'est-ce que j'ai trouvé?
/* su -- become super-user */ char password[100]; char pwbuf[100]; int ttybuf[3]; main() { register char *p, *q; extern fin; if(getpw(0, pwbuf)) goto badpw; (&fin)[1] = 0; p = pwbuf; while(*p != ':') if(*p++ == '\0') goto badpw; if(*++p == ':') goto ok; gtty(0, ttybuf); ttybuf[2] =& ~010; stty(0, ttybuf); printf("password: "); q = password; while((*q = getchar()) != '\n') if(*q++ == '\0') return; *q = '\0'; ttybuf[2] =| 010; stty(0, ttybuf); printf("\n"); q = crypt(password); while(*q++ == *p++); if(*--q == '\0' && *--p == ':') goto ok; goto error; badpw: printf("bad password file\n"); ok: setuid(0); execl("/bin/sh", "-", 0); printf("cannot execute Shell\n"); error: printf("sorry\n"); }
Quel est le premier commentaire dans ce fichier C?
/* su -- become super-user */
su
a été écrit pour ne modifier que l'utilisateur root du système. Il n'a pas été conçu pour basculer vers un autre utilisateur disposant d'un compte. "su" signifiait "super-utilisateur". Je dois m'asseoir une seconde.Le code ci-dessus provient de la cinquième édition d'Unix par Dennis Ritchie et Ken Thompson. Si vous connaissez votre histoire Unix, ce n’est vraiment que lors de la sixième édition que les choses ont vraiment commencé à décoller pour le monde Unix. Il est donc prudent de dire que la plupart, sinon la totalité, du code de la cinquième édition et des versions antérieures ont été écrites par Dennis et Ken eux-mêmes. La cinquième édition d'Unix est sortie en 1975, donc ça ne fait pas plus autorité que ça.
Source Aaron Toponce: La signification de 'su'
OED (paywalled) donne l'étymologie suivante:
super- préfixe + utilisateur n.
Le premier exemple cité est celui de K. Thompson & D. M. Ritchie (1971): "Unix Programmer's Man.":
Seul le super-utilisateur peut appeler cette commande.