Masalah izin pewarisan sederhana

1

Ini seharusnya sederhana, tetapi saya tidak membuatnya bekerja dalam ujian.

Aplikasi torrent yang saya gunakan (berbasis CLI) belum memiliki kemampuan untuk mendefinisikan pengguna / grup / izin dari file yang diunduh. Ia juga menikmati pengaturan izin file dengan cara yang tidak dapat diubah banyak.

Saya ingin menggunakan set-uid dan set-group-id untuk menyelesaikan ini.

Diberi jalan seperti ini: / Volume / torrents / film

Saya ingin direktori "film" untuk memungkinkan semua pengguna pada sistem akses penuh baca dan tulis. File seharusnya tidak dapat dieksekusi, tetapi tentu saja, direktori perlu untuk membuka cd ke dalamnya. Saya percaya semua pengguna pada sistem ini, meskipun saya akan menahan diri dari mengeksekusi bit pada file untuk mencegah kesalahan yang tidak disengaja.

Apa pun yang disimpan / disimpan dalam "film" harus mewarisi pengguna / grup / izin film, dan mengalir ke semua sub direktori dan file. Dengan ini, saya tidak perlu khawatir tentang kurangnya fitur pengaturan izin aplikasi. Jika film diatur ke rw untuk foo: bar dan pengguna the_user datang dan meletakkan file dalam film, saya berharap file menjadi rw foo: bar.

Terima kasih. Saya sudah mencoba beberapa cara berbeda, dan saya akan gagal. Saya jarang menggunakan set-uid dan set-group-id atau bit sticky.

pengguna17245
sumber
1
OS apa yang Anda gunakan?
Moab
1
Rupanya Mac OSX, berdasarkan jalur "/ Volume /".
Hello71

Jawaban:

1

Yang paling bisa Anda lakukan adalah membuat direktori setgid, yang akan membuat file dan direktori yang dibuat di dalamnya memperoleh pemilik grup dari direktori. Namun, bit setgid tidak akan diwarisi, yang berarti bahwa apa pun di luar lapisan pertama tidak akan memiliki kepemilikan grup yang diterapkan. Satu-satunya cara untuk mengatasi ini adalah dengan menggunakan cron atau incron untuk menerapkan perubahan izin yang sesuai.

Ignacio Vazquez-Abrams
sumber
Apakah Anda yakin akan hal itu? Semua yang saya teliti tentang ini menyatakan bahwa ini bukan kasusnya en.wikipedia.org/wiki/Setuid
user17245
Bagian mana dari artikel itu yang bertentangan dengan apa yang saya katakan?
Ignacio Vazquez-Abrams
1

Saya menduga berdasarkan pertanyaan Anda sebelumnya dan folder "/ Volume" yang Anda sebutkan bahwa Anda menggunakan Mac OS X.

Saya mendapat tip dari artikel ini yang menunjukkan cara membuat AppleScript dan melampirkannya sebagai tindakan folder yang menetapkan izin pada semua file yang jatuh ke folder. Ini skrip yang saya uji sekarang:

on adding folder items to this_folder after receiving added_items
    tell application "Finder"
        set fold_name to the name of this_folder
        try
            repeat with i from 1 to number of items in added_items
                set new_item to item i of added_items
                set the item_path to the quoted form of the POSIX path of new_item
                do shell script ("/bin/chmod -R a+rw " & item_path)
            end repeat
        end try
    end tell
end adding folder items to

Ketik ini ke dalam AppleScript Editor kemudian simpan di / Library / Scripts / Folder Actions Scripts. Kemudian klik kanan pada folder dan pilih "Folder Actions Setup ..." (atau "Attach a Folder Action" untuk Leopard atau yang lebih lama). Lampirkan skrip Anda, dan ujilah. Letakkan item ke dalam folder dan itu harus secara rekursif chmod segalanya untuk memungkinkan baca / tulis untuk semua orang.

Ini berfungsi jika Anda memasukkan sesuatu secara langsung ke folder, termasuk folder lain: semua konten secara rekursif diperbarui. Namun, jika Anda menjatuhkan file ke subfolder yang sudah ada, maka tindakan folder tidak dipanggil. Saya belum menemukan cara untuk memperbaikinya.

Stephen Jennings
sumber
Terima kasih. Saya mungkin hanya akan bersandar pada launchd dan menjalankan quick chown foo: bar / path / ke / files / * Saat ini saya mencoba lebih banyak untuk belajar tentang setgid dan setuid sebanyak yang saya bisa.
user17245
0

Halaman Wikipedia yang ditautkan dalam jawaban lain memang bertentangan dengan jawaban itu sendiri: bit set-GID biasanya diwarisi. Ini tentu benar di Linux, dan saya percaya pada Solaris. Namun, itu tampaknya tidak benar pada Mac OS X. Halaman manual tampaknya berbicara lebih banyak tentang ACL daripada izin normal, jadi mungkin Anda akan beruntung dengan izin file_inherity dan directory_inherit dalam kombinasi dengan yang tradisional.

Sam Brightman
sumber