SFTP - SSH File Transfer Protocol или
Secure Transfer Protocol. Протокол безопасной передачи данных по зашифрованному ssh каналу.
Возможность работы с sftp сервером есть практически во всех ftp клиентах. В linux, стандартный клиент для командной строки так и называется, sftp. Под windows почти каждый ftp клиент имеет возможность работы по sftp (filezilla, fireftp), мне больше по душе
WinSCP, он поддерживает обычный FTP, SFTP, SCP и WebDAV, плюс авторизацию по приватным ключам ssh.
Создание и настройка пользователей, групп и каталогов
На сервере установлена операционная система Debian 7. Для создания пользователя используется стандартная утилита
useradd. Если при создании пользователя не был установлен ключ
-s с соответствующей системной оболочкой, ему по-умолчанию назначается
/bin/sh. Необходимые значения переменных берутся из файла
/etc/defaults/useradd. Посмотреть переменные можно так:
root@debian7:/# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/false
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
Значение переменной SHELL по умолчанию лучше держать в значении
/bin/false, что лишает нового пользователя возможности работать с системной оболочкой, это вопрос безопасности системы. Если-же нужно разрешить какому-то конкретному пользователю использовать системную оболочку, например пользователю
user, достаточно воспользоваться утилитой
usermod в следующем виде:
root@debian7:/# usermod -s /bin/bash user
это дает право пользователю
user использовать системную оболочку
/bin/bash.
Для пользователей которые будут использовать только
sftp, создадим отдельную группу:
root@debian7:/# groupadd sftpusers
Включить пользователя в дополнительную группу, в данном случае
sftpusers, можно на стадии его создания, например так:
root@debian7:/# useradd -m -G sftpusers user
при этом будет создан домашний каталог
/home/user. Здесь ключ
-m говорит программе
useradd что нужно создать для данного пользователя домашний каталог, а ключ
-G указывает в какую дополнительную группу должен быть добавлен пользователь. Если речь идет об уже существующем пользователе, нужно просто включить его в группу
sftpusers, используя программу
usermod с ключем
-G и указанием группы:
root@debian7:/# usermod -G sftpusers user
На случай если таких пользователей несколько, права на домашние каталоги можно выставить 700.
root@debian7:/# chmod 700 /home/user
Пользователь будет видеть сам домашний каталог другого пользователя, но не сможет видеть его содержимое.
Смотрим права на домашние каталоги:
root@debian7:/# ll /home
total 16
drwx------ 5 user user 4096 Mar 10 22:24 user
drwx------ 5 user2 user2 4096 Mar 10 22:59 user2
Настройка сервера SSH
Отредактируем файл конфигурации
ssh сервера
/etc/sshd_config, дописывает/исправляем строки:
Subsystem sftp internal-sftp
Match Group sftpusers
ForceCommand internal-sftp
ChrootDirectory /home
X11Forwarding no
AllowAgentForwarding no
AllowTcpForwarding no
PermitTunnel no
Перезапускаем sshd сервер:
root@debian7:/# service ssh restart
Проверка работы SFTP сервера
Для проверки подключаемся к sftp серверу локально:
root@debian7:/# sftp user@localhost
user@localhost's password:
Connected to localhost.
sftp>
Проверяем где мы, что нам можно, что нельзя. Общий листинг папки
/home
sftp> ls -l
drwx------ 5 1002 1002 4096 Mar 11 03:24 user
drwx------ 5 1003 1004 4096 Mar 11 03:59 user2
Листинг своего домашнего каталога:
sftp> ls -l user
drwxr-xr-x 2 1002 1002 4096 Mar 10 07:04 backup
drwxr-xr-x 2 1002 1002 4096 Mar 10 06:57 www
Попытка просмотреть домашний каталог другого пользователя, получаем отказ:
sftp> ls -l user2
remote readdir("/user2/"): Permission denied
Создание и удаление директорий:
sftp> cd user
sftp> mkdir dir
sftp> ls -l
drwxr-xr-x 2 1002 1002 4096 Mar 11 04:45 dir
drwxr-xr-x 2 1002 1002 4096 Mar 10 07:04 backup
drwxr-xr-x 2 1002 1002 4096 Mar 10 06:57 www
sftp> rmdir dir
sftp> ls -l
drwxr-xr-x 2 1002 1002 4096 Mar 10 07:04 backup
drwxr-xr-x 2 1002 1002 4096 Mar 10 06:57 www
Вроде все в норме. В любом случае ориентируйтесь по своим задачам, в зависимости от ситуации настройки могут отличаться.
Комментарии
Отправить комментарий