Поскольку /etc/localtime
обычно является *символической ссылкой на файл в /usr/share/zoneinfo/
, вы должны иметь возможность ввести ls -l /etc/localtime
, чтобы получить необходимую информацию о часовом поясе на любой машине под управлением Linux.
*), если /usr
не находится на отдельном диске/разделе, тогда это файл, что делает этот метод менее -, чем -полезным. ^ _^;
Чтобы создать учетную запись пользователя без доступа к оболочке,
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
Готово!
Я предполагаю, что вы используете OpenSSH в качестве своего SSH-сервера, я полагаю, что это по умолчанию в Ubuntu.
Документация Duplicati ясно дает понять, что на самом деле вам нужен только доступ по SFTP; это делает это намного проще.
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
Во-первых, вы начинаете с прав доступа к файловой системе. Это должно защитить ваши личные файлы; ваш $HOME
не должен читаться другим пользователем!
Тем не менее, есть множество мест, которые доступны для чтения глобально (, но вам может быть все равно, может ли пользователь читать /bin/sh
; конечно, он/она может просто загрузить его из вашего дистрибутива ). Есть также несколько глобально -доступных для записи каталогов, таких как /tmp
.Вы можете защитить оба из них, используя ChrootDirectory, но обратите внимание, что каталог chroot должен принадлежать пользователю root -и не быть доступным для записи пользователю (, иначе это огромная проблема безопасности, и sshd не позволит этого ). Итак, если у вас есть ChrootDirectory /mnt/copro
, то вам нужно, чтобы он был 0755 root:root
и имел/mnt/copro/data
(или аналогичный )внутри, принадлежащий пользователю. Из соображений безопасности его имя определенно не должно быть etc
или любым другим общим каталогом верхнего -уровня (bin
, usr
, lib
и т. д. ).
Вероятно, проще всего просто поместить файл авторизованных ключей в обычное место в домашнем каталоге пользователя (~/.ssh/authorized_keys
, как и любого другого пользователя ). Этот домашний каталог, вероятно, должен быть за пределами /mnt/copro
, так как лучше не позволять ограниченному пользователю писать в свой собственный $HOME
, если это возможно. При необходимости вы можете установить альтернативное местоположение с помощью AuthorizedKeysFile
внутри блока Match
.
PS :Duplicati поддерживает другие серверные части. Поэтому, если вы больше знакомы с настройкой, например, Apache, возможно, вы захотите вместо этого предложить WebDAV. Или, может быть, у вас есть серьезный объем хранилища, и вы можете предложить интерфейс, совместимый с S3 -и т. д.