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?

Elmor
quelle

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.

gertvdijk
quelle
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/
Shimon Doodkin
quelle