Изменение разрешений на запись для входа в тюрьму SFTP

10

Я просмотрел многие веб-сайты и форумы о том, как настроить пользователя 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

Я нахожусь в тени, пытаясь понять это, и если кто-нибудь может указать мне в правильном направлении, я был бы очень признателен.

Спасибо.

    
задан onggie 13.04.2013 в 02:26
источник

2 ответа

10

Хорошо выяснил решение этого вопроса, надеюсь, это поможет некоторым людям.

Пользователь заключен в тюрьму в / var / www / sites. Затем я создал другую папку / var / www / sites / site1. Я корню 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.

    
ответ дан onggie 13.04.2013 в 23:07
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 Group», как в вашем примере, вместо «Match User»).

Match User dev1
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

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

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

Hth, Фабрицио

    
ответ дан fabreg 13.07.2013 в 10:00