Apakah mungkin untuk menerapkan sistem pemesanan "nama" menggunakan izin file linux

10

Saya memiliki server multi-user linux dengan 100+ pengguna di / etc / passwd

Saya ingin mengizinkan pengguna untuk "memesan" / "memesan" nama yang mereka sukai (dalam hal ini subdomain, tetapi detailnya tidak masalah)

Saya telah membuat direktori bernama /reservationsdan dengan chmod 777.

Jika pengguna johndoe melakukannya, touch /reservations/coolsiteia menunjukkan bahwa ia ingin "memiliki" nama itu "coolsite"

"Mekanisme" harus diatur sehingga,

  • johndoe dapat berubah pikiran di lain waktu, dan rm /reservations/coolsiteuntuk membatalkan pemesanan nama itu

  • pengguna lain tidak diizinkan touch /reservations/coolsite, karena johndoe memintanya terlebih dahulu.

  • Jika Anda ingin rmfile-nya, pengguna lain diperbolehkan untuk memesannya.

  • pengguna tidak dapat rm / rename / mv / etcfile orang lain

  • pengguna johndoe dapat memiliki beberapa pemesanan dengan melakukan touch /reservations/coolsite && touch /reservations/coolsite2

Apakah ini mungkin menggunakan semacam mekanisme izin linux standar?

Saya akan benci untuk menggunakan perl untuk ini, keterampilan perl saya menjadi berkarat sejak hari ruby ​​datang dengan rambut pirang bergelombang ...

prajurit amerika-ninja
sumber
Saya tidak melihat apa pun di sini yang keluar dari peraturan. Buat "coolsite" dibuat sebagai "700" (tidak ada izin untuk grup dan lainnya) dan hanya pengguna + admin yang dapat melakukan sesuatu untuk itu. Semua yang lain mendapat izin ditolak.
Rinzwind
Jadi, secara manual menginstruksikan pengguna untuk mengingat untuk chmod 700 setelah touch?
american-ninja-warrior
1
joshsverns Saya pikir Anda bisa menegakkan itu? (dengan umask). Oh, bagus @perlduck
Rinzwind
Mengapa Anda tidak bisa memprogramnya di ruby?
pipa

Jawaban:

31

Apa yang Anda minta dari direktori /reservationsadalah bagaimana /tmpperilaku standar direktori:

Setiap pengguna dapat membuat file di sana dan hanya dia yang diizinkan untuk menghapus atau memodifikasinya. Ini dicapai dengan tbit (alias sticky bit ) dalam izin. Tidak ada pengguna yang memerlukan izin atau payung khusus.

Jadi:

chown root /reservations
chmod 1777 /reservations

itu yang kamu butuhkan. Ini chown roothanya untuk mencegah pengguna (reguler) lain dari mengutak-atik direktori itu. Itu tidak benar - benar dibutuhkan. Baca lebih lanjut tentang bit sticky di sini:

PerlDuck
sumber