Разрешить «другому» пользователю делать личные резервные копии на моем сервере через sshd без доступа к оболочке (вход с открытым ключом)

Поскольку /etc/localtimeобычно является *символической ссылкой на файл в /usr/share/zoneinfo/, вы должны иметь возможность ввести ls -l /etc/localtime, чтобы получить необходимую информацию о часовом поясе на любой машине под управлением Linux.

*), если /usrне находится на отдельном диске/разделе, тогда это файл, что делает этот метод менее -, чем -полезным. ^ _^;

2
10.09.2019, 23:20
2 ответа

Чтобы создать учетную запись пользователя без доступа к оболочке,

sudo adduser --shell /bin/false mysftpfriend

Вы должны создать каталог и структуру каталогов для mysftpfriend и сделать его доступным для них.

sudo mkdir -p /var/mysftpfriends/storage

Дать доступ,

sudo chown mysftpfriend:mysftpfriend /var/mysftpfriends/storage

Просто установите root, чтобы иметь полный доступ (владельца и владельца группы )к каталогу mysftpfriends.

sudo chown root:root /var/mysftpfriends
sudo chmod 0766 /var/mysftpfriends

Члены группы могут читать/записывать, но не могут выполнять.

Теперь, чтобы настроить SSH, предназначенный только для SFTP, откройте /etc/ssh/sshd_configв текстовом редакторе (nano или vim ),

sudo nano /etc/ssh/sshd_config

добавить следующие строки в конец файла,

Match User mysftpfriend
    ForceCommand internal-sftp
    PasswordAuthentication yes
    ChrootDirectory /var/mysftpfriends
    PermitTunnel no
    AllowAgentForwarding no
    AllowTcpForwarding no
    X11Forwarding no

сохраните файл, выйдите из редактора и перезапустите ssh.

sudo service ssh restart

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

sftp mysftpfriend@myserver

Готово!

1
27.01.2020, 22:02

Я предполагаю, что вы используете OpenSSH в качестве своего SSH-сервера, я полагаю, что это по умолчанию в Ubuntu.

Документация Duplicati ясно дает понять, что на самом деле вам нужен только доступ по SFTP; это делает это намного проще.

  1. Вы настроили раздел Match Userили Match Groupв /etc/ssh/sshd_config, чтобы сопоставить пользователя с несколькими параметрами, что наиболее важно ForceCommand, возможно,ForceCommand internal-sftp(есть внешний sftp-сервер, который вы могли бы использовать вместо него в некоторых случаях. случаях, и на самом деле это может быть любая команда — ее также можно использовать для таких вещей, как доступ только git, например. )Скорее всего, вы также захотите предотвратить различные переадресации. К сожалению, вам нужно следить за обновлениями SSH, добавляющими больше; в последний раз я проверял, что вы хотите (обратите внимание, что некоторые из них по умолчанию не используются):
    AllowAgentForwarding no
    AllowTCPForwarding no
    AllowStreamLocalForwarding no
    PermitTTY no
    PermitTunnel no
    PermitUserEnvironment no
    PermitUserRC no
    X11Forwarding no
  1. Во-первых, вы начинаете с прав доступа к файловой системе. Это должно защитить ваши личные файлы; ваш $HOMEне должен читаться другим пользователем!

    Тем не менее, есть множество мест, которые доступны для чтения глобально (, но вам может быть все равно, может ли пользователь читать /bin/sh; конечно, он/она может просто загрузить его из вашего дистрибутива ). Есть также несколько глобально -доступных для записи каталогов, таких как /tmp.Вы можете защитить оба из них, используя ChrootDirectory, но обратите внимание, что каталог chroot должен принадлежать пользователю root -и не быть доступным для записи пользователю (, иначе это огромная проблема безопасности, и sshd не позволит этого ). Итак, если у вас есть ChrootDirectory /mnt/copro, то вам нужно, чтобы он был 0755 root:rootи имел/mnt/copro/data(или аналогичный )внутри, принадлежащий пользователю. Из соображений безопасности его имя определенно не должно быть etcили любым другим общим каталогом верхнего -уровня (bin, usr, libи т. д. ).

  2. Вероятно, проще всего просто поместить файл авторизованных ключей в обычное место в домашнем каталоге пользователя (~/.ssh/authorized_keys, как и любого другого пользователя ). Этот домашний каталог, вероятно, должен быть за пределами /mnt/copro, так как лучше не позволять ограниченному пользователю писать в свой собственный $HOME, если это возможно. При необходимости вы можете установить альтернативное местоположение с помощью AuthorizedKeysFileвнутри блока Match.

PS :Duplicati поддерживает другие серверные части. Поэтому, если вы больше знакомы с настройкой, например, Apache, возможно, вы захотите вместо этого предложить WebDAV. Или, может быть, у вас есть серьезный объем хранилища, и вы можете предложить интерфейс, совместимый с S3 -и т. д.

2
27.01.2020, 22:02

Теги

Похожие вопросы