Запуск программы с правами root

вопросы по устройству ВДС, ресурсам, предустановленному софту и т.д.

Модераторы: Art.i, garry

Запуск программы с правами root

Сообщение ijkl » Ср апр 15, 2015 10:04 am

Сколько я мучился с глюками latex, который запускал из php скрипта. Дошел уже до того, что обновлял Debian до нестабильных версий и менял операционные системы. Сегодня чудом пришла мысль, что может проблема в правах доступа. Попробовал выполнить через ssh от имени root и все правильно заработало! Видимо во время выполнения программа latex генерирует какие-то вспомогательные данные в своей директории, а из под пользователя писать их там нельзя.

Как правильно и безопасно организовать выполнение программы с правами root из php скрипта, а конкретно через функцию proc_open()? Что надо писать в командной строке? Или может быть можно как-то разрешить конкретной программе выполнять операции записи и чтения от имени данного пользователя? Какой способ лучше?
ijkl
 
Сообщений: 217
Зарегистрирован: Чт окт 03, 2013 5:42 pm

Re: Запуск программы с правами root

Сообщение ijkl » Ср апр 15, 2015 10:38 am

Как разрешить пользователю читать и писать в директорию, владелец которой root? Изменить группу на users?
ijkl
 
Сообщений: 217
Зарегистрирован: Чт окт 03, 2013 5:42 pm

Re: Запуск программы с правами root

Сообщение pepper » Ср апр 15, 2015 10:41 am

Или может быть можно как-то разрешить конкретной программе выполнять операции записи и чтения от имени данного пользователя?

Можете сделать владельцем root и задать ему sticky bit:
Код: выделить все
chown root файл-скрипта
chmod u+s файл-скрипта

Что позволит выполнять скрипт с правами root.

Как правильно и безопасно организовать выполнение программы с правами root из php скрипта

Такого лучше избегать вовсе.

Как разрешить пользователю читать и писать в директорию, владелец которой root?

дать права на запись и исполнение в директорию группе пользователя:
Код: выделить все
chmod g+wx директория
или вообще всем:
Код: выделить все
chmod о+wx директория
Последний раз редактировалось pepper Ср апр 15, 2015 11:54 am, всего редактировалось 1 раз.
pepper
Support team
 
Сообщений: 551
Зарегистрирован: Пн окт 07, 2013 4:06 am

Re: Запуск программы с правами root

Сообщение ijkl » Ср апр 15, 2015 10:53 am

Такого лучше избегать вовсе.
Вы имеете ввиду избегать выполнение с правами root? То есть не советуете использовать способ с sticky bit? Кстати, что дает назначение sticky bit?

Что значит минус перед u в команде chmod -u+s ?

В директории этой программы очень много папок и файлов. Не знаю, как определить, что именно вызывает проблему. Может правильнее будет дать права на все эти директории пользователю, чем выполнять скрипт с правами root. Или это может не решить проблему? В чем еще root отличается от обычного пользователя, помимо прав доступа к папкам и файлам?

Не очень понятно, что сделает команда chmod g+wx. Т.е. не понятно, что значит группа пользователя. Какая группа будет назначена, если выполнить команду из под root? В какой группе root? А обычный юзер в какой группе?
ijkl
 
Сообщений: 217
Зарегистрирован: Чт окт 03, 2013 5:42 pm

Re: Запуск программы с правами root

Сообщение ijkl » Ср апр 15, 2015 11:51 am

сделал
chown root:root файл-скрипта
chmod u+s файл-скрипта

у php скрипта стали такие атрибуты: 644 [srw-r--r--] владелец: root, группа: root

Не помогло. Такая же ошибка, как и при выполнении из под пользователя.
Последний раз редактировалось ijkl Ср апр 15, 2015 11:54 am, всего редактировалось 1 раз.
ijkl
 
Сообщений: 217
Зарегистрирован: Чт окт 03, 2013 5:42 pm

Re: Запуск программы с правами root

Сообщение pepper » Ср апр 15, 2015 11:54 am

>> То есть не советуете использовать способ с sticky bit?
Повышенные привилегии пользователя, от которого выполняется что-либо - всегда опасность.
>> Кстати, что дает назначение sticky bit?
позволит выполнять скрипт с правами владельца скрипта, как я писал выше.

>> Что значит минус перед u в команде chmod -u+s ?
опечатка, исправил:
chmod u+s

>> Не очень понятно, что сделает команда chmod g+wx. Т.е. не понятно, что значит группа пользователя. Какая группа будет назначена, если выполнить команду из под root? В какой группе root? А обычный юзер в какой группе?
Пользователь может состоять в нескольких группах, почитайте, пожалуйста, например, тут:
http://citforum.ru/operating_systems/un ... uk/3.shtml

>> Может правильнее будет дать права на все эти директории пользователю, чем выполнять скрипт с правами root. Или это может не решить проблему? В чем еще root отличается от обычного пользователя, помимо прав доступа к папкам и файлам?
Первый способ, вижу не помог, попробуйте дать права пользователю. Если программа не выполняет важных системных функций, ничего страшного не случится.
pepper
Support team
 
Сообщений: 551
Зарегистрирован: Пн окт 07, 2013 4:06 am

Re: Запуск программы с правами root

Сообщение ijkl » Ср апр 15, 2015 12:40 pm

Пользователь может состоять в нескольких группах, почитайте, пожалуйста, например, тут:
http://citforum.ru/operating_systems/un ... uk/3.shtml
Спасибо, немного прояснилось. Хотя и раньше понимал, что есть пользователи, группы, пользователи могут состоять в нескольких группах. Но раньше думал, что в самой записи группы есть какой-то набор прав для тех, кто в группе состоит. Оказывается, группа это лишь способ задать множество пользователей, а права назначаются на самих объектах, указанием группы. Значит объект (файл\папка) может принадлежать только одной группе и нельзя назначить разные права на файл для разных групп и пользователей.

