Ich habe ein entferntes sshfs-Dateisystem, das auf /mnt/data gemountet ist . Es folgt die relevante Zeile in /etc/fstab :
[email protected]:/var/www/ /mnt/data fuse.sshfs rw,noauto,nodev,nosuid,noexec,_netdev,allow_other,default_permissions,uid=martin,gid=martin 0 0
Die Dateien in /var/www/ auf dem entfernten System gehören dem Benutzer www-data , aber ich verwende uid=martin,gid=martin um den Besitz des gemounteten Dateisystems auf uid 1000 abzubilden.
Wenn ich nach /mnt/data/ cd als martin habe ich die richtigen dateiberechtigungen/eigentumsrechte, aber ich muss die umask ändern.
Auf dem entfernten Dateisystem der Benutzer www-data hat umask 0027 . Auf meinem lokalen Dateisystem ist der Benutzer martin hat umask 0077 . Ich möchte die umask 0077 beibehalten auf meine lokalen Dateien, aber verwenden Sie 0027 auf den sshfs gemounteten Dateien (dh alle Dateien in /mnt/data/).
Ist das überhaupt möglich?
Ich habe versucht, ACL-Berechtigungen für das gesamte Verzeichnis im Remote-Dateisystem festzulegen:
setfacl -d -m g::rx /var/www/
setfacl -d -m o::--- /var/www/
aber dies hat keine Auswirkungen auf die sshfs-gemountete Freigabe.
Akzeptierte Antwort:
sshfs verwendet sftp unter der Haube und der umask für die Erstellung neuer Dateien wird vom entfernten sftp-server gehandhabt . Sie können umask setzen als Argument an den sftp-server in /etc/ssh/sshd_config auf dem Server, wie zum Beispiel
Subsystem sftp /usr/lib/openssh/sftp-server -u 027 # Debian/Ubuntu
oder
Subsystem sftp /usr/libexec/openssh/sftp-server -u 027 # RHEL/Fedora
oder
Subsystem sftp /usr/lib/ssh/sftp-server -u 027 # Arch
Die umask-Einstellungen und die erweiterte ACL werden nicht über das von openssh implementierte SFTP-Protokoll übertragen. Beachten Sie auch, dass es kein „umask“ gibt on files“, sondern umask ist immer mit dem laufenden Prozess verbunden, der die Dateien erstellt.