Apa direktori yang paling tepat di mana menempatkan file yang dibagikan di antara pengguna?

83

Atau: di mana saya bisa meletakkan file milik grup?

Misalkan ada dua pengguna pada sistem Unix: joe dan sarah . Mereka berdua adalah anggota kelompok penggemar film . Di mana saya harus meletakkan file film mereka?

  • /home/{joe,sarah}/moviestidak sesuai karena direktori tersebut milik joe / sarah , bukan milik kelompok mereka;

  • /home/movies-enthusiastjuga tidak sesuai, karena penggemar film adalah kelompok, bukan pengguna;

  • /var/movies-enthusiast mungkin menjadi pilihan, tapi saya tidak yakin ini diizinkan oleh FHS;

  • /srv/movies-enthusiast mungkin menjadi opsi juga, namun film bukan file yang diperlukan oleh layanan sistem.

pengguna16538
sumber
6
Terpilih untuk menyebutkan FHS! Pengguna * nix ini dan admin sistem kasual 20 tahun belum mengetahuinya. Terima kasih!
CPRitter

Jawaban:

72

Jangan gunakan

  • /usrhanya untuk data read-only yang dapat dibagi. Data di sini hanya boleh diubah karena alasan administratif (mis. Pemasangan paket baru.)
  • /opt umumnya untuk program yang mandiri atau perlu diisolasi dari sisa sistem karena beberapa alasan (misalnya, program honeypot interaksi rendah dan menengah).
  • /varadalah untuk "file yang isinya diharapkan untuk terus berubah selama operasi normal sistem --- seperti log, file spool, dan file email sementara." Saya suka berpikir seperti ini: jika data Anda tidak terlihat dirangkum dalam daftar, umumnya tidak termasuk dalam /var(meskipun, ada pengecualian untuk ini.)

Menggunakan

  • /homeadalah untuk direktori home user. Beberapa orang melihat direktori ini sebagai area untuk file grup juga. FHS sebenarnya mencatat bahwa, "pada sistem besar (terutama ketika direktori / home dibagikan di antara banyak host menggunakan NFS) berguna untuk membagi direktori home pengguna. Subdivisi dapat dicapai dengan menggunakan subdirektori seperti / home / staff, / home / tamu, / rumah / siswa, dll. "
  • /srvadalah lokasi yang dapat diterima dan sering dipilih untuk file grup. Saya biasanya menggunakan direktori ini untuk file grup-bersama karena alasan yang disebutkan dalam jawaban Chris Down ; Saya melihat berbagi file grup sebagai layanan yang disediakan server.

Lihat halaman manual hier (7) ( man hier) untuk informasi lebih lanjut mengenai tujuan setiap direktori yang dijelaskan oleh FHS.

Komunitas
sumber
1
Saya kira dalam beberapa kasus yang lebih umum seseorang dapat menggunakan /srv/datadirektori untuk file data.
Victor Yarema
4
+1 untuk menyebutkan hier pria. Saya tidak tahu itu ada.
Zach Boyd
Terima kasih, informasi & referensi yang sangat berguna untuk pengguna linux baru.
Shivam
28

Menurut saya, tempat yang tepat adalah /srv/movies-enthusiast. "Layanan" tidak harus berupa daemon atau program, hanya harus berupa layanan yang disediakan oleh sistem (seperti bisa mendapatkan film Anda di sana). Berikut ini kutipan dari FHS :

/ srv berisi data spesifik situs yang dilayani oleh sistem ini.

Saya pikir penggunaan Anda termasuk dalam definisi itu, dan menyediakan layanan.

Chris Down
sumber
Saya kira dalam beberapa kasus yang lebih umum seseorang dapat menggunakan /srv/datadirektori untuk file data.
Victor Yarema
11

The Filesystem Hierarchy Standard (FHS) menentukan tata letak untuk "pengembang Unix distribusi, pengembang paket, dan pelaksana sistem" untuk mematuhi agar tidak membuat berantakan Anda namespace.

Karena Anda namespace, Anda harus memilih nama yang Anda merasa cocok. Jika menurut Anda /groups/movies-enthusiastmasuk akal, Anda harus meletakkannya di sana. Jika Anda menyukai nama jalur pendek karena lebih mudah diketik, /g/movies-enthusiast(atau mungkin /g/m-e) akan cocok.

Karena jalur yang Anda pilih tidak ditentukan dalam FHS, paket distribusi atau pihak ketiga tidak boleh menyentuhnya. Karena itu, Anda harus membaca FHS untuk mengetahui jalur apa yang dapat digunakan oleh perangkat lunak yang sesuai (daftar isi akan memberi tahu Anda sebagian besar dari apa yang perlu Anda ketahui).