Как узнать, какие пользователи состоят в данной группе? Почему в ISP нет раздела для редактирования групп?

Первый способ, вижу не помог, попробуйте дать права пользователю.
Интересно, почему первый способ мог не сработать?

Как пользователю дать права? Включить пользователя в группу root или назначить файлам группу users? Хотя программа повсюду расположена. Запускается из /usr/bin, файлы ее лежать в /usr/share/. Не понятно, какие именно папки менять.

Значит мне для всех папок файлов программы выполнить
chown -R root:myuser programm_dir?
ijkl
 
Сообщений: 217
Зарегистрирован: Чт окт 03, 2013 5:42 pm

Re: Запуск программы с правами root

Сообщение ijkl » Ср апр 15, 2015 1:14 pm

Как найти файлы, которые были изменены недавно?
find -mtime +1 -print выводит все файлы, даже старые.
ijkl
 
Сообщений: 217
Зарегистрирован: Чт окт 03, 2013 5:42 pm

Re: Запуск программы с правами root

Сообщение pepper » Ср апр 15, 2015 1:25 pm

Значит объект (файл\папка) может принадлежать только одной группе и нельзя назначить разные права на файл для разных групп и пользователей.

Да. Только владелец, группа и все остальные могут иметь разные наборы прав.


Как узнать, какие пользователи состоят в данной группе? Почему в ISP нет раздела для редактирования групп?

Код: выделить все
grep названиеГруппы /etc/group

Большинству пользователей это не нужно, а тем, кому нужно, проще зайти в консоль и парой стандартных команд отредактировать.

Как найти файлы, которые были изменены недавно?

Код: выделить все
find -mtime -1 -print
вам надо меньше 1 дня, а не больше 1 дня.

Как пользователю дать права? Включить пользователя в группу root или назначить файлам группу users? Хотя программа повсюду расположена. Запускается из /usr/bin, файлы ее лежать в /usr/share/. Не понятно, какие именно папки менять.

Группы root нет.
Попробуйте способ ниже:

Значит мне для всех папок файлов программы выполнить
chown -R root:myuser programm_dir?

Да, это может помочь.
pepper
Support team
 
Сообщений: 551
Зарегистрирован: Пн окт 07, 2013 4:06 am

Re: Запуск программы с правами root

Сообщение ijkl » Ср апр 15, 2015 1:43 pm

Проверил /usr# find -mtime -1 -print. Нет недавно измененных файлов связанных с моей программой. Изменены только файлы в ./local/mgr5/ Значит здесь ничего нового не пишет. Права на директории 755, у файлов 644, т.е. все и так могут читать. Вряд ли изменение прав поможет.
Где еще могут быть проблемы с правами? Может быть так, что root не может писать в директории пользователя?

В /usr/share/texlive поменял группу у всех папок и файлов, но это не помогло. Как понять, на какие файлы и папки нужно менять права. Программа вызывается из /usr/bin, права у файла rwx-r-xr-x.

Даже это
chmod -R g+rwx /usr/share/
usermod -G root myusername

не помогло

Надо давать пользователю такие же права, как у root. Как можно задать на все файлы,где владелец root и группа root, права группы такие же, как у владельца?

Или лучше в командной строке shall вводить пароль root? В таком формате записывать -u root -p -rootpassword?
ijkl
 
Сообщений: 217
Зарегистрирован: Чт окт 03, 2013 5:42 pm

Re: Запуск программы с правами root

Сообщение ijkl » Ср апр 15, 2015 10:49 pm

Сейчас попробовал выполнить latex через ssh как обычный пользователь myusername и тоже все правильно сработало! Значит проблема не в правах пользователя, а в том, что latex вызывается через php, который работает как модуль Апача. В чем может быть причина? Может нужно как-то настроить Апач? Может нужно задать какое-то окружение? У функции proc_open() есть параметр env, который задает окружение. Только я не знаю, что такое окружение и как его надо задать в данном случае.
ijkl
 
Сообщений: 217
Зарегистрирован: Чт окт 03, 2013 5:42 pm

Re: Запуск программы с правами root

Сообщение Mikanoshi » Чт апр 16, 2015 10:12 am

Может нужно было написать что именно не работает, что пишет в логах и т.п., все нужные права при инсталляции обычно прописываются, если конечно она не была полностью ручной.
Mikanoshi
 
Сообщений: 205
Зарегистрирован: Сб май 02, 2009 2:03 pm

Re: Запуск программы с правами root

Сообщение swg » Чт апр 16, 2015 4:13 pm

ijkl писал(а):Видимо во время выполнения программа latex генерирует какие-то вспомогательные данные в своей директории, а из под пользователя писать их там нельзя.
Заявление противоречит идеологии linux и здравому смыслу.
Другое дело, если ENV не задана, например, временная папка, то это всё же ошибка, хотя php (как fcgi, так и mod apache) делает все корректно. Надо смотреть все возможные ключи запуска.
swg
флудит форум
 
Сообщений: 2386
Зарегистрирован: Сб окт 07, 2006 9:09 am
Откуда: NNov

Re: Запуск программы с правами root

Сообщение ijkl » Чт апр 16, 2015 9:34 pm

Проблема уже перекочевала в новую тему viewtopic.php?f=1&t=10435
ijkl
 
Сообщений: 217
Зарегистрирован: Чт окт 03, 2013 5:42 pm


Вернуться в Вопросы о работе сервера

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7