Mám vzdálený souborový systém sshfs připojený na /mnt/data
. Následuje příslušný řádek v /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
Soubory v /var/www/
na vzdáleném systému jsou ve vlastnictví uživatele www-data
, ale já používám uid=martin,gid=martin
k mapování vlastnictví na připojeném souborovém systému na uid 1000.
Když cd do /mnt/data/
jako martin mám správná oprávnění/vlastnictví souboru, ale musím změnit umask.
Na vzdáleném souborovém systému uživatel www-data
má umask 0027
. Na mém lokálním souborovém systému uživatel martin
má umask 0077
. Chci ponechat umask 0077
v mých místních souborech, ale použijte 0027
na sshfs připojených souborech (tj. všechny soubory v /mnt/data/).
Je to vůbec možné?
Zkoušel jsem nastavit oprávnění acl pro celý adresář na vzdáleném souborovém systému:
setfacl -d -m g::rx /var/www/
setfacl -d -m o::--- /var/www/
ale to nemá žádný vliv na sdílenou složku připojenou pomocí sshfs.
Přijatá odpověď:
sshfs
používá sftp
pod kapotou a umask
o vytváření nových souborů se stará vzdálený sftp-server
. Můžete nastavit umask
jako argument pro sftp-server
v /etc/ssh/sshd_config
na serveru, například
Subsystem sftp /usr/lib/openssh/sftp-server -u 027 # Debian/Ubuntu
nebo
Subsystem sftp /usr/libexec/openssh/sftp-server -u 027 # RHEL/Fedora
nebo
Subsystem sftp /usr/lib/ssh/sftp-server -u 027 # Arch
Nastavení umask a rozšířený ACL se nepřenášejí přes protokol SFTP, jak je implementován openssh. Všimněte si také, že neexistuje žádný „umask
na souborech“, ale umask
je vždy spojen se spuštěným procesem vytvářejícím soubory.