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.