Folder dengan HANYA menulis izin tidak berguna ... kan?

10

Setelah bekerja dengan Linux selama bertahun-tahun, dan menemukan diri saya dengan waktu luang, saya memutuskan untuk mengunjungi kembali beberapa dasar. Jadi saya membaca kembali hal-hal tentang izin (tanpa memeriksa kode sumber), dan kasus khusus untuk folder, dan muncul dengan cara berpikir baru (setidaknya untuk saya ...) tentang izin folder (untuk pengguna tertentu / grup / lainnya): Saya membayangkan folder sebagai tabel dengan dua kolom, seperti:

filename | inode    
foo      | 111  
bar      | 222 

The membaca izin berarti Anda dapat membaca (dan daftar) kolom kiri meja, menulis berkorespondensi izin untuk menambah dan menghapus entri ke meja, dan mengeksekusi berkorespondensi izin untuk mampu menerjemahkan dari nama file inode; yaitu Anda dapat mengakses isi folder.

Saya melakukan beberapa percobaan, dan hasilnya semua konsisten dengan "pandangan dunia" saya ini, tetapi satu kesimpulan tampaknya tidak terhindarkan: bahwa folder dengan izin d-w-------, sama sekali tidak berguna. Mengelaborasi: Anda tidak dapat membuat daftar isinya, Anda tidak dapat membaca file yang Anda tahu ada di dalam (karena Anda tidak dapat menerjemahkan nama menjadi inode), Anda tidak dapat menghapus atau mengubah nama atau menambahkan file, karena sekali lagi itu akan menyiratkan terjemahan , dan Anda bahkan tidak dapat menambahkan hardlink (karena, saya menduga, itu berarti menambahkan nama serta nomor inode, yang berarti Anda akan mengetahui keduanya, yang pada gilirannya, sekali lagi menduga, melanggar tujuan tidak mengijinkan izin eksekusi yang belum disetel) . Dan tentu saja, jika ada yang file dalam satu folder tersebut, maka Anda tidak dapat menghapus folder yang baik, karena Anda tidak dapat menghapus isinya.

Jadi ... Saya ingin mengajukan dua pertanyaan:

  1. Apakah analogi saya ini benar, atau itu kesalahan besar?
  2. Terlepas dari jawaban sebelumnya, apakah ada setiap situasi di mana memiliki folder dengan izin seperti yang dijelaskan sesuai?
wmnorth
sumber
3
Mungkin tidak semua kombinasi berguna. Misalnya, dalam bahasa Inggris kami memiliki kata-kata, kata-kata ini terdiri dari huruf, tidak semua kombinasi membentuk kata yang valid. misalnya aoeuidhtns
ctrl-alt-delor
Dengan cara ini Anda tidak bisa misalnya membuat file? Anda meminta ruang sistem file dan inode, dan setelah Anda menulis nama dan inode di tabel direktori Anda. Anda seharusnya hanya memiliki masalah untuk memiliki 2 file dengan nama yang sama tetapi inode yang berbeda dalam direktori yang sama ...
Hastur
@ Rushur: Saya juga berpikir begitu, tapi setelah mkdir foo ; chmod 200 foo ; touch foo/barsaya mengerti touch: cannot touch ‘foo/bar’: Permission denied. Ini terjadi bahkan jika foo / bar sudah ada. Saya sedang menguji di bash (Arch Linux).
wmnorth
Kesalahan saya, saya berpikir Anda menulis ulang dari kode sumber sistem ... kami tidak dapat memiliki dua file dengan nama yang sama di direktori yang sama sehingga secara logis dilarang memberikan kemungkinan untuk membuatnya.
Hastur
Ya, itu tidak berguna. Resolusi inode memerlukan "x" dan "r" juga, sehingga pada direktori bahkan satu "rw" tidak berguna.
peterh

Jawaban:

3

Pemahaman Anda cukup benar. Cara yang lebih baik untuk memikirkan izin eksekusi adalah memungkinkan Anda untuk melakukan sesuatu dengan nama file atau direktori di direktori (selain hanya membaca nama itu sendiri). Sebagian besar dari hal-hal itu melibatkan menerjemahkan nama ke inode, tetapi juga termasuk membuat nama baru dan menghapus nama yang ada.

Izin menulis ke direktori tanpa eksekusi sangat tidak berguna, karena tidak ada yang dapat Anda tulis jika Anda tidak dapat mengakses file di dalamnya.

Barmar
sumber
1
  1. Apakah analogi saya ini benar, atau itu kesalahan besar?

Saya pikir itu benar, Anda perlu izin untuk dapat menulis ke folder.

  1. Terlepas dari jawaban sebelumnya, apakah ada situasi di mana memiliki folder dengan izin seperti dijelaskan sesuai?

Anda mungkin memiliki proses yang menulis informasi dalam folder dan yang lain mengkonsumsinya tetapi Anda harus mencegah penulis membaca informasi lain yang tersimpan di tempat itu.

Situasi yang dijelaskan sebelumnya berguna dalam unit penegakan kecepatan otomatis. Unit ini harus melalui proses verifikasi di mana pejabat negara harus meminimalkan kemungkinan pemalsuan. Beberapa unit penegakan kecepatan otomatis memiliki kartu memori sd eksternal tempat sistem menyimpan register pelanggaran. Tetapi itu juga bisa menyimpan file konfigurasi "ajaib" yang secara ilegal mengubah perilaku unit yang diverifikasi. Jadi proses yang menulis register pelanggaran harus tidak dapat membaca apa pun dari kartu memori sd.

Ini Ini contoh, pertama dengan hanya menulis, lalu bagaimana membuatnya bekerja dengan wx:

Pasang perangkat

root@leon:/media# mount -o umask=527,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/media# ls /media/pen/ -la
total 44
d-w-r-x--- 10 enforcer ftp  4096 Dec 31  1969 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..

kemudian dengan pengguna penegak mencoba untuk menulis file baru

enforcer@leon:~$ touch /media/pen/hola
touch: cannot touch ‘/media/pen/hola’: Permission denied

unmount dan remount dengan wx

root@leon:/media# umount /dev/sdb1
root@leon:/media# mount -o umask=427,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/home/jjorge# ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer wim  4096 Dec 31  1969 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..

coba lagi

enforcer@leon:~$ touch /media/pen/hola
enforcer@leon:~$ ls /media/pen/
ls: cannot open directory /media/pen/: Permission denied
enforcer@leon:~$ cat /media/pen/hola
cat: /media/pen/hola: Permission denied

ftp@leon:/home/jjorge$ ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer ftp  4096 Oct 20 10:20 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..
--wxr-x---  1 enforcer wim     0 Oct 20 10:20 hola

Dengan konfigurasi ini Anda sekarang dapat menulis

Javier Jorge
sumber