Làm thế nào để bạn có được linux để tôn vinh các thư mục setuid?


8

Cách đây một thời gian, trong một cuộc trò chuyện ở IRC, một người dùng trong kênh tôi đã đề nghị ai đó thiết lập một thư mục để nó kế thừa userid trên các tệp để giải quyết vấn đề mà người khác đang gặp phải. Lúc đó tôi đã lên tiếng và nói "linux không hỗ trợ các thư mục setuid". Sau đó, người đưa ra lời khuyên cho tôi xem một pastebin ( http://codepad.org/4In62f13 ) trong hệ thống của anh ấy để tôn trọng quyền setuid được đặt trên một thư mục.

Chỉ cần giải thích, khi tôi nói "linux không hỗ trợ các thư mục setuid", ý tôi là bạn có thể vào "thư mục chmod u + s" và nó sẽ thiết lập bit trên thư mục. Tuy nhiên, linux (theo tôi hiểu) bỏ qua bit này (trên các thư mục).

Hãy cố gắng hết sức, tôi không thể sao chép quá khứ đó. Ai đó đã đề nghị với tôi một lần rằng có thể mô phỏng hành vi với selinux - và chơi xung quanh với các quy tắc, có thể buộc uid trên một tệp, nhưng không phải từ quyền của thư mục setuid (mà tôi có thể thấy). Đọc trên internet khá là không thông tin - hầu hết các nơi đều tuyên bố "không, setuid trên các thư mục không hoạt động với linux" với "thỉnh thoảng có thể được thực hiện trong các trường hợp cụ thể" (chẳng hạn như: http://arstechnica.com/ vv / linux / 2003 / linux.ars-12032003.html )

Tôi không nhớ người ban đầu là ai, nhưng hệ thống ban đầu là hệ thống debian 6 và hệ thống tập tin mà nó đang chạy là xfs được gắn với "default, acl". Tôi đã thử sao chép nó, nhưng không có may mắn cho đến nay (đã thử với các phiên bản khác nhau của debian, ubfox, fedora và centos)

Bất cứ ai cũng có thể đầu mối cho tôi về những gì hoặc làm thế nào bạn có được một hệ thống để tôn vinh setuid trên một thư mục?


XFS chắc chắn có một tùy chọn gắn kết ( grpid|bsdgroupshoặc nogrpid|sysvgroups) có nghĩa là các tệp trong thư mục được tạo với nhóm thư mục chứ không phải nhóm của chủ sở hữu; có lẽ chơi với nó?
Zanchey

Câu trả lời:


7

Setuid cho các thư mục không hoạt động như setgid. Trừ khi, đầu ra shell là từ FreeBSD, một số người đã chán và có một chút niềm vui với chi phí của bạn.

Quyền setuid được đặt trên một thư mục bị bỏ qua trên các hệ thống UNIX và Linux. [4] FreeBSD có thể được cấu hình để diễn giải nó tương tự với setgid, cụ thể là, buộc tất cả các tệp và thư mục con phải thuộc sở hữu của chủ sở hữu thư mục hàng đầu. [5]

Trong FreeBSD, các thư mục hoạt động như thể bit setgid của chúng luôn được đặt, bất kể giá trị thực của nó là bao nhiêu. Như đã nêu trong open (2), "Khi một tệp mới được tạo, nó được đưa ra nhóm của thư mục chứa nó."

http://en.wikipedia.org/wiki/setuid#setuid_and_setgid_on_directories


Tôi tin rằng đó là trường hợp ... tuy nhiên, anh chàng khá chắc chắn rằng anh ta đã đạt được mục tiêu của mình ... sau đó tôi đã chuyển sang các diễn đàn debian vì anh ta đang sử dụng debian và nhận được phản hồi: forum.debian.net / ' Tôi có thể đăng trong một trạng thái ít ý tưởng hơn và có vai lạnh. Sau khoảng một tháng và nghiên cứu về nó, tôi không chắc chắn rằng nó chắc chắn không thể được thực hiện, nhưng tôi không thể hiểu tại sao những người debian tin rằng nó có thể mà không cần sửa đổi một cái gì đó.
Takigama

Nếu anh ta đạt được nó, anh ta sẽ là nguồn tốt nhất về cách nó được thực hiện. Tôi đã tự nghiên cứu chủ đề và không thấy gì cả.
Aaron Copley

@AaronCopley: Bạn có nguồn nào khác ngoài wikipedia vì thực tế là quyền setuid được đặt trên một thư mục được sử dụng trên các hệ thống Linux không?
Martin Thoma

Không. Nhưng bạn được chào đón để thử nó và xem cho chính mình. :)
Aaron Copley

2

Câu trả lời một phần / công việc xung quanh:

Tôi đã cố gắng làm điều tương tự, tôi quyết định không chiến đấu với nó và thử một phương pháp khác. Những gì tôi đã thử là danh sách kiểm soát truy cập, để đặt quyền mặc định. (Lưu ý: bạn có thể cần bật chúng trước).

setfacl -R --set-file=- . <<EOF
# file: testdir/
# owner: testuser
# group: testgroup
user::rwx
group::rwx
group:normaluser:rwx
mask::rwx
other::r-x
default:group::rwx
default:group:normaluser:rwx
default:mask::rwx
default:other::r-x
EOF

Ở đây, testuser được sử dụng để chạy thử nghiệm và người dùng bình thường có thể xóa kết quả mà không cần sử dụng root (mỗi lần).


Điều này thêm một nhóm mới, nhưng thiết lập id nhóm hoạt động tốt.
ctrl-alt-delor

-2

Từ RHEL man chmod

chmod bảo tồn các bit set-user-ID và set-ID-set của thư mục trừ khi bạn chỉ định rõ ràng bằng cách khác. Bạn có thể đặt hoặc xóa các bit bằng các chế độ tượng trưng như u + s và gs và bạn có thể đặt (nhưng không xóa) các bit bằng chế độ số.

Nếu tôi nhớ lại một cách chính xác, hãy chmod 4711 ./dirthêm bit UID đã thiết lập, chmod 2711 ./dirthêm bit gid đã thiết lập vào đó 6711để thiết lập thừa kế uid + gid theo trình diễn trong pastebin.

Trên mỗi trang người đàn ông chmod u+s== chmod 4XXXchmod g+s==chmod 2XXX


1
không, tôi hiểu làm thế nào để áp dụng chúng, đó không phải là vấn đề.
Takigama

. testuser 4096 2012-03-21 01:55 / home / testuser Điều đó dir có cả setuid và setgid. Bây giờ, với tư cách là người dùng tt @ boson: ~ $ touch ~ testuser / file t @ boson: ~ $ ls -la! $ Ls -la ~ testuser / file -rw-r - r-- 1 t testuser 0 2012-03 -21 01:57 / home / testuser / file Lưu ý cách bit setuid trên thư mục không có hiệu lực (những gì tôi mong đợi). Làm thế nào để bạn làm cho một hệ thống linux sử dụng setuid trên một thư mục?
Takigama

Bạn có thể xóa chúng bằng một cái gì đó như =755hoặc 00755sử dụng các số
Steve Buzonas
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.