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?
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?
Câu trả lời:
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'
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.