Не получается правильно настроить права(решён).

Автор Mixey, 23 августа 2015, 09:44:59

« назад - далее »

0 Пользователи и 3 гостей просматривают эту тему.

Mixey

Добрых суток.
Изучаю разработку на питон/джанго.
На определённом этапе пришло время выложить одну из работ на боевой сервер, но не получается настроить права. Сайт работает только если устанавливаю полный доступ к каталогам и файлам - 777.

Сделал своего пользователя владельцем каталога, так-же добавил во владельцы группу с пользователем www-data от которого работает сервер, и пользователя-проект. Но это не помогло, я так и не могу отключить "остальных пользователей" от просмотра файлов иначе проект перестаёт работать.

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

ПС: если я верно понял, что надо делать....

Cообщение объединено 23 августа 2015, 11:35:42

Добавил всех пользователей, которые существуют, в группу владельца папки, но когда выставляю 770, то всё равно сайт перестаёт работать. Как так?

ferum

7 чтение, запись, исполнение
6 чтение. запись
5 чтение
4 нет доступа
1 цифра владелец
2 цифра группа
3 цифра остальные
Русские дебианщики против цифрового слабоумия !

yura_n

Цитата: Mixey от 23 августа 2015, 09:44:59Добавил всех пользователей, которые существуют
К проекту обычно должен иметь доступ только тот пользователь, от которого веб-сервер запущен. А вот это вот все лишнее. Проблема в том, что вы не описали ни какой у вас веб-сервер, ни как подключен проект к этому веб-серверу. Довольно наивно ожидать помощи, не дав при этом никакой информации. ;D

Mixey

