Re: Python: kako unjeti password za sudo unutar skripte

Poslao kost on 21.09.2009 8:52:33
kakav HAL? ti trebaš obični udev rule...

Pošto ne znam gdje ti se što nalazi na toj tvojoj distri(obično je to /etc/udev/rules.d/) - niti oznake tvog sticka, pogledaj ove postove, vjerujem da će ti pomoć:
http://ubuntuforums.org/showthread.php?t=168221
http://hackaday.com/2009/09/18/how-to-write-udev-rules/
http://groups.google.com/group/alt.os.linux.gentoo/browse_thread/thread/7a416271c3d36238

prva dva su za ubuntu, treći ti je za gentoo...

Re: Python: kako unjeti password za sudo unutar skripte

Poslao sasa_ on 21.09.2009 8:28:10
Da ne duljim, postaviti cu sada konkretna pitanja:

1. li mi se može dati neki link što dobro opisuje HAL, sa primjerima konfiguracije ?

2. Gdje i kako dodati u HAL sljedece:
/dev/sdc1       /media/USB_WORK vfat defaults,noauto,user,umask=0  0 0

Umijesto /dev/sdc1 zamisli da stoji UUDI=<uuid mog USB sticka>

Znaci ja želim da sam HAL kreira i briše USB_WORK direktorij i koliko kužim to se može definirati u HAL, samo neznam u koju konkretno datoteku i na koji način.

Znaći sve što mi treba je ime i putanja datoteke i konfiguracija koja to radi.

Re: Python: kako unjeti password za sudo unutar skripte

Poslao slobodan on 20.09.2009 22:53:10
Ne moraš mi govoriti Vi. Ovdje smo poprilično neformalni što se toga tiče. Moj tekst je bio komentar za onoga kojemu je sve jasno i tko zna kako implementirati.

Citat:

sasa_ je napisao/la:
Jer mi Vaš odgovor ništa nije jasan, prvo kažete da se fstab ne treba nikada dirati,a onda završite sa tim da tamo dodam i da će sam HAL brinuti za stvaranej direktorija, a ja ima konkretna jasna iskustva da to tako ne funkcionira.


... A gdje sam ja to rekao "fstab se ne treba nikad dirati"? Ajd mi ne imputiraj nešto što ja nisam rekao, ok?

To što ti odgovor nije jasan je zato što ti prvenstveno nije jasno kako i što radi HAL te čemu služi /etc/fstab i kako ga konfigurirati za tvoje potrebe.

Citat:

i ta greška se pojavi jer direktorij USB_WORK ne postoji unutar /media direktorija.

Da li je to jasno ???


Naravno da ne postoji jer /etc/fstab NE KREIRA direktorije automatski. Putem /etc/fstab mountaju se uređaji na postojeće već kreirane direktorije. HAL korištenjem automounta kreira direktorije za uređaje koji do tad nisu bili definirani u /etc/fstab, i dinamički se pobrine da je /etc/fstab konfiguriran kako treba.

/etc/fstab je datoteka koja primarno opisuje STATIČKE mount točke. Znači, nešto za što se očekuje da je tamo (već kreirani odgovarajući poddirektoriji) i to najčešće već pri bootu sustava. Tipično - /, /usr, /home, /var i slični.

Kasnije se naravno može nadodavati neka nova mount točka, ali /etc/fstab nije inicijalno zamišljen kao dinamički sustav, niti bez odgovarajućeg editiranja podržava dinamičko spajanje i micanje uređaja. Stoga u zadnjih par godina u pravilu ne mjenjamo nešto specijalno sadržaj te datoteke nakon instalacije, nego pustimo automounterima odnosno HAL-u da to za nas radi. HAL se ujedno brine i za kreriranje potrebnih direktorija ako već ne postoje.

Ono što ti želiš je:

a) pojedini korisnik (a ne samo root/administrator) može mountati particije i uređaje
b) fiksna lokacija mountanja pojedinog uređaja (npr. usb diska) bez obzira na koji usb port ga uštekao

Stoga kako ti je već Kost rekao, trebaš definirati u fstab da se particija mounta pod users a ne user mogućnostima, a kao što sam ti ja rekao, dodaš UUID definiciju za tu particiju tako da jednoznačno odrediš mount point pojedinog uređaja. I pošto radiš ručno a ne putem automountera, kreiraš potrebne direktorije na koje će se tvoj uređaj mountati.

I to napraviš samo jednom, i više ne diraš. Znači, kao što sam rekao, nema potrebe često mjenjati fstab, i u pravilu ga ne čačkaš ako baš nisi siguran što želiš i kako. A ne da ne smiješ uopće dirati.

E a kako točno to napraviti? Nek ti za početak ovo bude primjer (redak iz mog /etc/fstab):

UUID=f025e2b0-6064-4cf8-8c24-fd5c5baadc14 /home/m ext3 relatime 0 2

