Welches Verzeichnis eignet sich am besten, um Dateien zu speichern, die von Benutzern gemeinsam genutzt werden?

83

Oder: Wo kann ich Dateien ablegen, die zu einer Gruppe gehören?

Angenommen, es gibt zwei Benutzer auf einem Unix-System: Joe und Sarah . Sie sind beide Mitglieder der Gruppe der Filmliebhaber . Wo soll ich ihre Filmdateien ablegen?

  • /home/{joe,sarah}/moviessind nicht geeignet, weil diese Verzeichnisse zu joe / sarah gehören , nicht zu ihrer Gruppe;

  • /home/movies-enthusiastist auch nicht angebracht, weil der Filmliebhaber eine Gruppe ist, kein Benutzer;

  • /var/movies-enthusiast Es könnte eine Option sein, aber ich bin mir nicht sicher, ob dies von der FHS erlaubt wird.

  • /srv/movies-enthusiast Möglicherweise ist dies auch eine Option. Filme sind jedoch keine Dateien, die von den Systemdiensten benötigt werden.

user16538
quelle
6
Zur Erwähnung der FHS gewählt! Dieser * nix-User und Gelegenheits-Sys-Admin von 20 Jahren hatte davon nichts gewusst. Danke!
CPRitter

Antworten:

72

Nicht verwenden

  • /usrist für gemeinsam nutzbare Nur-Lese-Daten. Daten hier sollten sich nur aus administrativen Gründen ändern (zB die Installation neuer Pakete.)
  • /opt ist im Allgemeinen für Programme gedacht, die eigenständig sind oder aus irgendeinem Grund vom Rest des Systems isoliert werden müssen (z. B. Honeypot-Programme mit geringer und mittlerer Interaktion).
  • /varDies gilt für "Dateien, deren Inhalt sich während des normalen Systembetriebs voraussichtlich ständig ändern wird, z. B. Protokolle, Spooldateien und temporäre E-Mail-Dateien." Ich stelle es mir gerne so vor: Wenn Ihre Daten nicht richtig in einer Liste zusammengefasst aussehen, gehören sie im Allgemeinen nicht dazu /var(es gibt jedoch Ausnahmen).

Verwenden

  • /homeist für private Benutzerverzeichnisse. Einige sehen in diesem Verzeichnis auch einen Bereich für Gruppendateien. Das FHS merkt tatsächlich an, dass es auf großen Systemen (insbesondere wenn die / home-Verzeichnisse von vielen Hosts mit NFS gemeinsam genutzt werden) nützlich ist, die Home-Verzeichnisse der Benutzer zu unterteilen. Die Unterteilung kann mithilfe von Unterverzeichnissen wie / home / staff, / home erfolgen / Gäste, / Zuhause / Studenten, etc. "
  • /srvist ein akzeptabler und häufig bevorzugter Speicherort für Gruppendateien. Ich verwende dieses Verzeichnis im Allgemeinen für Dateien, die von einer Gruppe gemeinsam genutzt werden, und zwar aus dem Grund, der in Chris Downs Antwort genannt wird . Ich sehe Gruppendateifreigabe als einen Dienst, den der Server bereitstellt.

man hierWeitere Informationen zum Zweck der einzelnen Verzeichnisse, die von der FHS beschrieben werden, finden Sie in der man page ( ) hier (7) .

Gemeinschaft
quelle
1
Ich nehme an, dass in einigen allgemeineren Fällen ein /srv/dataVerzeichnis für Datendateien verwendet werden kann.
Victor Yarema
4
+1 für die Erwähnung von man hier. Ich wusste nicht, dass es das gibt.
Zach Boyd
Vielen Dank, sehr nützliche Informationen und Hinweise für einen neuen Linux-Benutzer.
Shivam
28