yura_n, веб-сервер nginx+gunicorn. Работает это добро и настраивается через панель ajengi.
Я не подумал, что кому-то пригодятся настройки, ведь проблема именно в правах. И я не понимаю, почему даже добавив всех пользователей в группу, которая имеет все права, всё равно нужны права для "остальных пользователей" :(

yura_n

#4
Цитата: Mixey от 23 августа 2015, 22:04:23И я не понимаю, почему даже добавив всех пользователей в группу, которая имеет все права, всё равно нужны права для "остальных пользователей" :(
Обычно это происходит потому, что файлы и каталоги, к которым нужен доступ, имеют не того владельца и группу. Поэтому требуется доступ остальным. Иными словами, если веб-сервер получает доступ к файлам и каталогам, например, имея права www-data:www-data, а какой-то файл имеет права pupkin:pupkin, то веб-сервер к такому файлу доступа не получит, если не будет выданы права для остальных, так как "остальными" он и является в данном случае. А вот что у вас с правами на файлы и каталоги нагорожено - вам никто не подскажет.

Mixey


Обычно это происходит потому, что файлы и каталоги, к которым нужен доступ, имеют не того владельца и группу. Поэтому требуется доступ остальным. Иными словами, если веб-сервер получает доступ к файлам и каталогам, например, имея права www-data:www-data, а какой-то файл имеет права pupkin:pupkin, то веб-сервер к такому файлу доступа не получит, если не будет выданы права для остальных, так как "остальными" он и является в данном случае. А вот что у вас с правами на файлы и каталоги нагорожено, вам никто не подскажет.
[/quote]

yura_n, спасибо, раз ты так говоришь, то значит я всё сделал правильно.
У меня содержимое каталога было выставлено рекурсивно МойПользователь:ИмяГруппы. При этом, ИмяГруппы - содержит полный список всех имеющихся пользователей системы, включая nobody, на всякий случай :)

Сам я при смене владения пользовался командой: chown -R ИмяГруппы:ИмяПользователя ПутьКФайлу, а вот в группу пользователей добавлял при помощи панели, может она что-то не так прописала? Что мне нужно проверить, подскажите пожалуйста.

yura_n

#6
Цитата: Mixey от 24 августа 2015, 14:06:13Что мне нужно проверить, подскажите пожалуйста.
Допустим, что веб-сервер у тебя запускается от пользователя www-data и группы www-data. Чтобы веб-сервер имел корректный доступ к файлам и каталогам, нужно убедиться, что они имеют корректного владельца и группу - все те же www-data:www-data. То есть, нужно просто выполнить:

ls -al

И затем, с помощью chown, изменить на правильные.
А вот если нужен доступ какому-то пользователю к этим файлам и каталогам, вот тогда нужно добавлять его в группу www-data, затем выполнять ls и проверять достаточно ли разрешений (на доступ к файлам и каталогам) у группы. Произвольно добавлять кучу пользователей в группу www-data вообще не нужно.

Mixey

#7
yura_n, сервер действительно запущен от www-data, но www-data уже состоит в группе которая является владельцем этих папок.
Я так понимаю, что если пользователь www-data, состоит в группе, которая является хозяином этих папок, то во владельцы её добавлять не обязательно?

Цитата: yura_n от 24 августа 2015, 14:17:27Произвольно добавлять кучу пользователей в группу www-data вообще не нужно.
Это я сделал ради теста, чтобы быть уверенным, что все пользователи имеют допуск к нужным файлам и папкам, и "остальных пользователей" не осталось. Но получилось, что всё равно каким-то "пользователям" допуска нет - этот момент с толку и сбивает.


yura_n

Цитата: Mixey от 24 августа 2015, 18:50:31сервер действительно запущен от www-data, но www-data уже состоит в группе которая является владельцем этих папок.
Вот не понял я совершенно, что ты хочешь сказать??? Очевидно, что есть пользователь www-data, есть группа www-data. Веб-сервер запускается от пользователя и группы. Что значит www-data состоит в группе? В какой группе? Ты хочешь сказать, что пользователь www-data состоит в группе www-data? Если да, то зачем?
Цитата: Mixey от 24 августа 2015, 18:50:31Я так понимаю, что если пользователь www-data, состоит в группе, которая является хозяином этих папок, то во владельцы её добавлять не обязательно?
И это я не понимаю тоже. Давай лучше по другому, сервер запущен от пользователя www-data и группы www-data, это так? Если так, то выполняй:

ls -al

для файлов и каталогов, к которым должен иметь доступ веб-сервер, и выкладывай вывод команды сюда.

Mixey

#9
Вот пожалуйста:

root@training:/home/mika/sites/games# ls -al
итого 1144
drwxrwxrwx 13 mika sites    4096 авг 23 11:01 .
drwxrwxrwx  6 mika sites    4096 авг 14 22:37 ..
-rwxrwxrwx  1 mika sites 1114112 авг 23 11:01 db.sqlite3
drwxrwxrwx  5 mika sites    4096 авг 14 22:41 forum
drwxrwxrwx  3 mika sites    4096 авг 21 14:08 games
-rwxrwxrwx  1 mika sites     248 авг 17 09:08 manage.py
drwxrwxrwx  3 mika sites    4096 авг 14 22:45 public
drwxrwxrwx  2 mika sites    4096 авг 14 22:42 __pycache__
drwxrwxrwx  6 mika sites    4096 авг 21 12:26 арго
drwxrwxrwx  6 mika sites    4096 авг 18 19:23 две_башни
drwxrwxrwx  2 mika sites    4096 авг 14 22:42 изображения
drwxrwxrwx  6 mika sites    4096 авг 14 23:50 карта_сайта
drwxrwxrwx  3 mika sites    4096 авг 14 22:42 сопутствующие_приложения
drwxrwxrwx  5 mika sites    4096 авг 14 22:42 учёт_пользователей
drwxrwxrwx  5 mika sites    4096 авг 14 22:42 чат


А это пользователи группы из файла /etc/group:
sites:x:1001:www-data,bin,daemon,sys,sync,games,man,lp,mail,news,uucp,proxy,backup,list,irc,gnats,nobody,systemd-timesync,systemd-network,systemd-resolve,systemd-bus-proxy,Debian-exim,messagebus,statd,sshd,mysql,nobody


yura_n

#10
Так у тебя же ни одного файла и нет, к которому веб-сервер стандартно мог бы получить доступ. Самый простой вариант:

chown -R www-data:www-data /home/mika/sites/games

А потом уже пройтись с помощью chmod и назначить стандартный доступ для файлов 644, а для каталогов 777. Правда, здесь есть ньюанс, бывает и исполняемые файлы хранятся - это тоже нужно учесть.

P.S. И вот этих вот всех пользователей из группы sites нужно удалить. Зачем они вообще?

Mixey

yura_n, вы целиком верно сказали. Всё заработало. Я тогда совсем не понимаю этой системы прав :(

Цитата: yura_n от 24 августа 2015, 20:02:33Так у тебя же ни одного файла и нет, к которому веб-сервер стандартно мог бы получить доступ.
Объясните пожалуйста эту фразу. Я не понимаю - www-data ведь был в группе. Почему тогда не мог получить доступ?



yura_n

Цитата: Mixey от 24 августа 2015, 20:44:18Объясните пожалуйста эту фразу. Я не понимаю - www-data ведь был в группе. Почему тогда не мог получить доступ?
Ну да, пользователь www-data был в группе sites и имел те же разрешения, что и группа sites.  Только здесь тонкость, веб-сервер - это не живой пользователь, а программа, которая в ньюансах разбираться особо не будет. Нужно ей www-data:www-data на файлах, каталогах - изволь, так сказать, предъявить. Нет - будут заморочки.

Mixey

Ясно. Юра, спасибо вам, огромное. Измучился уже этот вопрос решать.