[ nix_r @ 15.08.2007. 08:47 ] @
Cao!

Imam problem, a mogu priznati da nisam neki "guru" za Linux, tako da mi treba hitno pomoc.
Naime, situacije je ovakva: aplikacija pisana u C-u, postavljena je na platformu Linux 9.3 OS, x86 32-bitnu Intel masinu sa dvije mrezne kartice:
eth 0 je private (LAN)
eth1 je public.

Logovana sam kao obicni user, koji spada u root grupu. Aplikacija pri startanju treba da disable-a ovu public karticu, izvrsavajuci komandu:

ifconfig eth1 down

Medjutim, na konzoli mi ispise
SIOCSIFFLAGS:Permission denied
SIOCSIFADDR: Permission denied

Pretpostavljam da ovaj user, pod kojim radi aplikacija, nema prava da to uradi, ali sam testirala i izvrsila iz Shell-a komandu su root, pa se logovala kao root i probala ovo, te je bilo uspjesno. Meni treba da ovo radim kao obicni user, a to nikako ne mogu iz aplikacije postici (ili ne znam kako).
Ima li neko ideju za podesenja, kako obicnom useru to dozvoliti ili mozda nesto drugo.
Ovo mi je vrlo hitno,pa molim nekoga da mi pomogne.

Hvala unaprijed!
[ niceness @ 15.08.2007. 09:36 ] @
Koristi sudo.
[ maksvel @ 15.08.2007. 11:55 ] @
Možda da setuješ suid bit aplikacije?
[ nix_r @ 15.08.2007. 12:39 ] @
Mozes li mi detaljnije to objasniti? Jos uvijek nisam nista uspjela.
[ nix_r @ 15.08.2007. 13:44 ] @
probala sam u C kodu upisati

int IPRelease(char *ethCard)
{
char cmnd[64]=""; //...Command Line
//...Create command
strcat(cmnd,"ifconfig ");
strcat(cmnd,ethCard);
//strcat(cmnd,":");
//strcat(cmnd,IPAddress);
strcat(cmnd," down");
//...Execute the command
return system (cmnd);
}

Ova funkcija u C-u se ustvari poziva iz C# koda preko
public static extern int IPRelease(string ethCard);
[DllImport("IPTakeover")]

Kada startam aplikacija, ona odradi sto treba i kada dodje do ovog dijela gdje treba izvrsiti u C# (MONO 1.2.4 koristim)
WMIHelper.IPRelease(m_SysCfg.Sync.MasterEthCard);

izbaci na konzoli Password:
ja pokusam da ukucam root password, ali kompletna aplikacija "zaglupi".
[ nix_r @ 15.08.2007. 13:45 ] @
pardon u C kodu ide

int IPRelease(char *ethCard)
{
char cmnd[64]="sudo "; //...Command Line
//...Create command
strcat(cmnd,"ifconfig ");
strcat(cmnd,ethCard);
//strcat(cmnd,":");
//strcat(cmnd,IPAddress);
strcat(cmnd," down");
//...Execute the command
return system (cmnd);
}

tj. sa sudo komandom
[ nix_r @ 15.08.2007. 13:57 ] @
Da li je moguce da prilikom promjene ownership-a, sa sudo komandom ili su -c komandom, izbjegnem unos passworda?
[ unleaded @ 15.08.2007. 19:24 ] @
Kao root editujes datoteku sudoers
Code:
# visudo -f /etc/sudoers

odes na kraj i dodas liniju:
Code:
username ALL=(ALL)       NOPASSWD: ALL

i kao korisnik "usename" probas
Code:
sudo ifconfig eth1 down

Trebalo bi da odradi bez passworda.

Obrati paznju na sigurnost sistema, jer sad korisnik
"username" ili kako je vec imenovan, moze da izvrsava
sve komande kao i root.
[ jorganwd @ 15.08.2007. 21:02 ] @
Katastrofa. Pogotovo jer je server izlozen jednom stranom na internet.
Zasto ne uradis kao sto je momak predlozio?
Citat:
maksvel: Možda da setuješ suid bit aplikacije?

I rijesis se "donekle" muka? Mozes i ovako, ali ako se neko nameraci za kratko vrijeme ode tvoj server a i mreza.... :)
[ nix_r @ 16.08.2007. 08:04 ] @
Probala sam ovo sa /etc/sudoers File-om i radi. Uspjela sam sve kao sto je receno tj. napisano.

Hvala jos jednom!
[ tarla @ 16.08.2007. 18:36 ] @
bas sam htio da predlozim

korisnik ALL=(ALL) NOPASSWD: /putanja/do/komande/komanda
[ jorganwd @ 16.08.2007. 20:07 ] @
Citat:
tarla: bas sam htio da predlozim

korisnik ALL=(ALL) NOPASSWD: /putanja/do/komande/komanda


Ovo je vec bolja opcija.
[ tarla @ 16.08.2007. 23:57 ] @
da jer gornja opcija daje useru sva ovlascenja...

Ovako samo moze tu skriptu da izvrsi a ako je ona dobro uradjena malo sta moze da se razdesi..
[ nix_r @ 17.08.2007. 09:22 ] @
Da to jeste.

Probala sam i ovako, i zaista radi.