Meiner Meinung nach ist der richtige Ort /srv/movies-enthusiast. Ein "Dienst" muss kein Dämon oder Programm sein, sondern nur ein Dienst, den das System bereitstellt (z. B. Ihre Filme dort abrufen zu können). Hier ein Zitat der FHS :

/ srv enthält standortspezifische Daten, die von diesem System bereitgestellt werden.

Ich denke auf jeden Fall, dass Ihre Verwendung unter diese Definition fällt und einen Service bietet.

Chris Down
quelle
Ich nehme an, dass in einigen allgemeineren Fällen ein /srv/dataVerzeichnis für Datendateien verwendet werden kann.
Victor Yarema
11

Der Filesystem Hierarchy Standard (FHS) legt ein Layout fest, an das sich "Entwickler von Unix-Distributionen, Paketentwickler und Systemimplementierer" halten müssen, damit Ihr Namespace nicht durcheinander gebracht wird .

Da es sich um Ihren Namespace handelt, sollten Sie jeden Namen auswählen, den Sie für geeignet halten. Wenn Sie es /groups/movies-enthusiastfür sinnvoll halten, sollten Sie es dort ablegen. Wenn Sie kurze Pfadnamen mögen, weil sie einfacher zu tippen sind, /g/movies-enthusiast(oder vielleicht /g/m-e) wären sie geeignet.

Da die von Ihnen ausgewählten Pfade nicht in der FHS definiert sind, dürfen sie von den Distributions- oder Drittanbieter-Paketen nicht berührt werden. Lesen Sie daher die FHS, um zu erfahren, welche Pfade von kompatibler Software verwendet werden können (das Inhaltsverzeichnis enthält die wichtigsten Informationen).

Ich persönlich verwende beispielsweise, /avwo ich meine audiovisuellen Inhalte speichere, /srcfür Quellcode und /datafür undefinierte Daten (wie z. B. Images von virtuellen Maschinen, CD-Images, Chroots, gespeicherte Pakete usw.).

camh
quelle
Ich persönlich verwende / data für alle diese Dateien, dann / data / movies für audiovisuelle Inhalte, / data / src für Quellcode, / data / music. Alles an einem (hierarchischen) Ort.
Meduz
Befolgen oder Befolgen von Standards ist sehr oft eine gute Idee, auch wenn Sie kein Entwickler, Entwickler einer Distribution, Entwickler eines Pakets oder Systemimplementierer sind.
Felipe Alvarez
Das Hinzufügen eines neuen Verzeichnisses ist nicht gegen die FHS; Eigentlich würde ich argumentieren, dass es manchmal erforderlich ist , keine neuen Verzeichnisse zu erstellen, um FHS-konform zu bleiben ! Das FHS erwähnt ausdrücklich, dass jede Frage, die nicht zwischen mehreren Parteien koordiniert werden muss, außerhalb des Anwendungsbereichs dieser Norm liegt. Der Versuch, alle möglichen Anforderungen in einem der von FHS definierten Verzeichnisse zu erfüllen, führt daher zwangsläufig dazu, dass Dateien in Verzeichnissen abgelegt werden, in denen sie sich nicht befinden sollten.
Jwatkins
7

Es ist nichts Falsches daran, einen neuen Einhängepunkt oder ein neues Verzeichnis für diesen Zweck aus dem Stammverzeichnis zu erstellen.

Insbesondere wenn dies der Hauptzweck dieses Systems ist, würde ich es nur schaffen

/ Kino-Enthusiast

Wenn es andere ähnliche "Gruppen" gibt, kann ich es vorziehen oder nicht, sie zusammen zu hosten, z

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

oder

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

Zu berücksichtigende Fragen: Möchten Sie einen Einhängepunkt für diesen Zweck festlegen?

Haben Sie über Softlinks nachgedacht?

In jedem Fall gibt es keine Regeln. Wenn Sie einen Benutzer zum Verwalter machen und dem Rest Zugriff auf diesen Projektbereich gewähren möchten, können Sie ihn im Home-Verzeichnis des Benutzers hosten. Oder erstellen Sie einen / home / shared / * -Namensraum. Du bist dein eigener Chef.

