Wie erstelle ich einen schreibgeschützten Link zu einem Verzeichnis?


18

Eines meiner Skripte erstellt dynamisch einen Symlink wie folgt:

ln -s /home/hosting/projects/images /home/hosting/projects/demo/images

Wie kann ich dafür sorgen, dass der Zugriff über den Link schreibgeschützt ist?

Antworten:


18

Sie können ein schreibgeschütztes Bindungs-Mount erstellen .

mount --bind /path/to/source/ /path/to/dest/
mount -o bind,remount,ro /path/to/dest

Ja, dies muss in Kerneln nach Linux-Kerneln 2.6.25 in zwei Schritten erfolgen (siehe den obigen Link für den Grund).

Oder alternativ als /etc/fstabZeilenbeispiel ref :

/path/to/source/ /path/to/dest/ none bind,ro

In beiden Fällen befindet sich ein Bind-Mount in der VFS-Ebene (Virtual Filesystem Layer), sodass dies für kein Dateisystem spezifisch ist und Sie auch nichts „mounten“. Im Grunde genommen stellt dies eine Art symbolischen Link für Sie dar, der jedoch nicht als solcher angezeigt wird.

Und um auf den Kommentar unten zu Datenverlust zu antworten ... nein, diese Anweisungen entfernen keine Dateien. Falls Sie Dateien im Zielpfad haben, wird dieser Mount darüber liegen. Heben Sie einfach die Bereitstellung auf, um Ihre Dateien im Pfad des Dateisystems darunter aufzulisten. Noch besser; Vermeiden Sie es im Allgemeinen, über einem nicht leeren Zielpfad zu mounten.


1
Achtung. Befolgte diese Schritte und entfernte mein gesamtes Backup-Verzeichnis und machte es für meinen Backup-Daemon nicht beschreibbar.

Können Sie diese Lösung bitte als fstab-Eintrag bereitstellen?
Throoze

@Throoze Los geht's;)
gertvdijk

Der Remount-Befehl sollte wahrscheinlich lauten: mount -o bind,remount,ro /path/to/destSiehe lwn.net/Articles/637501 von demselben Thread.
Anon

mount -o remount,ro /path/to/destgibt mir folgenden mount: mount point is busy.fehler : @gertvdijk
alper

2

schreibgeschützt mit einem Befehl einbinden:

mount --bind -r /path/to/source/ /path/to/dest/

aussteigen

umount /path/to/dest/
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.