Предполагая, что у меня есть папка /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*