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

Запретить запись в отключенную точку монтирования sshfs

Предполагая, что у меня есть папка /mnt/mountpoint которую я использую как точку монтирования для некоторых sshfs-монтированный каталог:

sshfs user@host /mnt/mountpoint

Теперь я хочу запретить приложениям писать в /mnt/mountpoint пока он не установлен. Вопросы, которые я нашел Вот и Вот есть ответы, подразумевающие использование

sudo chattr +i /mnt/mountpoint

который отлично работает, чтобы предотвратить любой доступ для записи. К сожалению, это также мешает мне установить с sshfs как обычный пользователь.

Какое было бы лучшее решение для этого? Я бы предпочел одну команду sshfs или что-то, что хотя бы не требует привилегий root. Должен ли я отказаться от chattr подойти и попробовать что-то совсем другое?

Разрешения по умолчанию для точки монтирования

Создайте точку монтирования с помощью

mkdir --mode=0500 -p /mnt/mountpoint

Только создавший пользователь сможет писать в него. Вы можете предварительно заполнить это из rc.local. Когда вы монтируете любую файловую систему, которая находится поверх этой точки монтирования, она получает разрешения этого оверлея, которые вы установили при монтировании.

Кстати, я бы избегал chattr +i так как это запутает людей и вызовет удовольствие от устранения неполадок в будущем, если не все будут знать, что вы это сделали.

Я получил это, чтобы работать с chattr +i с помощью IdentityFile вариант в sshfs.

Чтобы это работало, вам нужно будет сгенерировать и добавить свои ключи к удаленному хосту.

ssh-keygen && ssh-copy-id username@host

После этого вы можете использовать sudo с sshfs для монтирования хоста.

# If not running the sshfs command from a script,
# you need to save the following values prior to running sshfs.
# If you don't, they will be interpreted as the root user's env variables.

sshfs_uid="$UID"
sshfs_gid="$GID"
sshfs_key"$HOME/.ssh/id_rsa"

# Please note that all options passed to sshfs are required.
# Using these options will allow your user to read + write to the mounted dir.
# If they are not passed, your user won't be able to access the mounted dir.

sudo sshfs -o uid=$sshfs_uid -o gid=$sshfs_gid -o IdentityFile=$sshfs_key -o allow_other username@host:/path /path/to/mountpoint

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

Чтобы исправить это:

sudo visudo

# Assuming your sudo group is "wheel".
# And assuming the permissions for your wheel group look something like this.
%wheel ALL=(ALL) ALL

# Add this line after the above line to allow sshfs mounting without a password
%wheel ALL=(ALL) NOPASSWD:/usr/bin/sshfs*