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 su
và passwd
đã đặ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 passwd
chươ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 passwd
chươ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
và /etc/shadow
tệp. Người dùng khác không thể. Khi người dùng bình thường chạy passwd
chương trình trên thiết bị đầu cuối của mình, passwd
chươ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 chmod
lệnh với u+s
hoặ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/shadow
Giố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 passwd
chươ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
sudo
vàsu
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.