Akses tulis tanpa akses baca

15

Apakah mungkin bagi pengguna untuk memiliki akses tulis ke file dan tidak dapat membacanya? Bagaimana itu mungkin?

Saya mencoba perintah berikut:

debianbox@debian:~/posix/io$ touch filetest
debianbox@debian:~/posix/io$ ls -l filetest
-rw-r--r-- 1 debianbox debianbox 0 14 oct.  03:10 filetest

debianbox@debian:~/posix/io$ echo "Hello World" > filetest
debianbox@debian:~/posix/io$ cat filetest
Hello World

debianbox@debian:~/posix/io$ chmod u-r filetest
debianbox@debian:~/posix/io$ cat filetest
cat: filetest: Permission forbidden

debianbox@debian:~/posix/io$

Seperti yang Anda lihat di sini, saya telah menulis tetapi tidak membaca akses pada file ini. Bagaimana ini bisa terjadi? Apakah ini dianggap sebagai bug? Jika tidak, dalam situasi apa ini berguna?

Dimitri
sumber

Jawaban:

18

Ini bukan bug, ini fitur TM (Juga, hanya konsekuensi dari pendekatan unix universal untuk permisi).

Terlepas dari perilaku mirip-dropbox dalam hal direktori (seperti dijelaskan oleh BillThor), akses tulis saja diperlukan untuk beberapa file khusus (semu) di bawah /procdan /sys. File tersebut digunakan untuk mengatur beberapa properti driver atau kernel atau memicu aksi sistem. Anda tidak dapat membacanya, karena hanya digunakan untuk pensinyalan satu arah - Anda hanya dapat menggemakan beberapa teks / data kepada mereka. Untuk menemukan file seperti itu, Anda bisa menggunakan

find /proc/[^0-9]* /sys -perm /222 ! -perm /444

Perhatikan bahwa, karena file-file ini digunakan untuk konfigurasi sistem tingkat lanjut (berpotensi berbahaya), hanya rootmemiliki akses tulis kepada mereka (dalam kebanyakan kasus).

rozcietrzewiacz
sumber
21

Alasan utama untuk mengizinkan akses tulis tanpa akses baca adalah karena ia menyederhanakan pengelolaan izin, baik di dalam kernel maupun dalam program pengguna. Ada dua izin, satu untuk membaca dan satu untuk menulis, dan dikelola secara mandiri. Ini bukan bug karena perilaku yang didokumentasikan bertepatan dengan perilaku aktual dan tidak ada alasan yang baik untuk memerlukan perilaku yang berbeda.

Memiliki izin menulis tanpa izin baca tidak masuk akal untuk file biasa. Itu masuk akal untuk berbagai file khusus.

  • Beberapa sistem memperbolehkan file append-only. Ini berguna untuk file log, misalnya. Masuk akal untuk mengizinkan banyak pengguna membuat entri log, tetapi tidak mengizinkan mereka menghapus atau menimpa entri yang ada (karenanya: izin menulis, tetapi atribut hanya-tambahkan), atau untuk memungkinkan mereka membaca entri orang lain (karenanya: tidak ada baca izin).
  • Suatu program dapat diizinkan untuk menulis ke pipa bernama tanpa diizinkan untuk membacanya.
  • Beberapa perangkat hanya dapat digunakan untuk menulis. Misalnya, perangkat keluaran suara yang terhubung ke pengeras suara tetapi tidak ada mikrofon yang harus memiliki izin menulis tetapi tidak ada izin baca.
  • Ada berbagai sistem file khusus di mana membaca atau menulis ke file memiliki efek langsung daripada mengambil atau menambahkan data ke penyimpanan. Sebagai contoh, di Linux, ada berbagai file di bawah /procdan /sysyang memungkinkan program ruang pengguna untuk mengirim perintah ke kernel dengan menulis ke file tertentu. Jika perintah itu tidak memberikan umpan balik, file khusus dibuat hanya-tulis.
Gilles 'SANGAT berhenti menjadi jahat'
sumber
2

Tidak, ini bukan bug. Namun, saya tidak melihatnya diterapkan pada file.

Saya paling sering melihat akses tulis saja pada direktori dropbox. Pengguna dapat menambahkan file ke direktori, tetapi tidak dapat melihat file mana yang ada.

Untuk file teks biasa tulis, hanya akses yang sesuai untuk akses tipe dropbox.

Mengatur akses hanya menulis untuk Anda sendiri tidak akan sangat berguna, tetapi tidak mengizinkannya akan mempersulit kode izin.

EDIT: File-file Dropbox sepertinya tidak berguna. Namun, ini mungkin berguna untuk log non-root karena akan membuatnya lebih sulit untuk menimpa entri log. Jika Anda dapat membaca file, lebih mudah untuk mengidentifikasi di mana menulis entri log pengganti. Namun, saya tidak tahu siapa pun yang mengatur log mereka seperti ini. Adalah umum untuk menggunakan logging jarak jauh untuk mencegah modifikasi entri log lokal.

Menetapkan aturan tentang kombinasi izin yang diizinkan, dapat menyebabkan pencegahan izin yang tidak terduga. Banyak kombinasi lebih masuk akal di tingkat grup atau dunia daripada tingkat pemilik. Upaya apa pun untuk mencegah akses oleh pemilik dapat dengan mudah diganti. Namun, mereka bisa berguna untuk memaksa orang sadar kedua.

BillThor
sumber
"File dropbox" sebenarnya tidak masuk akal. Itu hanya dapat digunakan untuk menulis beberapa data dan bahkan jika itu dapat dibaca pada suatu titik, isinya tidak akan menunjukkan jejak nyata apa yang terjadi padanya, karena itu bisa saja dihapus atau dihapus sebelumnya.
rozcietrzewiacz