Skąd się wzięło pojęcie „superużytkownik”?

55

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?

VortixDev
źródło
Jestem ciekawy, dlaczego superuser.com nazywa się superuser. Czy to to samo połączenie? Czy pochodzi od Uniksa i superużytkownika z tego systemu operacyjnego?
Corporate Geek

Odpowiedzi:

55

Skąd się wzięło pojęcie „superużytkownik”?

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 */

suzostał 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”


Dalsza lektura

DavidPostill
źródło
Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu .
Journeyman Geek
35

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.

Jukka Suomela
źródło