LINUX.ORG.RU
решено ФорумAdmin

Запутался с правами

 ,


0

1

Есть сайт на WP. У папок права 755, у файлов 644, владелец и группа www-data. Вроде все в норме.

Проблема с редактированием файлов по FTP. Есть, к примеру, пользователь user. Он состоит в группе www-data. Но получается, что у этому пользователю по ftp не изменить никак файлы из-за прав. Делаю юзера владельцем - теперь user имеет полный доступ к ftp, но получаю forbidden от nginx при заходе на сайт.

Может кто разъяснит, как разрулить права?

И еще вопрос на засыпку: при подключении к ftp переходит к определенной директории с сайтами, но можно просмотреть всю файловую систему. Как сделать, чтобы ftp пользователь мог просматривать только дефолтную директорию?

Если нужно, выложу конфиг vsftpd.

★★★

Сделай одного и того же пользователя для FTP и веб-сервера. Можешь даже отдельного создать, тогда добавляешь nginx в группу этого пользователя, а по FTP от имени этого пользователя прям и заходи.

Black_Roland ★★★★
()

Я у себя так виртуальные хосты делаю. Создаю пользователя и группу srv-<доменное_имя>, добавляю nginx в эту группу, ставлю права 750 и 640, запускаю отдельный php-fpm от этого пользователя, но у сокета владельцем ставлю nginx. FTP мне не нужен, но тут уже нет никаких проблем разрешить пользователю srv-<доменное_имя> логиниться по FTP.

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 1)
Ответ на: комментарий от zevilz

useradd -g newuser nginx

Эта команда не добавит nginx в группу newuser. Надо так:

usermod -a -G newuser nginx

И перезапусти nginx.

Какой кстати дистр? SELinux включен?

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

Я обоими пользуюсь. Какую первую вспомню, такой и пользуюсь)) Debian 7.7, SELinux вроде нет

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

После этого появилась еще одна проблема. Плагины WP перестали иметь доступ к файлам. Некоторые просто не могут работать, а некоторые просят доступ к ftp.

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

видимо 077, т.к. этот параметр закоменчен, а по дефолту в комменте написано что 077. А какая должна быть?

zevilz ★★★
() автор топика
Последнее исправление: zevilz (всего исправлений: 1)

Как сделать, чтобы ftp пользователь мог просматривать только дефолтную директорию?

chroot_local_user=YES

легче настроить pure-ftpd там это всё интуитивнее

snaf ★★★★★
()
Ответ на: комментарий от zevilz

Маске 077 соответствуют права 700 и 600, т.е. поэтому у nginx нет доступа. Поменяй маску на 027: будут права 750 и 640.

Но это только для вновь залитых файлов, надо еще починить права у уже созданных файлов. В директории с сайтом сделай chown и вот эти две команды:

find . -type d -exec chmod 750 {} \;
find . -type f -exec chmod 640 {} \;

Black_Roland ★★★★
()
Ответ на: комментарий от zevilz

Ох, тогда не знаю. Есть еще какой-то параметр file_open_mode, но точно не знаю за что он отвечает.
Может и правда pure-ftpd, как snaf советовал, проще будет?

Black_Roland ★★★★
()

ещё раз:

1. нужно создать специальную группу(далее www), и включить в него сервер(далее www-data) и юзера(далее user).

2. каталог www/ (DocumentRoot для апача) должен иметь владельца user:www, права 02750

3. Файлы(регулярные, e.g. index.php) Владелец user:www, права 0640

4. Каталоги, которые сервер может только читать user:www, 02750

5. Каталоги, в которых сервер может создавать/удалять файлы user:www, 02770

6. umask для user 0023

7. если user хочет сделать файл, который может быть изменён сервером(e.g. www/cache/), то ему нужно дополнительно поставить право chmod g+w /www/cache. По умолчанию сервер может только читать файлы, созданные user'ом.

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

Может и правда pure-ftpd, как snaf советовал, проще будет?

нет. Права FTP-сервера работают ПОВЕРХ обычных прав доступа. Если у вас что-то запрещено обычными правами, то и по FTP это будет запрещено, хоть убейтесь. (убиться можно, зайдя на FTP как root).

Потому вам нужно СНАЧАЛА настроить обычные права, а уже потом можно и что-то дополнительно запретить правами FTP-сервера. Но в вашем случае это ИМХО не нужно.

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

видимо 077, т.к. этот параметр закоменчен, а по дефолту в комменте написано что 077. А какая должна быть?

077 это самое безопасное: доступ разрешён только владельцу.

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

Если следовать Вашему мануалу, то мне практически для всех директорий нужно ставить 02770, т.к. плагинам вордпресса нужен поступ практически ко всему.

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

Если следовать Вашему мануалу, то мне практически для всех директорий нужно ставить 02770, т.к. плагинам вордпресса нужен поступ практически ко всему.

нет. Доступ нужен, но достаточно только g+rx, т.е. во многих каталогах не нужно создавать файлы/каталоги(самому серверу не нужно, а user сможет, т.к. владелец). ЕМНИП там только cache/ и ещё files/, если можно загружать файлы(через web).

Hint: поставьте всем каталогам 02750, и попробуйте зайти. Вордпресс сам напишет, куда он хотел сунуться, но не смог. Конечно нужно на время включить индикацию ошибок, либо читать лог-файл.

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

И да, я это реализовывал, это не теория, а практика.

Смысл прав:

02000 aka s+g, т.н. SGID бит. Нужен для того, что-бы группа новой директории была такой же, как группа родительской директории. У нас группа родителя www, потому она будет наследоваться, и доступ к директории получит не только хозяин, но и группа. Обычно это не имеет значения для web-сервера, потому-что веб-сервер обычно НЕ создаёт каталоги, а только файлы. В противном случае SGID важен, и также важно установить права 02770, что-бы другие юзеры в группе имели доступ на запись.

0700/0600 aka u+rwx/u+rw полный доступ для хозяина, хозяин обычно user, который заливает файлы на сервер(разработчик). Заливать конечно лучше по ssh, а не по устаревшему FTP. Если файлы создал сам сервер, то он и хозяин. Однако разработчик может такой сервер удалить, т.к. является хозяином каталога. Для регулярных файлов (e.g. index.php) право выполнения НЕ нужно.

0050/0040 aka g+rx/g+r доступ только на чтение для регулярных файлов(для каталогов нужен ещё и доступ +x) для группы www. По умолчанию, сервер может только читать файлы. Писать файлы серверу не нужно, если можно, то это РЕШЕТО.

emulek
()

Решил проблему добавлением виртуального пользователя в vsftpd, который работает от имени www-data. Теперь ничьи права не ущемлены)))

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