Zunächst einige Hintergrundinformationen:
- / dev / md1 ist ein RAID-0-Array, das als primärer Dateispeicher dient. Es ist an / var / smb gemountet.
- / dev / md2 ist ein weiteres RAID-0-Array, in dem Backup-Snapshots aus / dev / md1 gespeichert sind. Es wird an / var / smb / snapshots gemountet.
- Über Samba werden drei Verzeichnisse zur Verfügung gestellt: / var / smb / files (öffentlich freigegebene Dateien), / var / smb / private (private Dateien) und / var / smb / snapshots (schreibgeschützter Zugriff auf Backup-Snapshots).
Nur Benutzer in der smbusers-Gruppe dürfen auf die Freigaben für Dateien und Snapshots zugreifen. Ebenso dürfen nur Benutzer in der Gruppe smbprivate privat auf die Dateien zugreifen. Darüber hinaus verbieten Linux-Berechtigungen Benutzern, die nicht zu den jeweiligen Gruppen gehören, den Zugriff auf die Dateien und privaten Verzeichnisse sowohl auf dem lokalen System als auch innerhalb der Snapshots-Samba-Freigabe.
Dies ist großartig, da dies bedeutet, dass wir einen voll funktionsfähigen Dateiserver mit der Selbsthilfeoption "Aus Sicherung wiederherstellen" haben (Benutzer können einfach auf die Snapshots-Freigabe zugreifen und die Datei (en) abrufen, die sie selbst wiederherstellen möchten) Bisher fehlt mir eine wichtige Zutat: Nicht-Root-Zugriff auf das lokale System auf das Verzeichnis / var / smb / snapshots.
Die Snapshots müssen für alle regulären Benutzer streng schreibgeschützt sein. Natürlich muss das Dateisystem schreibgeschützt gemountet sein, damit der Sicherungsvorgang stattfinden kann. Die Berechtigungen für diese Verzeichnisse lauten derzeit:
root@odin:/var/smb# ll
total 40
drwxrwxr-x 7 root root 4096 2011-04-11 15:18 ./
drwxr-xr-x 14 root root 4096 2011-04-10 19:07 ../
drwxrwx--- 15 kromey smbusers 4096 2010-12-07 13:09 files/
drwxrwx--- 7 kromey smbprivate 4096 2010-04-07 07:08 private/
drwxrwx--- 3 root root 4096 2011-04-11 15:16 snapshots/
Jetzt möchte ich Nicht-Root-Benutzern Zugriff auf das Snapshots-Verzeichnis gewähren, jedoch ausschließlich schreibgeschützt. Ich kann / dev / md2 jedoch nicht schreibgeschützt bereitstellen, da ich es schreibgeschützt haben muss, um Sicherungen auszuführen. Ich kann es nicht einfach schreibgeschützt für eine Sicherung erneut bereitstellen und dann wieder schreibgeschützt bereitstellen, da dies ein Zeitfenster bietet, in das die Sicherungen von einem anderen Benutzer geschrieben werden könnten.
Früher habe ich dies getan, indem ich mein Snapshots-Verzeichnis zu einem schreibgeschützten NFS-Export gemacht habe (nur zu localhost) und diesen lokal gemountet habe (das Original wurde in einem Verzeichnis gesichert, in dem es keine Durchquerungsrechte für Nicht-Root-Benutzer gibt), aber das fühlt sich wie ein Hack an und es scheint als ob es einen besseren Weg geben sollte, dies zu erreichen. Ich habe die mount --bind
Option ausprobiert , aber es scheint nicht möglich zu sein, unterschiedliche Zugriffsebenen (dh schreibgeschützt oder schreibgeschützt) für die beiden Verzeichnisse zu haben (es sei denn, mir fehlt etwas :) mount -r --bind dir1 dir2
.
Irgendwelche Ideen, wie ich dies ohne NFS erreichen kann, oder ist das meine beste Option?
TL; DR: Wie kann ich den Inhalt eines Dateisystems einem ausgewählten Benutzer schreibgeschützt, aber allen anderen schreibgeschützt zur Verfügung stellen, während die ursprünglichen Berechtigungen und Eigentumsrechte für die in diesem Dateisystem gesicherten Dateien erhalten bleiben?
man acl
für Details.
cp -a
beizubehalten, im Gegensatz zum Beispiel, wenn Unix-Berechtigungen beibehalten werden , da dies im Allgemeinen keinen Sinn ergibt. acl
wird im Allgemeinen nicht unterstützt. Der Kernel muss es unterstützen und Sie müssen es auf dem Dateisystem aktivieren, wenn Sie es als Mount-Option bereitstellen.