Apa kelebihan dari struktur sistem file Unix

9

Jika saya menginstal aplikasi di Linux misalnya Debian / Gnu Linux, file aplikasi akan disalin ke banyak direktori berbeda di sistem file.

Beberapa skrip masuk ke / usr / share .. / usr / local beberapa file lain ke / var .. / log .. etc / dan seterusnya.

Bagi saya ini tidak masalah karena saya belajar sesuatu tentang sistem file dan sebagian besar direktori ada untuk menyimpan file untuk tujuan tertentu. Ini sangat cocok dalam filosofi Unix "lakukan satu hal dan lakukan dengan baik"

Tetapi pertanyaan saya adalah apa kelebihan struktur direktori seperti itu? Atau apakah itu hanya warisan dari zaman unix lama. (misalnya, dibandingkan dengan penggunaan satu windows, di mana semua file untuk aplikasi berada dalam satu "folder" tertentu)

Jan Koester
sumber

Jawaban:

9

Apa yang menurut saya keuntungan yang paling mudah untuk dipikirkan adalah file yang serupa hidup di pohon direktori yang sama. File konfigurasi hidup /etc, file log dan / atau file run-time run-time hidup /var/log, executable hidup /usr/bin, informasi run-time seperti tinggal file PID /var/run. Anda ingin tahu apa yang ada di file konfigurasi NTP? Ubah direktori menjadi /etcdan lakukan ls ntp*. Anda ingin memiliki beberapa program menonton file yang dapat dieksekusi sehingga beberapa virus sistem file tradisional tidak menginfeksi mereka? Semua yang ada di dalam /usr/bindan /usr/local/binperlu diawasi.

Keuntungan kedua yang dapat saya pikirkan adalah bahwa gaya organisasi Unix mempromosikan pemisahan data dan dapat dieksekusi. Executables hidup dalam direktori yang jauh dari tempat templat tinggal ( /usr/share, mungkin), dan jauh dari tempat data tinggal. Pemisahan itu mungkin menjadi alasan mengapa Unix / Linux / * BSD memiliki lebih banyak resistensi terhadap virus sistem file daripada Windows, atau yang dimiliki Pre-OSX Mac sebelumnya.

Bruce Ediger
sumber
Itu poin bagus. Mengapa pemisahan file yang dapat dieksekusi dan data, templat, konfigurasi menjadi alasan untuk lebih banyak perlindungan terhadap virus?
Jan Koester
3
Banyak (tetapi tidak semua) dari virus dan worm di dunia menyebar karena kemampuan untuk mengubah data menjadi executable: stack overflow dan injeksi SQL dan injeksi kode semua bekerja dengan cara ini. Virus makro "Word" diperbanyak setidaknya sebagian karena makro "Word" termasuk dalam file .doc. Pemisahan data dari executable oleh file adalah satu tingkat perlindungan, menempatkan data dalam satu direktori, dieksekusi dalam satu detik, templat dalam 3, konfigurasi dalam 4 menempatkan bahkan lebih banyak hambatan untuk membingungkan data dan dieksekusi di tempat.
Bruce Ediger
2
Argumen pemisahan data-dan-eksekusi adalah omong kosong. Organisasi sistem file adalah untuk kepentingan manusia; tidak seperti ada beberapa pemisahan fisik antara bit yang mencegah mereka saling memberikan cooties atau apa pun. Keamanan UNIX secara historis lebih baik karena model izin yang lebih kuat, lebih ketat pada umumnya.
fluffy
@fluffy filesystem terpisah menawarkan pemisahan sedikit lebih kuat, tapi saat itu sebagian diperdebatkan karena tidak mungkin untuk memisahkan /bin, /etc, dari /.
jw013
@fluffy - setuju, tidak ada pemisahan "fisik", atau mungkin. Tapi itu adalah pemisahan nama. Malware harus mencari di direktori lain (bukan "." Atau dirname $ 0 atau sesuatu) untuk menemukan templat atau data lainnya. Ini bukan keamanan mutlak, lebih dari menutup jendela kaca adalah keamanan mutlak. Keamanan adalah barang ekonomi, dengan nilai marjinal untuk setiap unit kerja tambahan. Setiap sedikit membantu.
Bruce Ediger
11

Tidak masalah organisasi mana yang dipilih, itu akan membuat beberapa hal lebih mudah dan beberapa hal lebih sulit.

Pengorganisasian file dengan jenis, cara Unix (ke bin, man, lib/python, ...), membuat lebih mudah untuk menggunakan file-file. Jika Anda ingin menjalankan perintah, Anda tahu di mana menemukannya, tidak peduli paket mana yang menyediakannya. Jika Anda ingin mencari melalui dokumentasi, semuanya ada di satu tempat. Jika beberapa program menyediakan modul penyorotan sintaks Vim, fungsi penyelesaian zsh, atau binding Python, file yang relevan akan berada di tempat di mana vim / zsh / python dapat menemukannya.

Unix juga mengatur file berdasarkan pola penggunaan. File konfigurasi masuk /etc, file yang tidak berubah dalam operasi normal masuk /usr, dan file yang berubah secara otomatis masuk /var. Data pengguna berada di bawah /home. Ini sangat berguna untuk manajemen konfigurasi (kelola apa yang ada di /etctambah daftar paket yang diinstal). Ini juga berguna untuk menentukan strategi cadangan: apa yang ada di dalam /etcdan /homesangat penting, sedangkan apa yang ada di dalam /usrdapat dengan mudah diunduh lagi.

