Титла: sudoers Публикувано от: ivanatora в Apr 25, 2004, 14:18 Целта на занятието е да се направи един скрипт за рестартиране на DHCP клиента (това изисква root), който да се пуска през уеб сървър (php). В rd.php имам:
В rd.sh имам:
От тук нататък трябва да напиша нещо в /etc/sudoers.. Апашът се пуска с user nobody, така че ръгнах:
Направих го с pico, въпреки че във файла пише да се редактира само с visudo.. с vi не мога да работя. Гледам после PID на процеса (dhcpcd) и пускам http://path/to/rd.php и после пак гледам PID-a. Не се е променил, сиреч DHCP клиента не се е рестартирал? Когато пускам скрипта ръчно (като root без sudo частите) PID на процеса се променя. Титла: sudoers Публикувано от: dmvic в Apr 25, 2004, 22:29 така е защото sudo иска парола за администратор, по-добре да разрешиш на nobody да използва dhcpcd, не знам дали ако просто промениш правата на dhcpcd ще се получи.
Титла: sudoers Публикувано от: savel в Apr 26, 2004, 02:38 пробвай с
nobody localhost= NOPASSWD: dhcpcd -k, dhcpcd Титла: sudoers Публикувано от: ivanatora в Apr 26, 2004, 09:52 Ето какво става като пробвам да пусна dhcpcd като nobody (правата на файла са 755):
$ /sbin/dhcpcd -k **** /sbin/dhcpcd: not a superuser Ето какво става като пробвам да пусна rd.sh от конзола като nobody:
Ето и въпросния файл /etc/sudoers около линия 26:
Други идеи? Титла: sudoers Публикувано от: в Apr 26, 2004, 10:24 chmod +x /sbin/dhcpd
samo che taka vseki user shte move da go puska i spira i ne e mnogo secure. Титла: sudoers Публикувано от: ivanatora в Apr 26, 2004, 10:30 Ами аз това ти казвам, че по подразбиране dhcpcd си е rwxr-xr-x, сиреч това +х си го има. Но не може да се стартира като non-root, защото дава:
**** /sbin/dhcpcd: not a superuser Титла: sudoers Публикувано от: dafo в Apr 26, 2004, 17:10
Напиши пълния път до dhpcd както и името на машината (hostname команда) nobody име_на_машината(пешо,гого,киро)=NOPASSWD: /пълен_път/dhcpcd -k, /пълен_път/dhcpcd Титла: sudoers Публикувано от: ivanatora в Apr 26, 2004, 17:31
Moje li da stane bez password prompt? Ako towa e edinstwenia nachin kak da podam parolata prez scripta? Титла: sudoers Публикувано от: dafo в Apr 26, 2004, 18:07 Това се появява като стартирам sudo за пръв път, после пита само за парола.
Пробвай в секцията Defaults:nobody !authenticate ,така би трябвало да не пита за парола,освен ако не си задал PASSWD при изпълнение на команда. Титла: sudoers Публикувано от: ivanatora в Apr 26, 2004, 22:36 Дафо, благодаря ти, стана номера на китайчето
![]() Само че открих, че целия ми подход е грешен и за нищо не става ![]() По-точно под конзола с nobody пускам файла и DHCPто се рестартира успешно. Но опитвам да го направя през уеб-а (http://path/to/rd.php) и нищо не става - процеса си върви.. грешка в PHP кода ли имам? Титла: sudoers Публикувано от: ivanatora в Apr 26, 2004, 23:20 Дафо, благодаря ти, стана номера на китайчето
![]() Само че открих, че целия ми подход е грешен и за нищо не става ![]() По-точно под конзола с nobody пускам файла и DHCPто се рестартира успешно. Но опитвам да го направя през уеб-а (http://path/to/rd.php) и нищо не става - процеса си върви.. грешка в PHP кода ли имам? Титла: sudoers Публикувано от: ivanatora в Apr 26, 2004, 23:26 Проблема е решен
![]() Ако някой го интересува ето го решението: - два файла, в отделна директория с owner nobody (казват че просто трябва да има write access до скриптовете, за това просто смених притежателя) rd.php:
rd.sh:
rd.sh също така е 755 oт към права. Коментарите за sudo са нагоре из цялата тема.. няма да се задълбавам тук ![]() Какво не правех както трябва.. синтаксиса на функцията exec() ми беше грешен, а пък и попаднах на следния интересен коментар за нея в php.net :
Дано цялата тая работа свърши работа на някого ![]() Титла: sudoers Публикувано от: Venski в May 31, 2004, 04:16 хмм. видях тази тема и се сетих за нещо, което много ми е трябвало на няколко пъти. от време на време ми умира sshd-то на една машина, до която нямам пряк достъп. реших да пробвам по начина описан по-горе, за да не се налага да будя в 01:50 човека в чиито апартамент се намира машината.
огледах какво сте писали, и наистина след настройките в sudoers user-а nobody може да изпълнява това което ми трябва
нраправих и въпросния script, който трябва да се извиква от .php файла, който е просто
и конзолно всичко върви като по вода, само че когато се опитам да го стартирам чрез .php-то нищо не се случва. .php файла изглежда точно като примера даден от ivanatora, който той казва че работи (копиран е от там). само че ... не върви. можете ли да дадете някакви предположения? Титла: sudoers Публикувано от: ivanatora в May 31, 2004, 10:28
При мен файла не е само това. Разгледай по-добре примера с цитата от php.net. Погледни си и правата на директорията също така. За да се изпълни скрипта трябва потребителят с който се пуска апача да има +w достъп. Титла: sudoers Публикувано от: Venski в May 31, 2004, 11:07 добре де. явно съм се изразил неправилно. файловете са:
rd.sh
това е файла, който .php-то exec-ва. ssh_restart.php
а това е самото .php не виждам кой знае какви разлики, освен че ти искаш script-а да ти изпълни 2 команди, а при мене е само 1. btw не разбирам за какво му е на user nobody да има +w в директорията в която е script-а (нали за нея казваш)? и трябва ли да има +w по целия път до там или само в нея? сложих му +w на директорията, в която е script-а, но пак не се получи. (т.е. директорията съм я сложил като owned от група nobody и моят user. правата на директорията сега са 775. мисля че това му стига, или не?) Титла: sudoers Публикувано от: kostadinz в May 31, 2004, 12:15 не е ли по-елегантно cron-a да рестартира каквото трябва, при условие че съществува някакво файлче някъде.
откъм web-а създаваш файлчето, крона го намира, трие го и рестартира процеса. Титла: sudoers Публикувано от: Venski в May 31, 2004, 13:11 не виждам cron-а с какво ще помогне, при положение че това което се случва е че процеса на sshd си седи, но дефакто не работи както трябва.
дори и да се направи script, който да проверява дали има процес sshd, той не може да разбере дали sshd работи като хората, или не. може да се стартира през определено време script-а, който прави /etc/rc.d/rc.sshd restart, но това означава че през 30-60 минути sshd ще се рестартира, независимо дали има нужда от това. някакси ми се струва ненужно. но все пак е вариант ... Титла: sudoers Публикувано от: ivanatora в Jun 01, 2004, 09:23 Не виждам къде може да е проблема... Казваш че правата на директорията са 755, а как са на шел скрипта и на *.пхп-то?
Титла: sudoers Публикувано от: Venski в Jun 01, 2004, 17:55
|