Bagaimana Anda mendapatkan linux untuk menghormati direktori setuid?

8

Beberapa waktu lalu ketika dalam percakapan di IRC, satu pengguna di saluran saya menyarankan seseorang mengatur direktori agar dapat mewarisi userid pada file untuk memecahkan masalah yang dialami orang lain. Pada saat itu saya berbicara dan berkata "linux tidak mendukung direktori setuid". Setelah itu, orang yang memberikan saran tersebut menunjukkan kepada saya pastebin ( http://codepad.org/4In62f13 ) dari sistemnya untuk menghormati izin setuid yang ditetapkan pada direktori.

Hanya untuk menjelaskan, ketika saya mengatakan "linux tidak mendukung direktori setuid" apa yang saya maksud adalah bahwa Anda dapat pergi "direktori chmod u + s" dan itu akan mengatur bit pada direktori. Namun, linux (seperti yang saya mengerti) mengabaikan bit ini (pada direktori).

Cobalah sekuat tenaga, saya tidak bisa meniru pastebin itu. Seseorang pernah memberi saran kepada saya bahwa mungkin untuk meniru perilaku dengan selinux - dan bermain-main dengan aturan, dimungkinkan untuk memaksa uid pada file, tetapi tidak dari izin direktori setuid (yang bisa saya lihat). Membaca di internet sangat tidak informatif - sebagian besar tempat mengklaim "tidak, setuid pada direktori tidak bekerja dengan linux" dengan sesekali "itu dapat dilakukan dalam keadaan tertentu" (seperti ini: http://arstechnica.com/ etc / linux / 2003 / linux.ars-12032003.html )

Saya tidak ingat siapa orang aslinya, tetapi sistem aslinya adalah sistem debian 6, dan sistem file yang dijalankannya adalah xfs yang dipasang dengan "default, acl". Saya sudah mencoba mereplikasi itu, tetapi tidak berhasil sejauh ini (mencoba sejauh ini dengan berbagai versi debian, ubuntu, fedora dan centos)

Adakah yang bisa memberi saya petunjuk tentang apa atau bagaimana Anda mendapatkan sistem untuk menghormati setuid pada direktori?

Takigama
sumber
XFS tentu saja memiliki opsi pemasangan ( grpid|bsdgroupsatau nogrpid|sysvgroups) yang berarti file dalam direktori dapat dibuat dengan grup direktori daripada grup pemilik; mungkin bermain dengan itu?
Zanchey

Jawaban:

7

Setuid untuk direktori tidak berperilaku seperti setgid. Kecuali, keluaran shell berasal dari FreeBSD, seseorang bosan dan bersenang-senang dengan pengeluaran Anda.

Izin setuid yang ditetapkan pada direktori diabaikan pada sistem UNIX dan Linux. [4] FreeBSD dapat dikonfigurasi untuk menginterpretasikannya secara analog ke setgid, yaitu, untuk memaksa semua file dan sub-direktori dimiliki oleh pemilik direktori teratas. [5]

Di FreeBSD, direktori berperilaku seolah-olah bit setgid mereka selalu ditetapkan, terlepas dari nilai aktualnya. Seperti yang dinyatakan dalam open (2), "Ketika file baru dibuat itu diberikan grup direktori yang berisi itu."

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

Aaron Copley
sumber
Saya percaya bahwa untuk menjadi kasus ... namun, pria itu cukup yakin dia mencapai tujuannya ... saya kemudian beralih ke forum debian karena dia menggunakan debian, dan mendapat jawaban ini: forums.debian.net / ... Saya mungkin memposting dalam keadaan ide kurang dan mendapat bahu dingin. Setelah sekitar satu bulan dan sedikit meneliti, saya tidak yakin itu pasti tidak bisa dilakukan, tetapi saya tidak mengerti mengapa orang-orang Debian percaya itu mungkin tanpa memodifikasi sesuatu.
Takigama
Jika dia mencapainya, dia akan menjadi sumber terbaik tentang bagaimana hal itu dilakukan. Saya sudah meneliti topik itu sendiri dan tidak menemukan apa pun.
Aaron Copley
@AaronCopley: Apakah Anda memiliki sumber lain selain wikipedia karena fakta bahwa setuid set izin pada direktori dimasukkan pada sistem Linux?
Martin Thoma
Tidak. Tetapi Anda dipersilakan untuk mencobanya dan melihatnya sendiri. :)
Aaron Copley
2

Sebagian jawaban / kerjakan:

Saya mencoba melakukan hal yang sama, saya memutuskan untuk tidak melawannya dan mencoba metode lain. Apa yang saya coba adalah daftar kontrol akses, untuk mengatur izin default. (Catatan: Anda mungkin harus mengaktifkannya terlebih dahulu).

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

Di sini testuser digunakan untuk menjalankan tes, dan pengguna normal dapat menghapus hasilnya, tanpa harus menggunakan root (setiap kali).

ctrl-alt-delor
sumber
Ini menambahkan grup baru, tetapi mengatur id grup berfungsi dengan baik.
ctrl-alt-delor
-2

Dari RHEL man chmod

chmod mempertahankan bit set-pengguna-ID dan set-grup-ID direktori kecuali Anda secara eksplisit menentukan sebaliknya. Anda dapat mengatur atau menghapus bit dengan mode simbolis seperti u + s dan gs, dan Anda dapat mengatur (tetapi tidak menghapus) bit dengan mode numerik.

Secara numerik jika saya ingat dengan benar, chmod 4711 ./dirmenambahkan bit set UID, chmod 2711 ./dirmenambahkan bit set gid untuk 6711pengaturan uid + gid inheritance sesuai dengan demonstrasi di pastebin.

Per halaman manual chmod u+s== chmod 4XXXdan chmod g+s==chmod 2XXX

Oneiroi
sumber
1
tidak, saya mengerti bagaimana cara menerapkannya, bukan itu masalahnya.
Takigama
(tekan enter karena kesalahan) Masalahnya adalah apa yang mereka lakukan pada direktori, kepercayaan saya adalah bahwa setuid pada direktori bukanlah sesuatu yang dilakukan linux, misalnya (sistem Ubuntu 10.10): testuser @ boson: ~ $ ls -ald ~ drwsrwsrwx 3 testuser testuser 4096 2012-03-21 01:55 / home / testuser dir itu memiliki setuid dan setgid. Sekarang, sebagai pengguna 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 Perhatikan bagaimana setuid bit pada direktori tidak berpengaruh (apa yang saya harapkan). bagaimana Anda membuat sistem linux menggunakan setuid pada direktori?
Takigama
Anda dapat menghapusnya dengan sesuatu seperti =755atau 00755menggunakan angka
Steve Buzonas