Назад | Перейти на главную страницу

В разрешении sshfs отказано даже для пользователя root

я использую sshfs для монтирования удаленной папки с другого сервера на локальный сервер. Подключение удаленной папки работает без проблем с помощью следующей команды:

sshfs -o allow_other someServerFromSSHConfig:/home/data/somefolder/ /some/local/folder

Проблема в том, что я не могу изменить владельца файлов с помощью chown (независимо от прав root). Я всегда получаю:

chown: changing ownership of ‘/somefolder/file.img’: Permission denied

Пользователь, который обращается к папке, является членом группы предохранителей. Даже если я добавлю дополнительные параметры монтирования в sshfs, чтобы установить владельца как userx:groupx Я не могу изменить разрешения с помощью userx и используя chown -R userx:groupx [...]

Я ожидаю, что смогу установить права пользователей для файлов в подключенных папках, но это не так.

Как вы сказали в комментариях, вы подключаетесь как data @ remote_server Это означает, что вы не можете chown вообще. Sshfs - это всего лишь грубая абстракция, вам разрешены только те действия, которые вы можете выполнять внутри sftp data@remote_server Всякая абстракция дырявая, и эта тоже.

Только root @ remote_server может chown на удаленном_сервере. Неважно, каким пользователем вы являетесь на local_server.

Обратите внимание, что sftp root@remote_server вам обычно нужно PermitRoot yes или PermitRoot without-password в удаленных /etc/ssh/sshd_config Это рискованно.

PS. По умолчанию sshd вообще не разрешает вход в систему с правами root из-за PermitRoot no вариант. Поэтому обычно вы не можете использовать sshfs root @ remote_host. Если вы хотите протестировать поведение chown через root, я бы рекомендовал установить PermitRoot without-password. Это означает, что root может войти в систему, когда открытый ключ добавлен в /root/.ssh/authorized_keys. С этим параметром root не может войти в систему только с помощью пароля root, поэтому это в некоторой степени безопасно.

PS2. Если вам нужно немного больше безопасности, вы можете настроить другой экземпляр sshd только для этого файлового ресурса; с участием ForceCommand internal-sftp и с chroot это значительно повысило бы безопасность root, но потребовалось бы использовать новый порт TCP и новое исключение межсетевого экрана.

Если вы хотите установить конкретного владельца файла для смонтированной папки sshfs, вам необходимо сделать это с помощью uid=USER_ID_N,gid=USER_GID_N и idmap=user параметры.

  • uid, gid - установить указанное владение файлами; uid - это числовой идентификатор вашего пользователя, gid - числовой идентификатор группы вашего пользователя.
  • idmap - используйте опцию idmap со значением user для перевода UID подключающегося пользователя. # sshfs -o idmap=user sessy@mycomputer:/home/sessy /mnt/sessy -C -p 9876 Он сопоставит UID удаленного пользователя "sessions" с локальным пользователем, который запускает этот процесс ("root" в приведенном выше примере), и GID останется неизменным.

Следует знать, что ваш UID (идентификатор пользователя, уникальный номер вашего пользователя в системе) не обязательно совпадает на двух хостах. Когда вы используете ls -l, имя пользователя, связанное с каждым файлом, печатается в третьем столбце. Однако в файловой системе хранятся только UID, и ls просто просматривает UID и находит связанное с ним имя пользователя. В Unix важны UID, а не имена пользователей. Поэтому, если у вас 1000 на локальном хосте и 1003 на удаленном хосте, смонтированный каталог sshfs будет отображать другое имя пользователя для ваших файлов. Однако это не проблема, потому что ssh-сервер на удаленном компьютере фактически читает и записывает файлы. Таким образом, даже если он отображается в ls -l как другой UID, любые изменения будут выполняться через ssh-сервер на удаленном хосте, который будет использовать правильный UID для удаленной машины. Проблемы могут возникнуть, если вы попытаетесь использовать программу, которая просматривает UID файлов (например, ls печатает неправильное имя пользователя).

В idmap = пользователь опция гарантирует, что файлы, принадлежащие удаленному пользователю, принадлежат локальному пользователю. Если вы не используете idmap = user, файлы в смонтированном каталоге могут казаться принадлежащими кому-то другому, потому что ваш компьютер и удаленный компьютер имеют разные представления о числовом идентификаторе пользователя, связанном с каждым именем пользователя. idmap = user не будет переводить UID для других пользователей.

Цитируется по: https://help.ubuntu.com/community/SSHFS