chown với các đối số số


4

Tôi đã thử điều này trên Opensuse 12 và Fedora 17, tôi sử dụng các dấu phẩy sau

touch file
chown 777 file
ls -l file
-rw-r--r-- 1 777 root 0 Oct  9 21:43 file
grep 777 /etc/passwd
echo $?
1

Không có người dùng 777

 grep pippo /etc/passwd
 echo $?
 1
 chown pippo file
 chown: invalid user: `pippo'

Nhưng nếu tôi sử dụng người dùng không tồn tại, tôi gặp một lỗi.

Tại sao tôi có thể sử dụng người dùng không tồn tại bằng số với chown, nhưng không có tên?

Câu trả lời:


10

Tại sao tôi có thể sử dụng người dùng không tồn tại bằng số với chown, nhưng không có tên?

Bởi vì tên người dùng phải được phân giải thành UID, vì vậy nếu người dùng không tồn tại thì không thể giải quyết được, trong khi đó UID là loại kết thúc (nó tự mô tả mà không có độ phân giải).

Về mặt kỹ thuật, tất cả các yêu cầu chown của hệ điều hành phải được thực hiện đối với UID. Tên người dùng là vì lợi ích của bạn, không phải hệ điều hành.


Điều này chỉ xảy ra với người dùng root
c4f4t0r

Bởi vì bạn cần CAP_CHOWN để thay đổi quyền sở hữu. Đó là một khả năng đặc quyền thường chỉ dành riêng cho root.
Matthew Ife

Tại sao không kiểm tra xem người dùng số có tương ứng với người dùng hiện tại không, trước khi thực hiện cuộc gọi hệ thống?
c4f4t0r

Sẽ là một thực tế cực kỳ tồi tệ khi đặt tên cho một người dùng một số, nó gây nhầm lẫn cho nhiều tiện ích, bao gồm cả chown. Một tên người dùng được cho là cung cấp một tên tượng trưng cho một số, cung cấp một số tượng trưng cho một số đánh bại mục đích.
Matthew Ife

3
Why not check if the numeric user correspond to an existing use- Vì các hệ thống thường có nguồn bên ngoài để xác thực. Điều gì xảy ra nếu hệ thống xác thực bên ngoài bị hỏng do ai đó làm hỏng quyền sở hữu các tệp cấu hình? Vì vậy, cần phải có một phương pháp để cho phép người quản trị hệ thống đặt quyền sở hữu cho đúng ID ngay cả khi cơ sở dữ liệu xác thực bị hỏng.
Zoredache
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.