Was auch immer Sie tun, dokumentieren Sie es. Es muss Teil der Systemwiederherstellung, der täglichen Überprüfungen, Sicherungen usw. werden. Wichtige Konfigurationsrückstände müssen notiert werden (z. B. Gruppenmitgliedschaften, Berechtigungssätze, einstellbare fs-Werte für die Leistung und alles andere, was keine Standardeinstellung ist).

Johan
quelle
1

FHS soll auch die Administration vereinfachen, weshalb ich mich aus diesem Grund für / srv entschieden habe, obwohl es nicht das ist, was ich getan habe. Habe aber im Nachhinein perfekte Sicht. Ich benutze / export / srv, weil es auf NAS ist.

Wenn es sich um eine Dropbox handelt, stellen Sie sicher, dass sie fest und klebrig ist. Stellen Sie außerdem sicher, dass die Benutzer eine nützliche umask haben. Verwenden Sie jedoch nicht das Rad wie im Beispiel für Dateizugriffsmodi. Ziehen Sie eXecute nicht aus, sonst erleben Sie eine O_o-Überraschung.

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
user2243313
quelle
1

Es ist wichtig , sich daran zu erinnern , dass die FHS Fragen behandelt werden, wo Datei Placements müssen zwischen mehreren Parteien wie lokale Websites, Verteilungen, Anwendungen, Dokumentation, etc. koordiniert werden ; Das FHS versucht nicht, Regeln für jede einzelne Situation festzulegen: Die lokale Platzierung lokaler Dateien ist ein lokales Problem ( FHS 3.0, Abschnitt 1.1 ).

Daher können Sie Ihr moviesVerzeichnis technisch überall ablegen, sofern dies nicht gegen die FHS-Konventionen verstößt . Ihre Frage bezog sich jedoch auf den am besten geeigneten Ort. Betrachten wir daher ein paar häufig gestellte Antworten (sortiert von "Am meisten bevorzugt" nach "Am wenigsten bevorzugt" in Anbetracht Ihres speziellen Anwendungsfalls):

  • /<someprefix>/<groupname>oder /media/<volumename>/<groupname>: Ich weiß ehrlich gesagt nicht, warum diese Option in der Linux-Welt einen schlechten Ruf hat, aber lassen Sie uns klarstellen: Dies ist wirklich Ihr System, und die FHS sagt, dass Sie so lange keine neuen Verzeichnisse auf Root-Ebene erstellen dürfen Sie widersprechen nichts, wofür es eine gut etablierte Semantik gibt. Sie können beispielsweise ein Verzeichnis erstellen /groupsoder /sharedDateien in diesem nach Belieben organisieren. Ich weiß, dass einige Administratoren es vorziehen, diese vom Rest des Dateisystems etwas isoliert zu haben, so dass sie ein bestimmtes Volume (dh unter /media/<volumename>/<groupname>) bereitstellen . Beide sind in Ordnung und beide sind wirklich FHS-konform.

  • /srv/<groupname>oder /srv/<someprefix>/<groupname>: /srvEnthält laut FHS ortsspezifische Daten, die von diesem System bereitgestellt werden . Das FHS erklärt dann weiter, dass die Methode zur Benennung der Unterverzeichnisse von / srv nicht spezifiziert ist . /srvNach meiner persönlichen Erfahrung arbeiten die meisten Administratoren, die das Verzeichnis ausnutzen, mit einem Unterverzeichnis pro Client, pro Site oder pro Projekt und ordnen dann Datenverzeichnisse auf dieser Ebene zu. Wie auch immer Sie es strukturieren, die/srvEs ist durchaus akzeptabel, Dateien zu speichern, die von mehreren Benutzern gemeinsam genutzt werden, wenn Sie vernünftigerweise davon ausgehen können, dass die gemeinsame Nutzung dieser Dateien für sich genommen einen Dienst darstellt. Fragen Sie sich: "Wäre es sinnvoll, diese Dateien irgendwann über SMB / NFS / AFS / GIT / ... freizugeben?" In diesem Fall können Sie davon ausgehen, dass es sich bei Ihrem Verzeichnis um einen lokalen Dateifreigabedienst handelt, und diese daher in einem Unterverzeichnis von speichern /srv, obwohl kein Dämon diese Dateien tatsächlich für andere Systeme bereitstellt.

  • /home/<groupname>oder /home/<some-prefix>/<groupname>: Die FHS sagt: /homeist ein ziemlich Standardkonzept, aber es ist eindeutig ein ortsspezifisches Dateisystem . Es ist absolut nicht erforderlich, dass jedes Verzeichnis /homeder Name eines tatsächlichen Benutzers ist, und es ist zulässig, Unterverzeichnisse für Gruppen zu haben, obwohl Vorsichtsmaßnahmen erforderlich sind, um eventuelle Konflikte zwischen einer Gruppe und einem Benutzer zu vermeiden. Dennoch habe ich gesehen, dass diese Strategie in mehreren großen Einrichtungen (insbesondere Universitäten) mit einer Kompartimentierungsstrategie verwendet wurde, um die Möglichkeit von Konflikten zu vermeiden. würden zum Beispiel haben echte Benutzer ihre Home - Verzeichnisse in /home/students/<studentid>, /home/teachers/<username>oder /home/staff/<username>, während Shared Sachen würden zum Beispiel in gesetzt werden/home/workgroup/<workgroupname>. Irgendwann würden sie auch eine Abteilung Unterteilung sein; Trotzdem kommt Ihnen die Idee. Um ehrlich zu sein, mag ich diese Strategie persönlich nicht, aber sie macht es ein bisschen einfacher, wenn /homesie auf mehrere Server verteilt ist (zum Beispiel über NFS), weshalb sie in sehr großen Organisationen bevorzugt wird.

