Skąd się wzięło pojęcie „superużytkownik”? Czy jest to skrócenie „użytkownika nadzorującego”, czy może to tylko wskaźnik poziomu mocy, jaką taki użytkownik posiada w systemie?
Skąd się wzięło pojęcie „superużytkownik”? Czy jest to skrócenie „użytkownika nadzorującego”, czy może to tylko wskaźnik poziomu mocy, jaką taki użytkownik posiada w systemie?
Odpowiedzi:
su pozwala stać się superużytkownikiem, który ma różnego rodzaju cudowne moce.
Ze strony podręcznika użytkownika pierwszej wersji Uniksa :
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
Źródło minnie.tuhs.org/UnixTree/V5/usr/source/s2/su.c.html
su
jest używany w systemach Unix do zmiany użytkownika i jest powszechnie używany do uruchamiania poleceń jako użytkownik root.
I ... czytaj dalej
Miałem kolejny wstrząsający moment w znaczeniu „su”. Znalazłem jakiś stary kod źródłowy Uniksa, gdzie su.c był dostępny . Zaciekawiony spojrzałem na źródło. Co znalazłem
/* 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"); }
Jaki jest pierwszy komentarz w tym pliku C?
/* su -- become super-user */
su
został napisany w celu zmiany tylko na użytkownika root w systemie. Nie został zaprojektowany do przełączania się na żadnego innego użytkownika, który ma konto. „su” oznaczało „superużytkownika”. Muszę usiąść na chwilę.Powyższy kod pochodzi z piątej edycji Uniksa autorstwa Dennisa Ritchie i Kena Thompsona. Jeśli znasz swoją historię uniksową, dopiero w szóstej edycji wszystko zaczęło się naprawdę rozwijać w świecie uniksowym. Można więc śmiało powiedzieć, że większość, jeśli nie całość, kodu w piątym wydaniu i wcześniejszym została napisana przez samych Dennisa i Kena. Piąta edycja Uniksa wydana w 1975 roku, więc nie zyskuje ona na niczym więcej.
Źródło Aaron Toponce: Znaczenie „su”
OED (paywalled) podaje następującą etymologię:
super- prefiks + użytkownik N.
Najstarszy przykład, który wymieniają, pochodzi od K. Thompson i DM Ritchie (1971): „Unix Programmer's Man”:
Tylko superużytkownik może wywołać to polecenie.