Я изучил многие веб-сайты и форумы о том, как настроить пользователя SFTP, который помещен в определенный каталог с помощью CHROOT. Вот шаги, которые я выполнил, но я не могу получить разрешение на запись для работы.
Настройка
sshd_config
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Match group webmaster
X11Forwarding no
ChrootDirectory %h
AllowTcpForwarding no
ForceCommand internal-sftp
Создать папку
mkdir /var/www/sites
[ 1119] Создать пользователя и группу
useradd uploader
passwd uploader
usermod -d /var/www/sites uploader
groupadd webmaster uploader
groupadd www-data uploader
Разрешения и владение
chown root:root /var/www
chmod 755 /var/www/sites
Теперь с этими настройками пользователь, добавивший файл, может выполнять SFTP-вход в дом каталог, но не может записать в каталог.
Имеются 2 типичные ошибки: я либо не могу войти, либо у меня нет прав на запись.
Ошибка входа в систему
Error: Network error: Software caused connection abort
Error: Could not connect to server
Changing permissions of /var/www/sites to 775 or 777 causes login error.
chown /var/www/sites to uploader:root causes login error.
chwon root:webmaster or root:www-data I have no write permissions
Я, скорее всего, пытаюсь выяснить это, и если кто-нибудь сможет указать мне правильное направление, я буду очень признателен.
Спасибо.
Обнаружил решение. Пользователь заключен в тюрьму /var/www/sites
. Затем я создал еще одну папку /var/www/sites/site1
.
Я использую:
chown root:webmaster /var/www/sites/site1
chmod 775 /var/www/sites/site1
Это позволило домашнему каталогу иметь правильные разрешения для входа в систему, а затем иметь возможность записи в следующую папку.
Если пользователю нужен доступ для записи в /var/www/sites
, то вы должны заключить пользователя в тюрьму /var/www
с правами владения root:root
и правами доступа 755. Затем вам нужно предоставить /var/www/sites
права собственности root: (ваша группа ) и разрешения 775.
Возможно, самое лучшее решение:
mkdir /var/www/sites/myfirstuser/hisownsite
mkdir /var/www/sites/myseconduser/hisownsite
...
chown root:root /var/www/sites /var/www/sites/{myfirstuser,myseconduser} && chmod 755 /var/www/sites/{myfirstuser,myseconduser}
chmod 775 /var/www/sites/myfirstuser/hisownsite
chmod 775 /var/www/sites/myseconduser/hisownsite
chgrp www-data /www/sites/myfirstuser/hisownsite /var/www/sites/myseconduser/hisownsite
Добавьте пользователей:
useradd -d /var/www/sites/myfirstuser -s /bin/false -g www-data dev1
useradd -d /var/www/sites/myseconduser -s /bin/false -g www-data dev2
passwd dev1
passwd dev2
Затем для каждого созданного пользователя добавьте тег ssh, например: (вы также можете использовать директиву Match Group, как в вашем примере вместо «Match User»)
Match User dev1
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Match user dev2
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Таким образом, вы можете управлять всеми нужными пользователями в изолированной среде.
Hth, Фабрицио