Fórum Ubuntu CZ/SK
Ostatní => Archiv => Téma založeno: Kalex 05 Února 2007, 17:54:57
-
Zdravim,
podarilo sa mi vcera konecne nainstalovat Kubuntu a priznam sa ze som zatial celkom spokojny, do systemu sa vzivam, podarilo sa mi nainstalovat a rozbehat dolezite veci (Opera, Seamonkey, ovladace, Doom 3 atd.) a zacinam tomu celkom rozumiet, no stale narazam na nejake zakladne problemy.
1) sudo. Chapem naco je sudo dobre a ako funguje. Casto mam vsak problem ze ked nieco co potrebujem urobit urobim cez sudo, potom sa k "tomu" nedostanem ako user.
Napriklad: namountujem si NTFS particiu ako read-only (je aj v /etc/fstab s parametrami ro,user alebo defaults, to je jedno) do adresara ktory mam ako user na ploche. Majitel adresara som ja ako user, po namountovani sa vsak zmeni majitel na roota a uz sa ako user donho nedostanem lebo nemam opravnenia. Nemozem ani urobit chmod alebo chown lebo opravnenia sa tykaju samotnej NTFS particie a tudiz su read-only aj pre roota. Ako si mozem takuto particiu prezerat ako user?
Alebo: nainstaloval som si Mozilla Seamonkey (cez sudo). A spustit ide zase len cez sudo (sudo sh seamonkey) a to iba z textovej konzoly. Ked si vytvorim zastupcu na ploche, tak sa da spustit ako kdesu seamonkey, ale to zase nevidi ulozeny profil. Bez kdesu zase nevie z ulozeneho profilu citat, aj ked maju one adresare nastaveneho vlastnika usera :( Vie niekto co s tym, co robim zle?
Na ciastocne vyriesenie podobnych problemov som si vytvoril na ploche zastupcu na Konqueror ktory sa spusta ako sudo (kdesu konqueror). Cez neho sa dostanem vsade, ale nebolo by nejake systemove riesenie na podobne problemy? Napr. kontextove menu "otvorit ako root", "spustit ako root", "prevziat vlastnictvo" atd.
Diky vopred za rady.
-
No s tím mountováním přes fstab nemám nejmenší problémy... mountuju do složky která má práva pro daného uživatele a v pohodě.
Ten druhej soft neznám, ale pokud máš někde uloženej profil musí do něj zase bejt správný práva ;)
-
A mountujes aj NTFS? S particiou FAT32 je to v pohode, ale NTFS si privlastnuje automaticky root.
Edit: OK, poriesil to umask=000,dmask=000
-
Jakým způsobem mountujete tu NTFS partition? Ručně pomocí mount nebo automaticky přes /etc/fstab?
Pokud ji mountujete ručně, tak pomocí parametru -o zadáváte potřebné parametry. Např.:
sudo mount /dev/sda1 /mnt/win -o user,nls=UTF-8Pokud ale nemáte k tomu ručnímu mountování, nějaký důvod (jako začátečník asi nemáte), nechte to na fstab:
/dev/sda1 /mnt/win ntfs ro,defaults,user,umask=0222 0 0
-
Mountuju i NTFS přes NTFS-3G a jede mi to v pohodě... (nechávám to na fstab)
-
------------------------------------------------------------------------
Jaky je rozdil mezi sudo -s a sudo -i ? (nejak jsem to z man nevylustil)
z obojiho sem se dostal na roota a oboje jsem zahledl ze se to zde ruzne pouziva..
a kdyz je clovek v root, je i jina moznost jak se dostat zpet na usera nez novy terminal nebo lognout noveho usera?
-
sudo -s Vám dá pouze shell.
sudo -i předtím než dostanete shell, proběhne "simulovaný" login, tzn. že se inicializují všechny proměnné prostředí a dojde k přepnutí do domovského adresáře - např. se spustí .bashrc.
Rozdíl je podobný jako u příkazů su uživatel a su - uživatel.
Pokud to není jasné, zkuste si postupně spustit oba příkazy (su -s, su -i) jako normální uživatel v domovském adresáři a spustit pod nimi následující příkazy a porovnat jejich výpisy.
pwd
envZ roota se stanete původním uživatelem když zadáte příkaz exit (jako když se v terminálu odhlašujete).
-
nevyhodou sudo -s je, ze se veskere konfiguracni soubory hledaji/vytvareji v home adresari daneho uzivatele, ktery sudo spustil, priklad:
prihlasen jako user a pod timto uzivatelem jeste nebyl spusten kupr. program elinks
user$ pwd
/home/user
user$ ls .el*
user$ sudo -s
root$ pwd
/home/user
root$ elinks
root$ ls .el*
.elinks root root ...
jde o to, ze konfiguracni soubor programu elinks je vytvoren v home adresari usera ale vlastnikem je root, takze pokud si pak uzivatel pusti elinks bez sudo a upravi si nejake nastaveni, tak se mu pak neulozi
snad se mi to povedlo dobre nastinit
-
No jak to chápu, tak je lepší používat "sudo -s", protože to je stejné jako "sudo <příkaz>"(pwd vypíše stejný home adresář).
Samozřejmě, že pokud není třeba spouštět program s právy admina, ani to nebudem dělat. Což je většina programů. A ty, co se musí tak spustit, se stejně s příkazem "sudo" uloží soubor s právy Root.
-
nevyhodou sudo -s je, ze se veskere konfiguracni soubory hledaji/vytvareji v home adresari daneho uzivatele, ktery sudo spustil,
Ale to není nevýhoda, to je záměr - jde o to, co od toho příkazu chcete: buď chcete plný rootovský login (sudo -i), nebo jenom na chvíli chcete rootovskou konzoli (sudo -s).
Chování sudo -s vyplývá z toho, co jsem psal výše - neinicializují se proměnné prostředí. Z toho následně vyplývá, kde se vytvářejí uživatelské cfg/rc soubory. Zkuste si spustit:
sudo -s
pwd
whoami
echo $HOMEguest@ubuntu:~$ sudo -s
Password:
root@ubuntu:~# pwd
/home/guest
root@ubuntu:~# whoami
root
root@ubuntu:~# echo $HOME
/home/guest
Čili mám rootovskou konzoli, ale proměnná domovského adresáře pořád odkazuje na adresář uživatele guest.
-
ja bych si osobne chovani sudo -s a v naslednem shellu pusteneho programu predstavoval asi tak to:
I. spustim program, treba zmineny elinks
II.
a) konfiguracni soubor uz existuje
- nactu ten, ktery je v /home/user
b) konfiguracni soubor jeste neexistuje
- zalozim s defaultni konfiguraci, ale kde?:
1. /home/user ale vlastnikem bude user a ne root (osobne preferuji)
2. zalozim nebo prectu ten, ktery je v /root
III. ukoncim program
- samozrejme bod II. se muze vykovat i treba behem ukoncovani aplikace
- muselo by se to ridit promenou $HOME a z ni si vyparsovat uzivatele, jenze ta nemusi byt vzdy ve tvaru /home/username
-
Zrovna u toho elinks-u bych osobně používal sudo -i.
Proto, abych ten prohlížeč pouštěl pod rootem, bych měl mít pádný důvod. Pokud ho mám (ten důvod), měl bych logicky pracovat v adresáři /root, kde by se i měly vytvářet/měnit konfigurační soubory.
-
to je pravda .. ja mluvim ze svy zkusenolsti, nez jsem zacal pouzivat sudo -i .. driv jsem pro provedeni vice akci pod rootem pouzival sudo -s .. vetsinou si instaluji system od basesystemu po KDE a tak se obcas hodi mit prohlizec v konzoli a jsem linej se kvuli rychlemu podivani na net se odhlasovat nebo prihlasovat na jinem terminalu ;)
-
[
Z roota se stanete původním uživatelem když zadáte příkaz exit (jako když se v terminálu odhlašujete).
exit = Ctrl+D
-
[
Z roota se stanete původním uživatelem když zadáte příkaz exit (jako když se v terminálu odhlašujete).
exit = Ctrl+D
To není pravda, protože exit != Ctrl+D.
Ctrl+D pošle přávě prováděnému příkazu znak konce souboru: EOF. Ve většině shellů (možná ve všech, já to mám vyzkoušeno jen v zsh, bash a tcsh) jde tento znak zachytit a pak se Vám shell samozřejmě neukončí. Pro nastavení chování v bash a (t)csh to je volba IGNOREEOF, případně v zsh to je IGNORE_EOF. Většinou se tato volba nastavuje v inicializačním skriptu shellu (.bashrc, .zshrc apod.).
Zkuste si spustit:
set -o ignoreeof # vypne Ctrl+DV Ubuntu je náhodou(?) tato volba vypnuta, ale v jiných distribucích tomu tak není. IMHO je lepší ji mít zapnutou - pokud mám v shellu rozdělanou nějakou práci, bylo by blbý o ni přijít nechtěně zmáčknutou klávesovou zkratkou.
-
díky.. koukám, že sem šťouchl do vosího hnízda :oP ...
takže když to shrnu, tak je jedno jestli se použije sudo -i nebo -s pro činnosti jako úprava kofiguračích souborů. Liší se jen v pohledu na domovský adresář s daným superuživatelským root oprávněním... Pro používání user/administrátorských nástrojů z konzole je lepší sudo -i aby se konfigurace ukládala s root právy do root adresáře a ne uživateli, kterému by to dělalo problémy v další konfiguraci programu...
-
Guido: diky za info, nevedel jsem jak to funguje na pozadi. Ja se naopak s vyplym Ctrl+D jeste nesetkal, bezne to pouzivam pro odhlasovani a fungovalo mi to zatim myslim vsude. Ale aspon ted vim proc.
-
Další věc, co mě teď napadla. Pokud máte funkční Ctrl+D a děláte v grafice (xterm apod.), tak to není takový problém. Ale pokud budete přihlášen v terminálu (Ctrl+Alt+F1-F6) nebo třeba přes SSH, tak CTRL+D neznamená jen ukončení terminálu, ale rovnou také logout a to už může být dost nepříjemný.
-
ale jestli to chapu dobre, tak exit udela logout ..
user1$ sudo -i
root# logout
user1$
ja osobne pouzivam CTRL+D - je to rychlejsi nez psani - obecne to znamena znak konce souboru EOF - a tim padem, kdyz se shellu ukonci standartni vstup, tak se tim i sam shell ukonci
-
ale jestli to chapu dobre, tak exit udela logout
Víceméně ano. Příkaz exit přeruší skript, potažmo program. Protože většina uživatelů má v /etc/passwd uveden jako inicializační program /bin/sh, tak zadání exitu v shellu způsobí ukončení shellu a následuje logout.