Jwatkins
quelle
0

Ich persönlich würde mich für / usr / share / movies-enthusiast oder / opt / movies-enthusiast entscheiden

Srdjan Grubor
quelle
0

Ich schlage vor, ein separates Verzeichnis wie / opt / movies zu erstellen, entsprechende Benutzer- und Gruppenberechtigungen für sie festzulegen und auch die Festplatte quotazu verwenden, um den gesamten Festplattenverbrauch zu vermeiden.

Hojat Taheri
quelle
0

Dies ist ebenso ein Kommentar wie eine Antwort (bitte stelle mich nicht dafür in Abrede!), Aber es ist viel zu lang, um in einen Kommentar zu passen.

Ich mache zwei Dinge, die beide das Problem vermeiden, mit dem Sie konfrontiert sind.

1) Ich erstelle eine separate Partition des gesamten freien Speicherplatzes auf meiner Systemfestplatte und bezeichne sie als Datenbereich. Dort werden alle meine aktuellen Mediendateien und sonstigen Daten abgelegt. Es wird automatisch als / media / dataspace gemountet und ich füge alles, was "data" ist, in ein Verzeichnis namens "data" ein, um es von Dingen wie Arbeitsdateien, VMS oder ISO-Images zu trennen, die ich nicht routinemäßig sichern möchte.

Die Verwendung einer separaten Partition hat den zusätzlichen Vorteil, dass mein System nicht beeinträchtigt wird, wenn es voll ist, wie wenn es unter / oder / home gespeichert würde.

2) Ich habe die meisten meiner Daten / Medien, insbesondere Dinge, die ich gerade nicht benutze, auf ein anderes physisches Laufwerk (USB in meinem Fall mit einem Notebook) gelegt. Dies erleichtert das Backup und das Anschließen an einen anderen Computer, falls dies erforderlich sein sollte.

Joe
quelle