Biaya utama cara Unix adalah menginstal sepotong perangkat lunak tersebar di banyak direktori. Namun, sistem unix modern memiliki pengelola paket; mengelola file di banyak direktori sejauh ini bukan hal yang paling rumit yang mereka lakukan (melacak ketergantungan sangat berguna dan lebih sulit).

Bandingkan dengan Windows. Windows dimulai tanpa manajemen paket, dan setiap aplikasi membuat direktori sendiri di suatu tempat. Semua file biasanya berada di dalam direktori itu: program, data statis, data pengguna, ... Kecuali kadang-kadang untuk perpustakaan program mana yang akan jatuh ke direktori sistem umum tanpa memperhatikan konflik ("DLL neraka"). Seiring waktu, Windows menjadi multi-pengguna, membutuhkan pemisahan direktori pengguna dari direktori sistem. Windows juga menciptakan tempat sentral untuk file konfigurasi (Unix's /etc) dan beberapa data sistem (Unix's/var), registri. Ini lebih merupakan artefak historis yang sebagian besar disebabkan oleh kurangnya manajemen paket dan sejarah awal sebagai sistem pengguna tunggal. Pendekatan Windows memiliki banyak keterbatasan: tidak membiarkan paket perangkat lunak berinteraksi dengan mudah. Misalnya, sebagian besar perangkat lunak yang diinstal tidak berakhir pada jalur pencarian perintah default, sehingga berinteraksi buruk dengan segala bentuk skrip. Pemasang biasanya menyediakan ikon menu sebagai wadah khusus - dimasukkan ke direktori sistem terpisah (à la Unix!).

Keterbatasan dari pendekatan Unix adalah bahwa ia tidak dengan mudah mengizinkan koeksistensi beberapa versi paket, yang khususnya bermasalah ketika paket sedang ditingkatkan. Cara untuk mendapatkan yang terbaik dari kedua dunia adalah dengan membongkar setiap paket di direktori sendiri ( /optstruktur), dan membuat hutan tautan simbolik dari direktori paket ke /usrstruktur. Inilah yang dilakukan perangkat lunak seperti stow .

Singkatnya, pendekatan Unix membuatnya lebih mudah untuk menggunakan file, untuk mengelola file, dan untuk memungkinkan paket berinteraksi; itu memerlukan perangkat lunak manajemen paket, tetapi itu tetap diinginkan. Pendekatan Windows membuatnya lebih mudah untuk mengelola paket secara manual, tetapi harus mengarah ke model Unix untuk mendapatkan fungsionalitas yang berguna.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
Luar biasa. Menurut pendapat saya, meskipun, itu hanya digunakan untuk lebih mudah untuk mengelola paket individual. Munculnya registri windows mengubah semua itu dan kemudian beberapa. Tidak hanya itu raksasa dan labirin - juga sengaja demikian - dengan beberapa nilai dalam kode byte sementara yang lain tidak dan tidak ada sajak atau alasan sebenarnya untuk struktur. Saya kira itulah caranya jika Anda ingin mengembangkan os yang dikelola dan melindungi rahasia dagang dan metode kepemilikan: membingungkan.
mikeserv
3

Manfaat utama yang tidak disebutkan di atas, dan salah satu alasan historis struktur ini, adalah pemisahan fisik pada beberapa volume / disk yang tersedia pada berbagai tahap dalam proses booting.

Manfaat lain adalah bahwa berbagai direktori dapat dipasang pada volume / sistem file yang dioptimalkan untuk data direktori. Misalnya, tmpfsuntuk /run; dan /sbinpada media read-only / ROM.

Juga, volume bisa lokal atau jauh, pribadi atau dibagikan.

Akhirnya, lihat Direktori Aplikasi untuk pendekatan alternatif (disebutkan oleh @fluffy) yang digunakan di UNIX (OS X .app), Linux ( ROX Desktop ) dan Windows ( PortableApps.com ).

go2null
sumber
1

Sebenarnya tidak ada keuntungan untuk tata letak ini, selain itu mudah ditebak di mana file bersama dan konfigurasi untuk aplikasi. UNIX memiliki warisan panjang tata letak semacam ini, dan untuk memecahkannya akan sangat sulit. Namun, beberapa distribusi UNIX telah mengubah model mereka - mereka hanya menyediakan lokasi lama untuk tujuan warisan, dan aplikasi lain digabungkan ke dalam direktori / paket kecilnya sendiri. Mac OS X adalah contoh yang paling menonjol dari ini, dan ada beberapa distribusi Linux yang tidak jelas yang melakukan hal yang sama (dan Android melakukan sesuatu yang serupa, hanya membawanya sedikit lebih jauh dan menginstal dan meluncurkan setiap aplikasi di bawah ID pengguna sendiri juga. ).

Hal utama yang disediakan oleh konvensi sistem file adalah hanya - konvensi, sehingga orang tahu di mana mencari file (baik itu secara manual atau dalam kode). Tidak ada alasan teknis nyata untuk itu menjadi satu cara di atas yang lain.

halus
sumber