I odluči se, ili si početnik ili ti je sve jasno i znaš kako implementirati, da znam na koji način ti trebam formulirati odgovor.

Re: Python: kako unjeti password za sudo unutar skripte

Poslao sasa_ on 20.09.2009 21:13:19
Jer mi Vaš odgovor ništa nije jasan, prvo kažete da se fstab ne treba nikada dirati,a onda završite sa tim da tamo dodam i da će sam HAL brinuti za stvaranej direktorija, a ja ima konkretna jasna iskustva da to tako ne funkcionira.

Ja ne kažem da se Vi ne kužite u stavari, ali ih jako loše objašnjavate ili ne ne razumjete moja pitanje.


Možda sada stvari budu jasnije:
ako ja napišem sljedeće u /etc/fstab

/dev/sdc1       /media/USB_WORK vfat defaults,noauto,user,umask=0  0 0


i onda učinim

mount /media/USB_WORK


dobijem sljedeću grešku:
mount: mount point /media/USB_WORK does not exist


i ta greška se pojavi jer direktorij USB_WORK ne postoji unutar /media direktorija.

Da li je to jasno ???

Re: Python: kako unjeti password za sudo unutar skripte

Poslao slobodan on 20.09.2009 20:47:53
/etc/fstab je datoteka koju u zadnje vrijeme najčešće automatika mijenja ovisno o trenutnom stanju datotečnog sustava te priključenih uređaja. U pravilu ćeš tu datoteku rijetko mjenjati sam. Prije se to češće radilo, no danas to rade raznorazni automounteri i HAL podsustavi. Trenutno stanje sustava zapravo je u /etc/mtab gdje se vide i još neki sistemski mountovi pored particija.

Glavna razlika između ova dva primjera koje navodiš je da openbox očekuje od korisnika inicijativu mountanja uređaja. Sve ostalo je isto.

Citat:

Da li sam fstab ili nešto treće može jednsotavno praviti praviti i brisati direktoriej na koje se mounta ili to tako nikada nije ni bilo zamišljeno, a ja sam žrtva ubuntu automatike ???


Ovo tvoje pitanje nema smisla.

/etc/fstab je datoteka koju sustav čita prilikom boota i iz koje se zaključuje koje uređaje u tom trenutku mountati. Nakon boota ta datoteka više nije toliko bitna, jer se automounteri brinu oko toga da se pojedini uređaji (npr usb i slični) mountaju gdje treba. Znači, /etc/fstab sam po sebi ne radi ništa. Za dinamički mount se nakon boota brine HAL. I taj podsustav je onaj koji mjenja /etc/fstab i mountanje i kreiranje direktorija i još neke druge stvari. I taj podsustav se može i konfigurirati na odgovarajući način.

Da nešto treće može jednostavno praviti i brisati direktorije si se i sam uvjerio. To nije uopće upitno. Da to nije tako zamišljeno, onda to vjerojatno ne bi radilo nego bi to bio bug koji treba pod hitno riješiti. Uvjeravam te da to nije bug.

UUID se uređaju dodjeljuje prilikom spajanja uređaja na sustav, i trebao bi biti jedinstven za pojedini uređaj. Prava lokacija tih spojeva nalazi se u /dev/disk poddirektoriju. U /etc/fstab se UUID može staviti kao poveznica pojedine putanje ali i ne mora, no bitnije je ono što stoji u /dev/disk. Korištenje UUID-a je zgodna ali ne i obavezna mogućnost.

HAL podsustav postoji zadnjih... čini mi se 6-7 godina sigurno, možda i duže. Nema veze s ubuntuom. A još i prije toga je bilo par nadobudnih pokušaja automounta tjekom kraja 90ih, počevši s RedHat i Mandrake/Mandriva distrama, koliko se sjećam.

Ti si "žrtva" nepoznavanja rada HAL podsustava. Preporučam ti da proučiš taj dio, kako se po potrebi konfigurira, i razmisliš zašto bi automatsko kreiranje poddirektorija (i eventualno brisanje, makar nisam baš zagledao da ubuntu odnosno kubuntu kod mene nešto specijalno briše pojedine /mount poddirektorije) trebalo biti toliko tragično loše kako se da zaključiti iz tvojih komentara.

Ono što bi tebi trebalo je skonfigurirati da se uređaj tog i tog UUID-a mounta na određenu lokaciju. U fstab navedeš taj uređaj (dovoljno je jednom, ne moraš svako malo brisati i pisati), staviš gdje će se mountati, i pustiš automatiku da radi svoje. Ne znam u čemu je problem oko toga.

Re: Python: kako unjeti password za sudo unutar skripte

Poslao sasa_ on 20.09.2009 20:05:41
Citat:

