Trường hợp thuật ngữ siêu người dùng có nguồn gốc từ đâu?


55

Thuật ngữ "siêu người dùng" bắt nguồn từ đâu? Đây có phải là sự rút ngắn của "người dùng giám sát" hay nó chỉ là một chỉ số về mức độ quyền lực mà một người dùng như vậy nắm giữ trong một hệ thống?


Tôi tò mò tại sao superuser.com được đặt tên là superuser. Có phải cùng một kết nối? Có phải nó đến từ Unix và siêu người dùng từ hệ điều hành đó?
Công ty Geek

Câu trả lời:


54

Thuật ngữ "siêu người dùng" bắt nguồn từ đâu?

su cho phép một người trở thành siêu người dùng, người có tất cả các loại sức mạnh kỳ diệu.

Từ trang Unix su man phiên bản đầu tiên :

        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

Nguồn minnie.tuhs.org/UnixTree/V5/usr/source/s2/su.c.html

su được sử dụng trên các hệ thống Unix để thay đổi người dùng và thường được sử dụng để chạy các lệnh với tư cách là người dùng root.

Và ... đọc tiếp

Tôi đã có một khoảnh khắc rung chuyển nền tảng khác với ý nghĩa của "su". Tôi tìm thấy một số mã nguồn Unix cũ, nơi su.c có sẵn . Tò mò, tôi nhìn vào nguồn. Tôi đã tìm thấy gì?

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

Nhận xét đầu tiên trong tập tin C đó là gì?

/* su -- become super-user */

suđược viết để chỉ thay đổi người dùng root trên hệ thống. Nó không được thiết kế để chuyển sang bất kỳ người dùng nào khác có tài khoản. "su" có nghĩa là "siêu người dùng". Tôi cần ngồi xuống một giây.

Đoạn mã trên xuất phát từ phiên bản thứ năm của Unix của Dennis Ritchie và Ken Thompson. Nếu bạn biết lịch sử Unix của mình, thực sự phải đến phiên bản thứ sáu, mọi thứ mới thực sự bắt đầu cho thế giới Unix. Vì vậy, thật an toàn khi nói rằng hầu hết, nếu không phải tất cả, mã trong phiên bản thứ năm và trước đó được viết bởi chính Dennis và Ken. Phiên bản thứ năm Unix được phát hành vào năm 1975, vì vậy nó không có nhiều thẩm quyền hơn thế.

Nguồn Aaron Toponce: Ý nghĩa của 'su'


Đọc thêm


Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
Journeyman Geek

35

OED (paywalled) đưa ra từ nguyên sau:

siêu tiền tố + người dùng n.

Ví dụ sớm nhất mà họ liệt kê là từ K. Thompson & DM Ritchie (1971): "Người lập trình Unix.":

Chỉ siêu người dùng mới có thể gọi lệnh này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.