Saya ingin memberikan izin kepada pengguna untuk membuat dan membaca file di direktori tertentu, tetapi tidak untuk memodifikasi atau menghapus file. Jika pengguna dapat menambahkan ke file yang ok, tapi saya lebih suka tidak. Ini ada di Ubuntu Linux.
Saya pikir ini tidak mungkin dengan izin file Unix standar, tapi mungkin ini mungkin menggunakan ACL? Pengguna akan selalu terhubung menggunakan SFTP, jadi jika ada beberapa cara untuk mengontrol ini dalam SFTP (sebagai lawan dari izin OS) itu akan baik-baik saja.
Agar benar-benar jelas, saya ingin yang berikut ini:
- echo hello> test # berhasil, karena tes tidak ada, dan pembuatan diperbolehkan
- echo hello >> test # dapat berhasil atau gagal, tergantung pada apakah penambahan diizinkan
- echo hello2> test # gagal, karena tes sudah ada, dan modifikasi tidak diperbolehkan
- tes kucing # berhasil, karena bacaan diperbolehkan
- uji rm # gagal, karena penghapusan tidak diizinkan
Jika Anda bertanya-tanya mengapa saya ingin melakukan ini, itu membuat sistem cadangan Duplicati tahan terhadap Ransomware.
linux
files
permissions
acl
paj28
sumber
sumber
echo > test
, shell melakukanopen("test", O_WRONLY|O_CREAT|O_TRUNC)
yang membuat file dan kemudian memanggilecho
yang menulis konten sehingga memodifikasinya. Sekarang Anda hanya bisa membiarkan pembukaan pertama (WR) berhasil.Jawaban:
Anda bisa menggunakan
bindfs
seperti:Direktori itu dimiliki oleh stephane, dengan grup stephane (stephane menjadi satu-satunya anggotanya). Perhatikan juga
t
yang mencegah pengguna mengubah nama atau menghapus entri yang tidak mereka miliki.Kami
bindfs
dir
sendiri dengan kepemilikan tetap dan izin untuk file dan direktori. Semua file tampaknya dimiliki olehroot
(meskipun di bawahnya di direktori sebenarnya mereka masih dimiliki oleh stephane).Direktori mendapatkan
drwxrwxr-x root stephane
izin sementara jenis file lainnya mendapatkannya-rw-r--r-- root stephane
.Sekarang membuat file berfungsi karena direktori dapat ditulisi:
Namun tidak mungkin melakukan penulisan kedua
open()
pada file tersebut karena kami tidak memiliki izin untuk itu:(perhatikan bahwa menambahkan tidak diperbolehkan di sana (karena bukan bagian dari persyaratan awal Anda)).
Batasan: ketika Anda tidak dapat menghapus atau mengganti nama entri
dir
karenat
bit, direktori baru yang Anda buat di sana tidak akan memilikit
bit itu, sehingga Anda dapat mengubah nama atau menghapus entri di sana.sumber
The
chattr +a
pilihan akan memungkinkan menambahkan saja. File dapat diubah dengan cara itu, tetapi hanya dengan menambahkan (yaitu menambahkan baris) ke mereka. Anda tidak dapat menghapus file yang ada, tetapi membuat yang baru. Ini mungkin sesuai dengan kebutuhan Anda:dari
man chattr
(perhatikan bahwa ini juga berlaku untuk direktori)
Jadi daftar Anda akan terlihat seperti:
sumber
chattr +a
maka saya dapat membuat file, saya tidak diizinkan untuk menghapusnya, dapat menambahkan. Jika saya membuat dir1 / dir2 maka saya bisa melakukannya sesuka saya DI dir2