Tại sao có các chương trình như su truy cập vào / etc / Shadow


7

Thông thường chỉ có root mới có thể truy cập /etc/shadow. Nhưng các chương trình thích susudocó thể kiểm tra mật khẩu mà không cần chạy bằng root. Vì vậy, câu hỏi là: Tại sao các chương trình này có thể truy cập /etc/shadowmà không có đặc quyền? Tôi đã cố gắng truy cập nó mà không có đặc quyền thông qua python với spwdmô-đun, nhưng tôi đã không nhận được quyền truy cập (như mong đợi). Những chương trình này sử dụng cơ chế nào?


1
sudosu làm chạy như root. xem unix.stackexchange.com/questions/11285/how-does-sudo-work cho các bên trong làm thế nào tất cả điều đó đi xuống.
strugee

Câu trả lời:


10

Tại sao có các chương trình như su truy cập vào / etc / Shadow

Vì chương trình thích supasswdđã đặt SetUID. Bạn có thể kiểm tra bằng cách sử dụng:

[root@tpserver tmp]#  ls -l /usr/bin/passwd
-r-s--x--x  1 root root 21200 Aug 22  2013 /usr/bin/passwd

Khi bạn nhìn xung quanh trong quyền của bạn, bạn sẽ thấy "s". Nếu bất cứ ai đang cố gắng chạy passwdchương trình, theo mặc định, nó sẽ lấy đặc quyền của chủ sở hữu (gốc ở đây) của tệp. Điều này có nghĩa là bất kỳ người dùng nào cũng có thể có được quyền root để thực thi passwdchương trình, bởi vì chỉ người dùng root mới có thể chỉnh sửa hoặc cập nhật /etc/passwd/etc/shadowtệp. Người dùng khác không thể. Khi người dùng bình thường chạy passwdchương trình trên thiết bị đầu cuối của mình, passwdchương trình được chạy dưới dạng "root", vì UID hiệu quả được đặt thành "root". Vì vậy, người dùng bình thường có thể dễ dàng cập nhật các tập tin.

Bạn có thể sử dụng chmodlệnh với u+shoặc các g+sđối số để đặt các bit setuid và setgid trên một tệp thực thi, tương ứng


Câu trả lời dài: Set-User_Id (SUID): Nguồn cho một khoảnh khắc:

Theo mặc định, khi người dùng thực thi một tệp, quá trình dẫn đến việc thực thi này có các quyền tương tự như của người dùng. Trong thực tế, quá trình kế thừa nhận dạng người dùng và nhóm mặc định của anh ấy.

Nếu bạn đặt thuộc tính SUID trên tệp thực thi, quy trình dẫn đến việc thực thi nó không sử dụng nhận dạng người dùng mà là nhận dạng người dùng của chủ sở hữu tệp.

Cơ chế SUID, được phát minh bởi Dennis Ritchie, là một mối nguy hiểm an ninh tiềm tàng. Nó cho phép người dùng có được quyền hạn ẩn bằng cách chạy một tệp như vậy được sở hữu bởi root.

$ ls -l /etc/passwd /etc/shadow /usr/bin/passwd
-rw-r--r-- 1 root root 2232 Mar 15 00:26 /etc/passwd
-r-------- 1 root root 1447 Mar 19 19:01 /etc/shadow

Danh sách cho thấy rằng passwd có thể đọc được bởi tất cả, nhưng bóng không thể đọc được bởi nhóm và những người khác. Khi người dùng chạy chương trình thuộc một trong hai loại này (có thể là các loại khác), do đó truy cập không thành công trong bài kiểm tra đọc trên bóng. Giả sử người dùng bình thường muốn thay đổi mật khẩu của mình. Làm thế nào anh ta có thể làm điều đó? Anh ta có thể làm điều đó bằng cách chạy /usr/bin/passwd. Nhiều chương trình UNIX / Linux có chế độ cấp phép đặc biệt cho phép người dùng cập nhật các tệp hệ thống nhạy cảm /etc/shadowGiống như - một cái gì đó họ không thể làm trực tiếp với trình soạn thảo. Điều này đúng với passwdchương trình.

$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 22984 Jan 6 2007 /usr/bin/passwd

Chữ s trong danh mục người dùng của trường quyền cho biết một chế độ đặc biệt được gọi là id-user-id (SUID). Chế độ này cho phép một tiến trình có các đặc quyền của chủ sở hữu tệp trong trường hợp chương trình. Do đó, khi người dùng không có đặc quyền thực thi passwd, UID hiệu quả của quy trình không phải là người dùng, mà là của root - chủ sở hữu của chương trình. Đặc quyền SUID này sau đó được passwd sử dụng để chỉnh sửa /etc/shadow.

liên kết tham khảo


Cảm ơn! Bây giờ tôi cuối cùng cũng đã nhận được những gì bit thực hiện S.
Kritzefitz

2
Slà thực sự khác với s. scó nghĩa là: thực thi + setuid, trong khi Scó nghĩa là chỉ setuid mà không thực thi. Điều này đảm bảo rằng bạn có thể biết liệu người dùng tương ứng có còn quyền thực thi hay không, bởi vì cờ s/ Ssử dụng không gian thường được sử dụng bởi xcờ.
Martin von Wittich

Vốn S cho biết tệp có tập bit setuid nhưng không được thực thi.
Rahul Patil

Kiểm tra thêm bằng cách sử dụnginfo ls "What information is listed"
Rahul Patil
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.