Откуда возник термин «суперпользователь»?

6424
VortixDev

Откуда возник термин «суперпользователь»? Является ли это сокращением «контролирующего пользователя», или это просто показатель уровня мощности, который один такой пользователь имеет в системе?

55
Мне любопытно, почему superuser.com называют superuser. Это то же самое соединение? Это происходит от Unix и суперпользователя из этой операционной системы? Corporate Geek 6 лет назад 0

2 ответа на вопрос

55
DavidPostill

Откуда возник термин «суперпользователь»?

su позволяет стать суперпользователем, обладающим всевозможными чудесными способностями.

Со страницы руководства 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 

Источник minnie.tuhs.org/UnixTree/V5/usr/source/s2/su.c.html

su используется в системах Unix для смены пользователя и обычно используется для запуска команд от имени пользователя root.

И ... читать дальше

У меня был еще один потрясающий момент со значением «су». Я нашел старый исходный код Unix, где su.c был доступен . Любопытно, я посмотрел на источник. Что я нашел?

/* 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"); } 

Какой первый комментарий в этом C-файле?

/* su -- become super-user */ 

suбыло написано, чтобы изменить только для пользователя root в системе. Он не был предназначен для переключения на любого другого пользователя, который имеет учетную запись. «su» означало «супер-пользователь». Мне нужно сесть на секунду.

Код выше взят из пятого издания Unix Денниса Ритчи и Кена Томпсона. Если вы знаете свою историю Unix, то до шестого издания дела в мире Unix не начались. Таким образом, можно с уверенностью сказать, что большинство, если не все, кода в пятом издании и ранее были написаны самими Деннисом и Кеном. Пятое издание Unix выпущено в 1975 году, поэтому оно не становится намного более авторитетным, чем это.

Источник Аарон Топонсе: Значение слова «Су»


Дальнейшее чтение

Комментарии не для расширенного обсуждения; этот разговор был [перемещен в чат] (http://chat.stackexchange.com/rooms/72047/discussion-on-answer-by-davidpostill-where-did-the-term-superuser-originate). Journeyman Geek 6 лет назад 0
36
Jukka Suomela

OED (paywalled) дает следующую этимологию:

супер- префикс + пользователь n.

Самый ранний пример, который они перечисляют, принадлежит К. Томпсону и Д. М. Ритчи (1971): «Человек программиста Unix»:

Только суперпользователь может вызывать эту команду.