Importieren Sie zpool, um Besitzrechte / Berechtigungen zu überschreiben (vgl. -o uid =, gid =, umask = Mount-Optionen)

405
mschilli

Ich habe einen Zpool aus einem System mit anderen Benutzern als dem Computer, an dem ich arbeite, von dem ich Daten kopieren möchte. Daher muss ich den Zpool mit Leseberechtigungen importieren und mounten. Da die UIDs jedoch nicht übereinstimmen, habe ich für viele Dateien keine Berechtigungen.

Ich möchte die Berechtigungen für den Zpool nicht ändern, sondern nur lesen. Ich kann die Dateien als root und das Eigentum an den lokalen Kopien auf die gewünschten lokalen Benutzer lesen, aber ich habe nicht sudo cpoder sudo chownBerechtigungen für dieses (Multi-User - System).

Ich habe sudo mountund sudo zpool/ sudo zfsBerechtigungen. Mit einem Nicht-ZFS-System würde ich

  1. sudo mount -o uid=$UID,gid=$GID,umask=0770[,ro] <device> <mountpoint> oder sowas ähnliches,
  2. cp <mountpoint>/<source> <target> die Dateien, die ich brauche, und
  3. sudo umount <mountpoint>

Wie kann ich dasselbe für ein zfs-System erreichen?

Ich konnte keine ähnliche Option für finden zpool import. Ich habe es schon versucht

  1. sudo zpool import -N <pool>.
  2. sudo zfs set mountpoint=legacy <pool>.
  3. sudo mount -t zfs -o uid=$UID,gid=$GID,umask=0770[,ro] <pool> ,<mountpoint>
  4. cp <mountpoint>/<source> <target> die Dateien, die ich brauche,
  5. sudo umount <mountpoint>.
  6. `sudo zfs set mountpoint = und
  7. sudo zpool export <pool>.

mount.zfsunterstützt diese Optionen jedoch auch nicht.

0

1 Antwort auf die Frage

2
grawity

Mit einem Nicht-ZFS-System

Nein, nur mit einem kleinen Teil von Dateisystemen, in denen normalerweise keine POSIX-kompatiblen Berechtigungen gespeichert sind. Das geht auch nicht mit ext4 oder XFS oder ReiserFS.

Ich habe Sudo-Mount

Wenn Sie Linux verwenden und auch FUSE verfügbar sind, installieren Sie das bindfs- Overlay-Dateisystem (z. B. kompilieren Sie in Ihrem Home-Verzeichnis) und hängen Sie es mit folgendem Befehl ein :

sudo mount -t fuse./home/mschilli/bindfs \ -o [ro,]mirror=mschilli \ /zfs_mountpoint /new_mountpoint 

Der bindfs-Dämon verfügt selbst über Root-Berechtigungen, um frei auf den Quellpunkt 'Mountpoint' zuzugreifen, und zeigt alle Dateien unter Ihrem Mountpunkt 'Ziel' an. (Das ist der Zweck von -o mirror=…)


Interessanterweise erlauben sowohl -t fuse.<type>die alte <type>#<source>als auch die alte Art der Angabe als Mount-Quelle, dass der Dateisystemtyp Schrägstriche enthält, dh ein absoluter Pfad zum gewünschten FUSE-Dämon ist.

Tatsächlich können Sie mit dieser Methode beliebige Binärdateien ausführen, solange es ihnen nichts ausmacht, unnötige Befehlszeilenargumente zu erhalten. (Und das zählt nicht einmal die vielen Privilegieneskalationen, die dazu führen mount --bindkönnten.)

Wenden Sie sich an Ihren Systemadministrator, bevor Sie eines der oben genannten Schritte durchführen. Vielleicht gewähren sie dir nur sudo cpRechte, wenn du sie nett fragst. Vielleicht werden Sie gefeuert, wenn Sie erwischt werden, wie Sie versuchen, die Sicherheit selbst zu umgehen.

Kurz gesagt: Wenn Sie `sudo mount 'haben, sind Sie einen Schritt von unbegrenzten Root-Berechtigungen entfernt. grawity vor 5 Jahren 1