Sebagai contoh, saya pribadi menggunakan /avtempat saya menyimpan konten audio-visual, /srcuntuk kode sumber dan /datauntuk data yang tidak ditentukan (seperti gambar mesin virtual, gambar cd, chroot, paket yang disimpan, dll).

camh
sumber
Saya pribadi menggunakan / data untuk semua file seperti itu, kemudian / data / film untuk konten audio-visual, / data / src untuk kode sumber, / data / musik. semua dalam satu tempat (hierarkis).
meduz
Mengikuti atau mematuhi standar sering kali merupakan ide yang bagus, bahkan jika Anda bukan seorang dev, distro dev, pkg dev, atau pelaksana sistem.
Felipe Alvarez
Menambahkan direktori baru tidak bertentangan dengan FHS; sebenarnya, saya berpendapat bahwa tidak membuat direktori baru kadang-kadang diperlukan untuk tetap mematuhi FHS ! FHS secara khusus menyebutkan bahwa setiap pertanyaan yang tidak perlu dikoordinasikan antara banyak pihak berada di luar ruang lingkup standar itu. Oleh karena itu, mencoba menyesuaikan setiap kebutuhan pada akhirnya di dalam salah satu direktori yang ditentukan FHS terikat untuk menciptakan situasi di mana file diletakkan di dalam direktori di mana mereka seharusnya tidak.
jwatkins
7

Tidak ada yang salah dengan membuat titik mount atau direktori baru untuk tujuan ini dari root.

Khususnya jika ini adalah tujuan utama dari sistem ini, saya hanya akan membuat

/ penggemar film

Jika ada "grup" serupa lainnya, saya mungkin atau mungkin tidak memilih untuk menjadi tuan rumah bersama, misalnya

/data/movies-entusiast
/data/next-group
etc

atau

/share/movies-enthusiast
/share/next-idea
etc

Pertanyaan untuk dipertimbangkan: Apakah Anda akan mendedikasikan titik-mount untuk tujuan ini?

Sudahkah Anda mempertimbangkan softlink?

Bagaimanapun tidak ada aturan. Jika Anda ingin menjadikan satu pengguna kustodian dan memberikan sisanya akses ke ruang proyek ini, jangan ragu untuk menyimpannya di direktori home pengguna. Atau buat / home / shared / * name-space. Anda adalah bos Anda sendiri.

Oh, satu hal: Apa pun yang Anda lakukan, lakukan dokumentasikan. Itu perlu menjadi bagian dari pemulihan sistem, pemeriksaan harian, cadangan, dll. Penahanan konfigurasi penting perlu dicatat (misalnya keanggotaan grup, set izin, peragaan kinerja, dan hal lain yang bukan default)

Johan
sumber
1

FHS juga membuat admin mudah jadi saya akan pergi dengan / srv untuk alasan itu meskipun bukan itu yang saya lakukan. Tinjau belakang yang sempurna. Saya menggunakan / mengekspor / srv karena ini di NAS.

Jika kotak drop maka pastikan bahwa keduanya setgid dan lengket. Juga memastikan bahwa mereka yang menggunakannya memiliki umask yang bermanfaat. Namun, jangan gunakan roda seperti yang saya lakukan pada contoh mode akses file. Jangan menelanjangi eXecute atau Anda akan mendapat kejutan O_o.

bash-3.2$ mkdir movies
bash-3.2$ sudo chmod 03771 movies
Password:
bash-3.2$ ls -ld movies/
drwxrws--t 2 andrewb wheel 68 Apr  4 17:09 movies/
bash-3.2$ umask 026
bash-3.2$ touch movies/junk
bash-3.2$ ls -l movies/
total 0
-rw-r----- 1 andrewb wheel 0 Apr  4 17:09 junk
pengguna2243313
sumber
1

Penting untuk diingat bahwa FHS mengatasi masalah di mana penempatan file perlu dikoordinasikan antara banyak pihak seperti situs lokal, distribusi, aplikasi, dokumentasi, dll ; FHS tidak mencoba untuk menetapkan aturan untuk setiap situasi yang mungkin Anda miliki: penempatan lokal file lokal adalah masalah lokal ( FHS 3.0, bagian 1.1 ).