slobodan je napisao/la:
To ovisi na koji USB port (a samim time i USB kontroler) se spajas, pa tako sustav dodjeljuje imena. Zbog slicnih situacija kao sto su tvoje potrebe, postoji UUID i volume label, koji su opisani u odgovarajucim man stranicama fstab-a i mount-a pa ti preporucam bacit pogled na to.

U svakom slucaju, UUID bi trebao omoguciti jednoznacnu identifikaciju medija (CD, disk, memory stick) koji se spaja na sustav. A samim time bi i tebi bilo svejedno gdje se disk spaja.


Razumjem sve što si napisao i znam kako to implemetirati i imam par pitanja koji se ticu linux best pratice.

Godinu ipo dana sam koristio Ubunut 7.10. I on je imao logiku da ćim bi se neku USB uređaj spoji na njega automatski je bio mountan pod /media/<label>, kada uređaj nije bio spojem tada nije bio moutan pod /media/<label> a ni sam /media/<label> direktojin nije postojao. Tj. sam sustav se brinio oko stvaranja /media/<label> direktorija prije mountanja i brisanja /media/<label> direktorija nakon umounta.

Zadnjih 6 mjeseci sam na crunchbang linux-u prvenstveno zbog openbox-a. On ima malo drukčiju logiku. One mounta USB čim se spoji, ali ga prikaže unutar PCman file menager, pa se klikom na njega USB mounta, te ponovnim klikom odmounta. Ali je logika kreiranja i brisanja /media/<label> direktorija ostala ista, to nekako PCman file menager radi sam.

Radi predhodnog 2 godišnjeg iskusta ja sam navikao da /media/<label> direktorij ne postoji osim ako USB stick nije mountan, a da kada se USB umounta da se /media/<label> direktorij izbriše.

I ja se sada pitam da li je to loša praksa ?

Jer ako i napravim unutar fstab-a da mi se USB stick mounta preko UUID, to podrazumjeva da sam direktorij na koji se mounta moraj već postojai, osim ako nije moguće unutar fstab-a reci da se on automatski kreira i briše sa mountom i umountom (gledao jesam man page ali nisam pronašao tu mogućnost) pa ako postoji neka mi netko kaže.

Znaći pravo moje pitanje je:

Da li sam fstab ili nešto treće može jednsotavno praviti praviti i brisati direktoriej na koje se mounta ili to tako nikada nije ni bilo zamišljeno, a ja sam žrtva ubuntu automatike ???

Re: Python: kako unjeti password za sudo unutar skripte

Poslao slobodan on 20.09.2009 11:30:36
To ovisi na koji USB port (a samim time i USB kontroler) se spajas, pa tako sustav dodjeljuje imena. Zbog slicnih situacija kao sto su tvoje potrebe, postoji UUID i volume label, koji su opisani u odgovarajucim man stranicama fstab-a i mount-a pa ti preporucam bacit pogled na to.

U svakom slucaju, UUID bi trebao omoguciti jednoznacnu identifikaciju medija (CD, disk, memory stick) koji se spaja na sustav. A samim time bi i tebi bilo svejedno gdje se disk spaja.

Re: Python: kako unjeti password za sudo unutar skripte

Poslao sasa_ on 20.09.2009 8:30:58
kost, hvala na pomoći.

Rijesio sam problem.
Rijesenje je tražilo i dodatnu promjenu logike kod izvođenja skripte.

Imam jos jedno pitanje, koje me jako interesira.
Moj USB uvijek bude po imenom /dev/sdc1 i skripta mi ne bi radila ako bi mi se pojavio pod drugim imenom.

Mene zanima tko određuje pod kojim će imenom biti prijavljen USB tj. zašto baš sdc1, zašto nije sdd1 ili sde1?

I da li se to može nekako konfigurirati, gledao sam UDEV, ali mi se ćini da se to sa njim ne može učiti.

Da li netko nešto zna o tome ?

Re: Python: kako unjeti password za sudo unutar skripte

Poslao kost on 13.09.2009 10:58:01
Možda par napomena.

ovako nekako treba izgledat /etc/fstab (ako user treba mountat):

/dev/sde1 /mnt/usb vfat defaults,noauto,user,umask=0 0 0

onda samo iz skripte napraviš ovo (kao user):

mount /mnt/usb

A inače ako trebaš sudo da izvrši neku određenu komandu (za mount kao što vidiš nije potrebno), daš ovlasti samo za tu određenu komandu i imaš klazulu u sudoers NOPASSWD koja onda neće tražit password (naravno, samo za tu određenu komandu i određenog usera, etc)...

Re: Python: kako unjeti password za sudo unutar skripte

Poslao kost on 13.09.2009 10:05:12
zašto jednostavno ne staviš u /etc/fstab pod options "user", na taj način će moć i korisnik izvršit mountanje....

Ova poruka je od: http://www.linux.hr/newbb/viewtopic.php?forum=8&topic_id=2150