Зміна дозволу на запис ув'язненого SFTP заперечує вхід


14

Я розглядав багато веб-сайтів та форумів щодо того, як налаштувати користувача 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

Створіть користувача та групу

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 в домашній каталог, але не може записатись у каталог.

Трапляються дві типові помилки, я або не можу увійти, або не маю дозволів на запис.

Помилка входу

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

Я розбираюся в цьому і намагаюся розібратися в цьому, і якщо хтось міг би вказати мені на правильний напрямок, я був би дуже вдячний.

Дякую.

Відповіді:


16

Знайшов рішення. Користувач ув'язнений до /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.


1

Можливо, найбільше рішення:

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 User dev1
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Match user dev2
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Таким чином, ви можете керувати всіма потрібними вам користувачами в хронізованому середовищі.

Гт, Фабріціо


Повторіть свій остаточний блок коду: Matches підтримує декілька цілей у списках, розділених комами, тому ми могли б значно спростити / охайно, маючи єдиний набір відмінок для обох користувачів, заголовокMatch User dev1,dev2
underscore_d

1
Отже, як це встановити, щоб вони були заблоковані у папці, до якої вони мали доступ для читання / запису?
Кевін Б Бернс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.