LAMPP - запуск от обычного пользователя.

Сейчас существует множество сборок apache+php+mysql для упрощения работы веб-разработчиков, которые позволяют легко и быстро настроить у себя на компьютере все, что нужно для веб-программирования.
В рунете наиболее популярным пакетом является Денвер, третье поколение которого не так давно стало доступно публике. Однако, самый популярный - не значит "единственный". Из всех существующих, наибольшую конкуренцию Денверу может составить пакет XAMPP от проекта ApacheFriends. Впрочем, за рубежом он уже давно завоевал большое сообщество пользователей и единственное, что мешает ему потеснить Денвер - отсутствие русской локализации, которое отпугивает многих новичков.

Сегодня мы поговорим о версии XAMPP для Linux, известного так же как LAMPP.
Те, кто пользовались им, знают, что для запуска сервера необходимы права root, но вводить всякий раз пароль - дело не веселое. Поэтому я сегодня расскажу о способе, позволяющему избавить себя от этой нудной необходимости.

Немного теории.

В большинстве файловых систем, используемых ОС семейства *NIX (и Linux в том числе), Есть такое свойство файла - SUID-бит, установка которого в 1 обеспечивает запуск исполняемого файла с правами владельца.
Чтобы установить такой бит для файла file_name, нужно от имени root выполнить команду
chmod u+s file_name

Перейдем к практике.
Для того, чтобы управляющий скрипт (/opt/lampp/lampp) согласился работать и от имени простого пользователя, необходимо перед кждой из этих строк добавить символ решетки:

if test "`id -u`" -ne 0
then
$de && echo "XAMPP muss als root aufgerufen werden!"
$de || echo "You need to start XAMPP as root!"
exit
fi

Теперь приступим к самому главному.
Первым делом, научим запускаться от простого пользователя apache :)
Для этого выполним от имени root следующие действия:
chmod -R 0775 /opt/lampp/logs
chown -R root:users /opt/lampp/logs # вместо users здась нужно подставить имя группы, в которую входит ваш пользователь. Для openSUSE это и будет users, для Mandriva, как правило, такое же как имя пользвателя.
chown root:root /opt/lampp/bin/httpd
chmod u+s /opt/lampp/bin/httpd

Отлично, теперь от имени простого пользователя набираем: /opt/lampp/lampp startapache и если при это не возникает ошибок, то можно приступать к настройке mysql.

Для этогонам нужно будет проделать следующие действия:
1) Добавить в файл /opt/lampp/etc/my.cnf в секцию [mysqld] строку

user=aleks

где вместо aleks вы должны подставить имя своего пользователя.
2) Выполнить от имени root команды
chmod -R 0775 /opt/lampp/var/mysql
chown -R root:users /opt/lampp/var/mysql # вместо users опять подставляем имя группы вашего пользователя.

Все, теперь mysql должен без проблем запускаться от простого пользователя B)

ProFTPd и проблемы, связанные с ним.
Тут-то нас и подстерегает жестокий облом. :( ProFTPd ни за что не желает запускаться из-под простого пользователя, несмотря на все мои ухищрения с suid-битами и владельцами файлов. Выяснить, что же именно в нем не работает у меня не было особого желания, да и необходимости - для веб-разработки он практически не нужен. Однако, можно слегка облегчить себе жизнь на тот лучай, если на м все же понадобится его запустить.
Для этого нужно добавить sudo в файл /opt/lampp/lampp в начало строчек
/opt/lampp/sbin/proftpd > /opt/lampp/var/proftpd/start.err 2>&1
и
kill `cat /opt/lampp/var/proftpd.pid`

Пароль суперпользователя нам вводить все равно придется, но зато скрипт сам запросит его у нас, избавляя от необходимости набирать лишние команды. :)



Trackback URL for this post:

/trackback/211
GogA ср, 05/11/2018 - 02:35

Если не сложно, можно узнать более подробно, чем отличаются
chown, su, sudo и chroot?

Alek$ ср, 05/11/2018 - 14:18

Назначением.

chown устанавливает права доступа к файлу

sudo запускает команду от имени администратора

su запускает командную строку с правам администратора. По сути, это эквивалентно "sudo /bin/bash"

chroot в рамках конкретной сессии устанавливает определенную папку в качестве корня файловой системы.

sHaggY_caT сб, 22/11/2018 - 19:39

Можно все сделать через sudo без ввода пароля.
Вообще, suid-биты всегда считались очень некрасивым решением :)

На моей десктопной системе в sudoers файле указано следующее:

[shaggycat@desktop ~]$ sudo cat /etc/sudoers | grep NOPASSWD
%wheel ALL=(ALL) NOPASSWD: ALL
[shaggycat@desktop ~]$

Что позволяет юзать sudo без ввода пароля для всех команд юзерам, включенным в %wheel.
Себя, разумеется, я включила:

[shaggycat@desktop ~]$ cat /etc/group | grep wheel
wheel:x:10:root:shaggycat,shaggycat
[shaggycat@desktop ~]$

Понятно, можно дать беспарольное судо на запуск только одной команды. Можно дать и на несколько команд с помощью Cmnd_Alias.

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

Чем меньше в системе root-овых процессов, тем, имхо, спокойнее, что какой-то глючный скрипт на том же php не убъет вообще все :)

Alek$ сб, 22/11/2018 - 19:54

А в системе и нет рутовых процессов :) После запуска как апач, так и мускул меняют пользователя на nobody и aleks (в моем случае) соответственно, ибо так им конфиги говорят.

Вариаент с /etc/sudoers выглядит довольно интересно за одним исключением: прописав там право на беспарольное выполнение пусть даже в рамках только одного скрипта, мы всегда рискуем, что скрипт подменят :)

Так что то на то и выходит.

Гость вт, 03/05/2021 - 20:07

От isp manager можно тоже устанвоить lamp, единственное только она платная



Отправить комментарий

CAPTCHA
Вы точно не бот?
13 + 2 =
Without JavaScript you won't pass captcha test, sorry. Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.