Запомняне

» Здравейте
[ Вход :: Регистриране ]
 » Начало » Li Форуми » Help & Support » Applications » Скрипт за логване през терминал от юзър1 в юзър2
Тема: Скрипт за логване през терминал от юзър1 в юзър2, Помощ за синтаксиса
Мнение #1 Skip to the next post in this topic.
Написано на: Юли 02 2006, 11:29
Nik_123

No avatar chosen




Група: Li fans
Мнения: 37
Регистриран: Юли 2006

Оценка: няма

Offline
Здравейте!  Имам инсталирани wine в основния юзър- nik, и cedega в юзъра clamav. По принцип за всичко си ползвам юзъра nik, но с игрите имам малък проблем- играя една игра, която не върви под wine, а тръгва под cedega. Инсталирал съм я в cedega-та в юзъра clamav, и сега, като искам да я играя, през терминал su clamav, password, cedega и като ми зареди cedega, си пускам играта оттам.
Въпросът ми е, не могат ли всичките тези стъпки да се обединят в шел-скрипт, който, като си извадя на десктопа, и го направя изпълним, с едно кликване на мишката, да влиза в юзъра clamav, и да ми стартира cedega? Направил съм си подобни скриптове за стартиране на игрите, но са си в и за юзъра nik- например за стартиране на Call of Duty Myltiplayer- codmp.sh:
$!/bin/bash
$ codmp.sh
cd games/cod
wine CoDMP.exe

Идеята ми е за нещо подобно, но със su в юзъра clamav?

OS Mandriva 2006, GNOME 2.10, kernel 2.6.12-22mdk

Значи, проблема се свежда до следното: преминаване през терминал от юзър nik в юзър clamav без парола

Edit: Или с парола, но тя да си е в скрипта, да не се налага да я пиша ръчно. Пробвах така в скрипта:
su -l clamav
echo password

и пак не стана. Някакви идеи?

AMD Duron 1100MHz 256 RAM GeForce FX 5500 256 RAM
Mandriva 2007.1 Spring
kernel-2.6.21.1-2mdvcustom #1 SMP
Gnome 2.18
Контакти:  Nik_123
WEB  
Мнение #2 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Юли 02 2006, 13:56

Avatar


Warn 3

Група: Li fans
Мнения: 384
Регистриран: Април 2006

Оценка: няма

Offline
Здравей,
има един много лесен начин, но не ти го препоръчвам от съображения за сигурност. Все пак ако си решил, правиш следното:
1. Редактираш /etc/sudoers
2. Добавяш
Код: 

# User alias specification
User_Alias FULLTIMERS = nik

# User privilege specification
FULLTIMERS ALL = NOPASSWD: ALL

3. След това с изпълнение на, sudo su clamav , няма да ти иска парола, защото user nik ще има права да прави всичко като root. Обратното няма да важи, докато не добавиш и clamav по същият начин.

Аз се сетих само за това, но може би има и по-рационално решение.

Ако го ползваш, мисля, че сам ще се справиш с bash скрипта. Успех.


Редактирано от Red на Юли 02 2006, 14:13

red@debian:~$ sudo apt-build world
-----> Rebuilding the world! <-----
-----> Building package list <-----
Please read README.Debian first.
red@debian:~$
Контакти:  Red

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
WEB  
Мнение #3 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Юли 03 2006, 00:35
Nik_123

No avatar chosen




Група: Li fans
Мнения: 37
Регистриран: Юли 2006

Оценка: няма

Offline
Благодаря за отговора, доколкото си спомням, с това sudo можеше и само за определени команди да се задават привилегии? Сега ще опитам и ще пиша за резултатите.

Edit: Благодаря много, получи се, ето и /etc/sudoers в редактиран вид:
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# Host alias specification

# User alias specification
User_Alias OTHERS = nik

# Cmnd alias specification
Cmnd_Alias SU = /bin/su
# Defaults specification

# Runas alias specification

# User privilege specification
root ALL=(ALL) ALL
OTHERS ALL = NOPASSWD: SU
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL

# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL

