Войти

Показать полную графическую версию : [решено] запуск скриптов от непривилигированного пользователя


hnsk
16-01-2010, 16:11
нужно запустить скрипт при загрузке системы от непривилигированного юзера.

скопировал скрипт в /etc/init.d
update-rc.d scriptname 99 defaults
перехапускаюсь
ps -uax показывает что программа запущена от root

сhown user.usergroup /etc/init.d scriptname
chmod 4700 etc/init.d scriptname

ребут тоже самое. ((

вопрос как заставить скрипт запускаться от имени юзера.

спасибо!

ruslandh
16-01-2010, 16:18
Использовать su -с КОМАНДА - ИМЯ_ПОЛЬЗОВАТЕЛЯ

http://forum.oszone.net/thread-72834.html

hnsk
17-01-2010, 16:19
хмм... тут наверно нужно более подробнее.

мой исполняемый файл имеет свои ключи и после
и после ввода su ругается на то что я не правльно его использовал и дает мне краткий хелп

по man выходит так что для того что бы новосозданный интерпритатор понимал все верно, необходимо su --command, но это к сожалению тоже ни кчем не привело.

ruslandh
17-01-2010, 21:18
Используйте кавычки.

BuGfiX
18-01-2010, 11:54
Или сделайте враппер для вашего скрипта с параметрами

hnsk
18-01-2010, 19:09
ruslandh, rкавычки не катят. :-((
BuGfiX, хмм....
не поможете скрипт написать?! или дать адекватную ссылку. на все что натыкаюсь сейчас в поисковиках не совсем то , как мне каежтся

лучше конечно ссылочку)

BuGfiX
18-01-2010, 19:28
#!/bin/sh
user=testuser
program=/usr/bin/program

su -m ${user} -c ${program}

Как-то так

hnsk
18-01-2010, 19:57
BuGfiX,
#!/bin/sh
user=mafik
program=/home/mafik/games/hlds_run -game cstrike +ip 192.168.1.30 +port 27020 -nomaster -insecure +map de_dust2 +maxplayers 10
su -m ${user} -c ${program}


mafik@debian:~/games$ ./server_start
./server_start: line 3: -game: команда не найдена
su: ключ требует аргумент -- c
Использование: su [параметры] [имя пользователя]

Параметры:
-c, --command COMMAND передать команду COMMAND вызываемой оболочке
-h, --help показать данное сообщение и закончить работу
-, -l, --login запускать оболочку как регистрационную
-m, -p,
--preserve-environment не сбрасывать переменные окружения и
сохранить запустившую оболочку
-s, --shell SHELL использовать значение переменной SHELL
вместо значения из файла passwd

mafik@debian:~/games$

-l -c наверно вы имели ввиду?!
в общем результат тот же((

hnsk
24-01-2010, 16:54
проблему так и не рашил ((

ruslandh
24-01-2010, 17:09
Расставьте правильно кавычки.


$ program=/home/mafik/games/hlds_run -game cstrike +ip 192.168.1.30 +port 270; echo $program
bash: -game: команда не найдена
/home/mafik/games/hlds_run -game cstrike +ip 192.168.1.30 +port 270

$ program="/home/mafik/games/hlds_run -game cstrike +ip 192.168.1.30 +port 270"; echo $program
/home/mafik/games/hlds_run -game cstrike +ip 192.168.1.30 +port 270

hnsk
25-01-2010, 22:01
ruslandh,
mafik@debian:~/cstrike16/games$ $program "/home/mafik/cstrike16/games/hlds_run -game cstrike";echo $program
bash: /home/mafik/cstrike16/games/hlds_run -game cstrike: Нет такого файла или каталога


папки перещещал поэтому путь сейчас другой. но смысл тот же.

ruslandh
25-01-2010, 22:27
а где равно?

hnsk
26-01-2010, 20:17
[root@myfedora ~]# $program="/usr/bin/empathy -a";echo $program
-bash: =/usr/bin/empathy -a: No such file or directory

ruslandh
26-01-2010, 22:29
а на фига $
$ - это знак, приглашения, у вас оно выглядит. как mafik@debian:~/cstrike16/games$

hnsk
26-01-2010, 23:54
#!/bin/sh
user=mafik;echo $user
program="/usr/bin/empathy -a";echo $program
su -l ${mafik} -c ${program}




[root@myfedora ~]# ./empathytest
mafik
/usr/bin/empathy -a
su: invalid option -- 'a'
Try `su --help' for more information.
[root@myfedora ~]#


если строки из скрипта выполнять почередно, то работает, когда запускаю скрипт, то вижу это..
я так понисвю что su думает что ключ -а относится к нему. можно нужны еще какие нибудь служебные символы?"

ruslandh
27-01-2010, 00:21
Пример:

#!/bin/sh
user=USER ;echo User=$user
program1="/bin/ls -l"
program2="echo I is $(/usr/bin/whoami)"

su -c "${program1}" - ${user}
su -c "${program2}" - ${user}

hnsk
28-01-2010, 21:50
#!/bin/sh
user=mafik
prog="/bin/ls -l"
su -c "${prog}" -l ${user}
работает


так запускается только я подставляю строку /home/mafik/cstrike16/games/hlds_run -game cstrike
получаю
Invalid game type 'cstrike' sepecified.
Чтв Янв 28 21:49:38 MSK 2010: Server Failed

тип указан верно.

hnsk
29-01-2010, 23:01
#!/bin/sh
cd /home/mafik/games/cstrike16
#user=mafik
prog="sudo -u mafik ./hlds_run -game cstrike"
${prog}

запуска. под рутом

root 2218 0.0 0.1 4908 1188 pts/0 S+ 23:01 0:00 /bin/sh /home/mafik/games/cstrike16/server_start
mafik 2219 0.0 0.1 4912 1288 pts/0 S+ 23:01 0:00 /bin/sh ./hlds_run -game cstrike
mafik 2227 8.0 6.3 84188 64332 pts/0 Sl+ 23:01 0:02 ./hlds_i686 -game cstrike




© OSzone.net 2001-2012