Oleh karena itu, Anda dapat secara teknis meletakkan moviesdirektori Anda di mana saja, asalkan tidak bertentangan dengan konvensi FHS . Namun, pertanyaan Anda adalah tentang tempat yang paling tepat , jadi mari kita pertimbangkan beberapa jawaban umum (dipesan dari yang paling disukai hingga yang kurang disukai, mengingat kasus penggunaan khusus Anda):

  • /<someprefix>/<groupname>atau /media/<volumename>/<groupname>: Jujur saya tidak tahu mengapa opsi ini memiliki reputasi buruk di dunia Linux, tapi mari kita perjelas: ini benar - benar sistem Anda , dan FHS mengatakan bahwa Anda bebas dari membuat direktori baru di tingkat root selama karena Anda tidak bertentangan dengan apa pun yang ada semantik mapan. Misalnya Anda dapat membuat direktori /groupsatau /shareddan mengatur file-file di dalamnya sesuai keinginan Anda. Saya tahu bahwa beberapa administrator lebih suka memiliki ini agak terisolasi dari sisa filesystem, sehingga mereka me-mount volume yang berbeda (mis. Di bawah /media/<volumename>/<groupname>). Keduanya baik-baik saja dan keduanya sesuai FHS, sungguh.

  • /srv/<groupname>atau /srv/<someprefix>/<groupname>: Menurut FHS, /srvberisi data spesifik situs yang dilayani oleh sistem ini . FHS kemudian menjelaskan bahwa metodologi yang digunakan untuk menamai subdirektori dari / srv tidak ditentukan . Dari pengalaman pribadi saya, sebagian besar administrator yang mengeksploitasi /srvdirektori berjalan dengan subdirektori per-klien, per-situs atau per-proyek, dan kemudian menempatkan direktori data pada tingkat itu. Bagaimanapun Anda menyusunnya, the/srvsangat dapat diterima untuk menyimpan file untuk dibagikan di antara beberapa pengguna jika Anda dapat mempertimbangkan bahwa berbagi file-file ini merupakan layanan dengan sendirinya. Tanyakan kepada diri sendiri: "Apakah masuk akal untuk akhirnya membagikan file-file itu melalui SMB / NFS / AFS / GIT / ...?" Jika demikian, maka Anda dapat dengan wajar mempertimbangkan bahwa direktori Anda adalah layanan berbagi file lokal, dan dengan demikian menyimpannya di dalam subdirektori /srv, meskipun tidak ada daemon yang benar-benar melayani file-file itu ke sistem lain.

  • /home/<groupname>atau /home/<some-prefix>/<groupname>: FHS mengatakan: /homeadalah konsep yang cukup standar, tetapi jelas merupakan sistem file spesifik-situs . Sama sekali tidak ada persyaratan bahwa setiap direktori di bawah /homeadalah nama pengguna yang sebenarnya, dan dapat diterima untuk memiliki subdirektori untuk grup, meskipun tindakan pencegahan diperlukan untuk menghindari konflik akhirnya antara grup dan pengguna. Namun, saya telah melihat strategi ini digunakan dalam beberapa pengaturan besar (terutama universitas) dengan beberapa strategi kompartimentasi untuk menghindari kemungkinan konflik; misalnya, pengguna nyata akan memiliki direktori home mereka di /home/students/<studentid>, /home/teachers/<username>atau /home/staff/<username>, sementara barang yang dibagikan misalnya akan dimasukkan/home/workgroup/<workgroupname>. Kadang-kadang mereka juga akan menjadi subdivisi departemen; tetap saja, Anda mendapatkan idenya. Sejujurnya, saya pribadi tidak suka strategi ini, tetapi itu membuat segalanya sedikit lebih mudah ketika /homedidistribusikan di antara beberapa server (misalnya melalui NFS), itulah sebabnya mengapa cenderung disukai di organisasi yang sangat besar.

jwatkins
sumber
0

Saya pribadi akan memilih / usr / share / penggemar film atau / opt / penggemar film

Srdjan Grubor
sumber
0

Saya sarankan untuk membuat direktori terpisah seperti / opt / film, mengatur hak pengguna dan grup yang sesuai untuk mereka dan Anda juga dapat menggunakan disk quotauntuk menghindari konsumsi disk total ..

Hojat Taheri
sumber
0

Ini adalah komentar yang sama banyaknya dengan jawaban (jadi tolong jangan downvote saya untuk itu!), Tapi terlalu lama untuk memasukkan komentar.

Saya melakukan dua hal, yang keduanya menghindari masalah yang Anda hadapi.

1) Saya membuat partisi terpisah dari semua ruang kosong pada disk sistem saya dan menamakannya sebagai ruang data. Di situlah semua file media saya saat ini dan data lainnya pergi. Itu akan diotomatisasi sebagai / media / dataset dan saya meletakkan apa pun yang "data" di bawah direktori yang disebut "data" untuk memisahkannya dari hal-hal seperti file kerja, vms, atau gambar iso yang tidak ingin saya backup secara rutin.

Menggunakan partisi terpisah memiliki manfaat tambahan yaitu, jika terisi, itu tidak membahayakan sistem saya seperti jika disimpan di / atau / home.

2) Saya menaruh sebagian besar data / media saya, terutama hal-hal yang saya tidak gunakan "sekarang", pada drive fisik lain (USB dalam kasus saya dengan notebook). Itu membuatnya mudah untuk dicadangkan dan mudah dipasang ke komputer lain, jika perlu.

Joe
sumber