# Samples
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users  localhost=/sbin/shutdown -h now
ALL ALL=NOPASSWD:/bin/mount -o loop -t iso9660 /home/*/.kisotmp/* ,/bin/umount /home/*/.kisotmp/*

Така редактиран, зададох на юзъра nik права само за su без парола, и сработи :-)

Edit2: Само че скрипта не сработи... ето и скрипта:
$!/bin/bash
sudo su clamav
/usr/bin/cedega

И след изпълнението на скрипта, пак ми стартира седега от юзъра nik :-( А през терминал, командата sudo su clamav ме логва в юзъра clamav.
Някакви идеи??


Редактирано от Nik_123 на Юли 03 2006, 00:59

AMD Duron 1100MHz 256 RAM GeForce FX 5500 256 RAM
Mandriva 2007.1 Spring
kernel-2.6.21.1-2mdvcustom #1 SMP
Gnome 2.18
Контакти:  Nik_123
WEB  
Мнение #4 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Юли 03 2006, 02:15

Avatar


Warn 3

Група: Li fans
Мнения: 384
Регистриран: Април 2006

Оценка: няма

Offline
Здравей,
няма смисъл от ограничение само за su, защото има ли възможност за su, има възможност за всичко :22;
Направи си файла sudoers, по простичкият начин, т.е.
Цитат:


# User alias specification
User_Alias FULLTIMERS = nik

# User privilege specification
FULLTIMERS ALL = NOPASSWD: ALL

След това мисля, че и това би трябвало да работи, като предполагам, че играта е на iso
Код: 

#!/bin/bash
DIR=/home/clamav
sudo su clamav
if [ -d  $DIR/games/test ];
then
rm -rf $DIR/games/test
else
mkdir -p $DIR/games/test
fi
mount -o loop -t iso9660 $DIR/games/test
cedega $DIR/games/test/play.exe

П.П. Не съм ползвал cedega и предполагам, че така се пише в конзолата за да пуснеш играта. Не съм пробвал и скрипта и може да е бъкан с грешки, но си мисля, че би трябвало да стане ..... ако ли не, кажи какво си направил и да го бориме пак  :43;

red@debian:~$ sudo apt-build world
-----> Rebuilding the world! <-----
-----> Building package list <-----
Please read README.Debian first.
red@debian:~$
Контакти:  Red

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
WEB  
Мнение #5 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Юли 03 2006, 06:49
Nik_123

No avatar chosen




Група: Li fans
Мнения: 37
Регистриран: Юли 2006

Оценка: няма

Offline
Дадох пълни привилегии на nik, и играта пак не тръгва. Малко подробности относно седега- версията, която ползвам, е 5.1.4, от версиите над 5.0.1, всичко по игрите се стартира с GUI- т.е. играта е в инсталиран вид в папката /home/clamav./cedega/Crusader/c_drive/Program Files/Firefly Studios/Stronghold Crusader
и по принцип с команда cedega като clamav се стартира GUI-то и оттам вече си има иконка Play и играта тръгва. В по-старите версии, през терминал с команди cd/games(примерно)/Crusader и после cedega Stronghold Crusader.exe играта тръгваше, но сега с команда cedega, кавото и да има след cedega, само стартира GUI-то и оттам с иконка Play си стартираш играта. Сега, когато през терминал изпълня командите последователно:
sudo su clamav
cedega
GUI-то на седега си се стартира нормално, като юзър clamav, и нормално си стартирам от GUI-то играта като clamav и си я играя като clamav. Обаче, като пусна скрипта в тоя му вид:
#!/bin/bash
DIR=/home/clamav
sudo su clamav
cedega
седега пак се стартира от юзъра nik, а не от clamav. Идея си нямам, защо, подадени отделно, командите логват като clamav и стартират седега като clamav, а обединени в скрипта, не работят, т.е. стартират седега като юзъра nik.
П.П. Не съм пробвал варианта
#!/bin/bash
DIR=/home/clamav
sudo su clamav
if [ -d  $DIR/games/test ];
then
rm -rf $DIR/games/test
else
mkdir -p $DIR/games/test
fi
mount -o loop -t iso9660 $DIR/games/test
cedega $DIR/games/test/play.exe
понеже играта не е на .iso, а е в инсталиран вид в папката, описана по-горе, може би трябва и това да пробвам, като задам пълния път до .exe-файла? Просто не видях смисъл, понеже с команда cedega би следвало да зареди направо GUI и синтаксиса след cedega се обезмисля, според мен, но ако трябва, и така ще пробвам?

AMD Duron 1100MHz 256 RAM GeForce FX 5500 256 RAM
Mandriva 2007.1 Spring
kernel-2.6.21.1-2mdvcustom #1 SMP
Gnome 2.18
Контакти:  Nik_123
WEB  
Мнение #6 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Юли 03 2006, 16:21
quintessence

Avatar




Група: Li psychos
Мнения: 813
Регистриран: Август 2005

Offline
Цитат:  (Nik_123 @ Юли 02 2006,11:29)

Въпросът ми е, не могат ли всичките тези стъпки да се обединят в шел-скрипт, който, като си извадя на десктопа, и го направя изпълним, с едно кликване на мишката, да влиза в юзъра clamav, и да ми стартира cedega?
Идеята ми е за нещо подобно, но със su в юзъра clamav?

Не :) Баш с едно кликване няма как да стане с толко простичък скрипт ;))
Цитат:  (Red @ Юли 02 2006,13:56)

3. След това с изпълнение на, sudo su clamav , няма да ти иска парола, защото user nik ще има права да прави всичко като root. Обратното няма да важи, докато не добавиш и clamav по същият начин.
Няма смисъл .Ако ще се ползва sudo и предложеният скрипт,който горе долу има някакъв смисъл , да се даде право за изпълнение само на su *(като съответно се указва точен път до приложението /sbin/su или там където се намира при теб ; cedega-та се chmod-ва да може да се стартира и от обикновен потребител , както всъщност е в мoмента )

Цитат:  (Nik_123 @ Юли 03 2006,00:35)

с това sudo можеше и само за определени команди да се задават привилегии?
Да, само че се указва точен път до приложението,което искаш да стартираш с правата на супер потребител

Цитат:  (Nik_123 @ Юли 03 2006,00:35)

Edit2: Само че скрипта не сработи... ето и скрипта:
$!/bin/bash
sudo su clamav
/usr/bin/cedega

И след изпълнението на скрипта, пак ми стартира седега от юзъра nik :-( А през терминал, командата sudo su clamav ме логва в юзъра clamav.
Някакви идеи??


в.1 укажи точен път до su в скрипта ,може и една проверка да се направи дали действително cedega ще се стартира от желания потребител, но скрипта малко ще се удължи/усложни ; ако държиш мога да ти дам пример как да го направиш , но няма смисъл
~~~
*
Цитат:  (Red @ Юли 03 2006,02:15)

няма смисъл от ограничение само за su, защото има ли възможност за su, има възможност за всичко :22;

в.3 в sudoers задай
Код: 
nik     ALL = /usr/bin/su clamav
- с това редче даваш правото на потребителя nik да се логне с потребителя clamav
в.4 cron /няма смисъл/
в.5 стартов скрипт /няма смисъл/
в.6 if then fi ... ако е логнат clamav да стартира cedega ,ако не - да се прекрати изпълнението на скрипта ...
в.7 по-смислен скрипт => да се усложни и допълни настоящия :)
имай предвид ,че навсякъде в/по скрипта трябва да укажеш точен път до приложенията


;)
Контакти:  quintessence

  • AOL  AOL:
  • ICQ  ICQ:
  • MSN  MSN:
  • YIM  Yahoo IM:
WEB  
Мнение #7 Skip to the next post in this topic.
Skip to the previous post in this topic. Написано на: Юли 03 2006, 18:50
Nik_123

No avatar chosen




Група: Li fans
Мнения: 37
Регистриран: Юли 2006

Оценка: няма

Offline
Благодаря за съветите, но пак не се получава- може би познанията ми по bash са крайно незадоволителни. Ето скрипта в последния му вариант:
#!/bin/bash
DIR=/home/clamav
sudo /bin/su clamav
/usr/bin/cedega
И пак същото- стартира седега като юзър nik. А през терминал, последователно, с команди, се получава:
[nik@localhost ~]$ sudo su clamav
[clamav@localhost nik]$ cedega
И седега си тръгва от clamav. Това, което ми прави впечатление, е, че когато се релогна нормално:
[nik@localhost ~]$ su clamav
Password:
[clamav@localhost ~]$
в терминала пише [clamav@localhost~]$
а когато се логна със sudo:
[nik@localhost ~]$ sudo su clamav
[clamav@localhost nik]$
има и nik след [clamav@localhost в логина.
Това има ли някакво значение?
Ето и /etc/sudoers след последната ми редакция:
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# Host alias specification

# User alias specification
User_Alias OTHERS = nik

# Cmnd alias specification
Cmnd_Alias SU = /bin/su
# Defaults specification

# Runas alias specification

# User privilege specification
root ALL=(ALL) ALL
OTHERS ALL = NOPASSWD: SU
nik ALL = /usr/bin/su/clamav
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL

# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL

# Samples
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users  localhost=/sbin/shutdown -h now
ALL ALL=NOPASSWD:/bin/mount -o loop -t iso9660 /home/*/.kisotmp/* ,/bin/umount /home/*/.kisotmp/*

AMD Duron 1100MHz 256 RAM GeForce FX 5500 256 RAM
Mandriva 2007.1 Spring
kernel-2.6.21.1-2mdvcustom #1 SMP
Gnome 2.18
Контакти:  Nik_123
WEB  
Мнение #8
Skip to the previous post in this topic. Написано на: Юли 03 2006, 20:39
Nik_123

No avatar chosen




Група: Li fans
Мнения: 37
Регистриран: Юли 2006

Оценка: няма

Offline
Оправих се, 10х to PhobosK, ето и разрешението на "случая":
Трябват два скрипта и редактиране на /etc/sudoers:
sudoers трябва да се редактира така:
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# Host alias specification

# User alias specification
User_Alias OTHERS = nik

# Cmnd alias specification
Cmnd_Alias SU = /bin/su
# Defaults specification

# Runas alias specification

# User privilege specification
root ALL=(ALL) ALL
OTHERS ALL = NOPASSWD: SU
nik    ALL = /usr/bin/su -l clamav -c start_*
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL

# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL

# Samples
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users  localhost=/sbin/shutdown -h now
ALL ALL=NOPASSWD:/bin/mount -o loop -t iso9660 /home/*/.kisotmp/* ,/bin/umount /home/*/.kisotmp/*
редактиран по този начин, sudoers дава възможност чрез sudo на юзър nik да се логва в юзър clamav без парола чрез команда sudo su clamav и да изпълнява команди и стартира приложения вече като юзър clamav, започващи със start_ (например start_cedega.sh)
Трябват и два скрипта- един за логване в юзър clamav, чрез който се стартира и вторият скрипт, за стартирането на приложение като  юзър clamav, в случая се стартира седега.
Скрипт 1 - нарекъл съм го crusader.sh, понеже играта, която играя под седега, се казва crusader:
#!/bin/bash
DIR=/home/clamav
sudo /bin/su -l clamav -c start_cedega.sh
Този скрипт се слага в папка /home/nik/Desktop, и се прави изпълним- за да може да се стартира и с кликване на мишката от потребителя nik. Този скрипт логва чрез bash юзър nik в юзър clamav, и вече като clamav стартира следващия- наречен start_cedega.sh , понеже с него се стартира приложението cedega. Ето и неговото съдържание- start_cedega.sh:
#!/bin/bash
/usr/bin/cedega

Скрипта start_cedega.sh се слага в /usr/bin за да е достъпен за изпълнение от всички потребители, и също се прави изпълним. След като се направи всичко гореизложено, със стартиране на скрипта crusader.sh се стартира приложението cedega от името на юзъра clamav. Гореописаната система работи на мандрива 2006, гноме 2.10, ядро 2.6.12-22мдк, но предполагам, ще работи и на другите линукс-дистрибуции, като се преправи според това къде се намират необходимите изпълними файлове.


Редактирано от Nik_123 на Юли 03 2006, 20:45

AMD Duron 1100MHz 256 RAM GeForce FX 5500 256 RAM
Mandriva 2007.1 Spring
kernel-2.6.21.1-2mdvcustom #1 SMP
Gnome 2.18
Контакти:  Nik_123
WEB  
Общо 7 отговор(а) от Юли 02 2006, 11:29 до сега
 » Начало » Li Форуми » Help & Support » Applications » Скрипт за логване през терминал от юзър1 в юзър2

© 2014 Linux Index Project
Powered by iF 1.0.0 © 2006 ikonForums