LINUX.ORG.RU
ФорумAdmin

SFTP Пользователи + MATCH GROUPE,! Помогите с Правами.

 , ,


0

1

На Сервере есть несколько сайтов

/var/www/site1
/var/www/site2
Права sudo
chown -R www-data:www-data /var/www

Необходимо что-бы у каждого сайта был свой пользователь по SFTP который имел бы доступ к своему каталогу только своего сайта с полными правами на запись.

Пользователь site1 имел доступ только к /var/www/site1
Пользователь site2 имел доступ только к /var/www/site2

и был изолирован и не мог видеть содержимое /var/www не кто их пользователей.

делал все по статье как тут:> http://www.tech-notes.net/configure-sftp-chroot-on-ubuntu-14-04

только ставлю я в

/etc/ssh/sshd_config 
Match Group www-data
        X11Forwarding no
        AllowTcpForwarding no
        ChrootDirectory /var/www%h
        ForceCommand internal-sftp
        PasswordAuthentication yes 

то пользователей site1 не пускает больше по sftp.

изоляция работает только тогда когда права стоят

chown root:root /var/www/site1


и группа другая.

А нужно что-бы.

что-бы  у каталогов /var/www/site1  были права www-data:www-data
и был пользователь site1 который бы имел полный доступ к папке /var/www/site1
и больше у него не было не какого другого доступа и даже визуального в другие каталоги /var/www

Помогите порешать,! За Ранее Спасибо.


Последнее исправление: shrmvl (всего исправлений: 1)

Ответ на: комментарий от sanekmihailow

Короче плохая система до Горя этот ChrootDirectory система так устроена, если пользователю назначить к примеру /var/www/site1 он не сможем Записывать в корень так как - что-бы работало нужно чтобы корневая папка пренадлежала root:root. А если сделать /var/www/ на рут рут тогда все пользователя будут видеть все сайты которые в папке /var/www Дебелизм полный!

shrmvl
() автор топика
Ответ на: комментарий от shrmvl

/var/www/ на рут рут тогда все пользователя будут видеть все сайты
Дебелизм полный!

Согласен. Полный дебилизм.
Ведь если выдать права root:root, то только рут и сможет писать.

Deleted
()

Тащемта задачу Вы решаете странно. Нужно чтобы подминмались апачи или нгинксы от имени юзеров, иначе можно через скрипты друг к дружке лазать будет.

Deleted
()
Ответ на: комментарий от Deleted

Как решить мою задачу?

в каталоге /var/www/ есть сайты

site1 site2 и.т.д

как дать пользователю к примеру site1 чтобы имел доступ к /var/www/site1 и больше не куда и не видел что находиться в /var/www также и работал нормально Aparche так как он использует www data

shrmvl
() автор топика
Ответ на: комментарий от sanekmihailow

Все отлично! спасибо Гуру. выложу мало ли кому пригодиться.

#Для начала создадим группу с пользователями: именно группа sftpusers и будет изолированна.
groupadd sftpusers

#Поскольку sftp - подсистема ssh, то и настройки е находятся в файле sshd_config. Его и нужно подредактировать:
nano /etc/ssh/sshd_config

#Находим и коментируем строку: #Subsystem sftp /usr/lib/openssh/sftp-server
#Добавляем прямо под ней строку:

Subsystem sftp internal-sftp

Добавляем следующее в конец документа:  тоесть изорируем группу sftpusers
(Обязательно в конце после параметра USE PAM)

Match Group sftpusers
        X11Forwarding no
        AllowTcpForwarding no
        ChrootDirectory %h
        ForceCommand internal-sftp
        PasswordAuthentication yes
		
#Перезапускаем демон ssh что бы изменения вступили в силу:

initctl restart ssh

#Теперь можно и пользователя создать:

useradd -g sftpusers -d /home/mysite -m -s /bin/false mysite
passwd mysite

#На самом деле оболочка "/bin/false" отсутствует в файле "/etc/shells", но это не вызывает проблем с логином через sftp. На всякий случай ее лучше добавить:

echo "/bin/false" >> /etc/shells

Важным шагом является изменение собственника папки пользователя. Пользователям нельзя писать в свои домашние каталоги:
(Пользователь будет изолирован) права на запись можно дать любой под папке но кроме корня, так владелец root

chown root:root /home/mysite

#Если Вам нужно создать папку с правом на запись:

mkdir /home/mysite/upload
chown mysite:sftpusers /home/mysite/upload

### "ЭТАП 2" (Монтируем каталог /var/www/mysite.com.ua для пользователя mysite с правами чтения и записи )

#создаем подкаталог для /www

mkdir -p /home/mysite/www

#Монтируем сайт с /var/www и выдаем права

mount --bind /var/www/mysite.com.ua /home/mysite/www
chmod g+s /home/mysite/www
chown -R mysite:www-data /home/mysite/www
apt-get install acl
setfacl -d -m g::rwx /home/mysite/www

Готово!

shrmvl
() автор топика
Ответ на: комментарий от sanekmihailow

не знаю можно ли дилиться тут контактами! если да Оставь свой Skype или ICQ, Jabber!

shrmvl
() автор топика
12 мая 2019 г.
Ответ на: комментарий от shrmvl

Набрел на этот пост, симптомы(проблемы) идентичны

shrmvl

chown root:root /home/mysite

и

useradd -g sftpusers -d /home/mysite -m -s /bin/false mysite

При входе получаем perm. den. Правильно будет:

useradd -G sftpusers -d /home/mysite -m -s /bin/false mysite

Разница -g и -G

-G - дополнительные группы, в которые нужно добавить пользователя

-g изменить основную группу для пользователя

Далее:

chown root:user1 /home/mysite 
mkdir /home/mysite/www
chown user1:user1 /home/mysite/www

Права на /var/www/site те же (root:user1), mkdir папка для сайта (user1:user1) права 777

И вот теперь можно монтировать.

Прошло немало лет, я набрел на этот пост, значит и другие будут)) Спасибо всем (:

AXIOM
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.