Fórum Root.cz

Hlavní témata => Distribuce => Téma založeno: DolamanAnoha 12. 06. 2022, 19:59:57

Název: Root nemá v $PATH systémové utility
Přispěvatel: DolamanAnoha 12. 06. 2022, 19:59:57
I když mě linux, konkrétně momentálně Debian 5.10.113-1 , baví, nemůžu se mu věnovat tolik, kolik bych chtěl. Omezuje se to na občasné vylepšování domácích udělátek. A tak nové distribuce jsou častější, než se stačím něco naučit v té předchozí.
Nic moc od toho nechci, jen využívat příkazy jako třeba modprobe, nebo insmod jako root uživatel. Nejnověji mám s tím problém, protože soubor /root/bashrc je absolutné prázdný a tímpádem mě shell vrací "command not found". Cože?
Tak jsem se dal do hledání a našel jsem, že teď je to někde v /etc/profile a tam jsem našel tohleto:
Kód: [Vybrat]
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "$(id -u)" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

if [ "${PS1-}" ]; then
  if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "$(id -u)" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

Přidávání $PATH jsem řešil opravdu hodně let dávno a tak mě zabte, ale chová se to podle podmínky else. Byl by někdo ochotný ztratit dvě minuty ze svého života a pár větama mě to osvítit, než provedu něco blbě?
Předem stokrát děkuji.
Název: Re:Problém s $PATH zabte mě.
Přispěvatel: alex6bbc 12. 06. 2022, 20:06:28
tak si tam hod echo a zkus to spustit jako shell skript rucne
Název: Re:Problém s $PATH zabte mě.
Přispěvatel: _Jenda 12. 06. 2022, 20:41:05
Já si matně vzpomínám, že profile se spouští jenom když je to "login shell" nebo možná naopak, a když se přepneš přes nějaké sudo nebo su, tak to třeba není login shell a tak se to nespustí.

V balíčku "bash" je soubor /etc/skel/.bashrc normálně pořád https://packages.debian.org/bullseye/amd64/bash/filelist takže by se měl při založení uživatele vytvořit v jeho home, takže máš možná nějaký jiný problém. (v dotazu to máš omylem jako bashrc bez tečky)
Název: Re:Problém s $PATH zabte mě.
Přispěvatel: k3dAR 12. 06. 2022, 20:49:34
1. Debian 5.10.113-1 to cislo neni verze Debianu, ale Linux kernelu/jadra

2. nema byt /root/bashrc ale /root/.bashrc (tedy s TECKOU na zacatku)

3. jakej program hlasi "command not found" ?
   pokud chces pustit ten modprobe, tak ten se musi poustet jako root,
   tzn. pokud si roota pri instalaci (nebo pak) aktivoval tak:
Kód: [Vybrat]
su -
(zadas heslo roota)
modprobe blabla
   pokud root aktivni nemas, tak:
Kód: [Vybrat]
sudo modprobe blabla
(zadas heslo SVEHO uzivatele)

tim ze to takto pustis jako ci "jako" root, tak ten v $PATH bude mit sbin adresare
Název: Re:Problém s $PATH zabte mě.
Přispěvatel: DolamanAnoha 12. 06. 2022, 20:56:21
Za tu tečku se omlouvám.
Co se týče přihlašování, tak se přihlašuju jako BFU a pak se rootnu příkazem su, následné zadám heslo. Pak bych měl být root. A to by mě pak kupř. modbprobe blablabla mělo jít jako z praku a nedělat, že nejsem root.
Tu path si umím zadat na seansi, ale štve mě, co to má jako být, prostě tohle se mi ještě nestalo. Žeby tohle:
Kód: [Vybrat]
root@homeassistant:/etc#
nebyl root?
Název: Re:Problém s $PATH zabte mě.
Přispěvatel: FKoudelka 12. 06. 2022, 21:16:36
Za tu tečku se omlouvám.
Co se týče přihlašování, tak se přihlašuju jako BFU a pak se rootnu příkazem su, následné zadám heslo. Pak bych měl být root. A to by mě pak kupř. modbprobe blablabla mělo jít jako z praku a nedělat, že nejsem root.
Tu path si umím zadat na seansi, ale štve mě, co to má jako být, prostě tohle se mi ještě nestalo. Žeby tohle:
Kód: [Vybrat]
root@homeassistant:/etc#
nebyl root?
A přepínáš se pomocí su   , nebo su -     ? Pokud to první , tak se Ti nenačte prostředí roota , tedy ten  .bashrc, ve kterém je PATH definovaná.
Název: Re:Problém s $PATH zabte mě.
Přispěvatel: FKoudelka 12. 06. 2022, 21:43:48
Za tu tečku se omlouvám.
Co se týče přihlašování, tak se přihlašuju jako BFU a pak se rootnu příkazem su, následné zadám heslo. Pak bych měl být root. A to by mě pak kupř. modbprobe blablabla mělo jít jako z praku a nedělat, že nejsem root.
Tu path si umím zadat na seansi, ale štve mě, co to má jako být, prostě tohle se mi ještě nestalo. Žeby tohle:
Kód: [Vybrat]
root@homeassistant:/etc#
nebyl root?
A přepínáš se pomocí su   , nebo su -     ? Pokud to první , tak se Ti nenačte prostředí roota , tedy ten  .bashrc, ve kterém je PATH definovaná.
Edit time je zde krátký:
Tedy : … nenačte se ti prostředí roota a tedy jeho PATH. Ani eventuálně /root/.bashrc, pokud existuje.
Název: Re:Problém s $PATH zabte mě.
Přispěvatel: FKoudelka 12. 06. 2022, 21:52:35
I když mě linux, konkrétně momentálně Debian 5.10.113-1 , baví, nemůžu se mu věnovat tolik, kolik bych chtěl. Omezuje se to na občasné vylepšování domácích udělátek. A tak nové distribuce jsou častější, než se stačím něco naučit v té předchozí.
Nic moc od toho nechci, jen využívat příkazy jako třeba modprobe, nebo insmod jako root uživatel. Nejnověji mám s tím problém, protože soubor /root/bashrc je absolutné prázdný a tímpádem mě shell vrací "command not found". Cože?
Tak jsem se dal do hledání a našel jsem, že teď je to někde v /etc/profile a tam jsem našel tohleto:
Kód: [Vybrat]
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "$(id -u)" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

if [ "${PS1-}" ]; then
  if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "$(id -u)" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

Přidávání $PATH jsem řešil opravdu hodně let dávno a tak mě zabte, ale chová se to podle podmínky else. Byl by někdo ochotný ztratit dvě minuty ze svého života a pár větama mě to osvítit, než provedu něco blbě?
Předem stokrát děkuji.
Ještě jinak: prázdný /root/.bashrc není důvodem , proč se nenajdou systémové  příkazy jako insmod.
V ~/.bashrc jsou individuální modifikace pro uživatele, které si tam může a nemusí zapsat, určitě ne cesta roota k systémovým příkazům
Název: Re:Problém s $PATH zabte mě.
Přispěvatel: FKoudelka 12. 06. 2022, 21:58:35
1. Debian 5.10.113-1 to cislo neni verze Debianu, ale Linux kernelu/jadra

2. nema byt /root/bashrc ale /root/.bashrc (tedy s TECKOU na zacatku)

3. jakej program hlasi "command not found" ?
   pokud chces pustit ten modprobe, tak ten se musi poustet jako root,
   tzn. pokud si roota pri instalaci (nebo pak) aktivoval tak:
Kód: [Vybrat]
su -
(zadas heslo roota)
modprobe blabla
   pokud root aktivni nemas, tak:
Kód: [Vybrat]
sudo modprobe blabla
(zadas heslo SVEHO uzivatele)

tim ze to takto pustis jako ci "jako" root, tak ten v $PATH bude mit sbin adresare
Sorry k3d, přehlídl jsem že už jsi to napsal s tím mínus.
Ale je divný,že tam už má ten # v promptu, užík by tam měl mít  $   , tedy jestli se na to ještě hraje…
Název: Re:Problém s $PATH zabte mě.
Přispěvatel: DolamanAnoha 12. 06. 2022, 22:03:07
Tak omlouvám se, při prvním polibku s Debianem jsem si zapamatoval su bez znaménka mínus a nevím, kdy se to změnilo, opravdu nemám čas na changelogy. Tisíceré díky všem za trpělivost.
Název: Re:Problém s $PATH zabte mě.
Přispěvatel: FKoudelka 12. 06. 2022, 22:49:49
Tak omlouvám se, při prvním polibku s Debianem jsem si zapamatoval su bez znaménka mínus a nevím, kdy se to změnilo, opravdu nemám čas na changelogy. Tisíceré díky všem za trpělivost.
Takhle je to v shellu odjakživa :-) ale v pohodě
Název: Re:Problém s $PATH zabte mě.
Přispěvatel: k3dAR 13. 06. 2022, 02:28:14
Takhle je to v shellu odjakživa :-) ale v pohodě
"su -" ano, ale to ze user nema v $PATH *sbin je myslim tak 1-2 verze Debianu zpet :-)
Název: Re:Problém s $PATH zabte mě.
Přispěvatel: FKoudelka 13. 06. 2022, 09:39:58
Takhle je to v shellu odjakživa :-) ale v pohodě
"su -" ano, ale to ze user nema v $PATH *sbin je myslim tak 1-2 verze Debianu zpet :-)

No tvl ! Takže se to tam musí dopsat :-O .Doufám že tam tam nepřidali “.”
Název: Re:Root nemá v $PATH systémové utility
Přispěvatel: FKoudelka 13. 06. 2022, 09:43:51
 Jen pro pořádek:
Do cesty tam přidáš podobně jako:
export PATH="$HOME/bin:$PATH"
Název: Re:Root nemá v $PATH systémové utility
Přispěvatel: tecka 13. 06. 2022, 14:05:32
No tvl ! Takže se to tam musí dopsat :-O .Doufám že tam tam nepřidali “.”
export PATH="$HOME/bin:$PATH"

Nemotej mu hlavu s home, když řeší sbin a nebude nikam nic dopisovat, ale prostě, když chce login shell, tak použije to su tak, aby dostal login shell. Ty vždycky, když něco napíšeš, tak to je perla.
Název: Re:Root nemá v $PATH systémové utility
Přispěvatel: 3ugeene 13. 06. 2022, 14:14:11
Jen pro pořádek:
Do cesty tam přidáš podobně jako:
export PATH="$HOME/bin:$PATH"


$HOME :D
Název: Re:Problém s $PATH zabte mě.
Přispěvatel: k3dAR 13. 06. 2022, 14:35:11
Takhle je to v shellu odjakživa :-) ale v pohodě
"su -" ano, ale to ze user nema v $PATH *sbin je myslim tak 1-2 verze Debianu zpet :-)

No tvl ! Takže se to tam musí dopsat :-O .Doufám že tam tam nepřidali “.”
jen user sbin v ceste nema, root ano (a user tedy ziska pres zminovane sudo ci "su -")
. samozrejme nepridali, kdyz ten krok znepristupnit sbin je z urciteho pohledu pro bezpecnost, ale . by byla proti ;-)
Název: Re:Problém s $PATH zabte mě.
Přispěvatel: FKoudelka 13. 06. 2022, 17:59:55
Takhle je to v shellu odjakživa :-) ale v pohodě
"su -" ano, ale to ze user nema v $PATH *sbin je myslim tak 1-2 verze Debianu zpet :-)

No tvl ! Takže se to tam musí dopsat :-O .Doufám že tam tam nepřidali “.”
jen user sbin v ceste nema, root ano (a user tedy ziska pres zminovane sudo ci "su -")
. samozrejme nepridali, kdyz ten krok znepristupnit sbin je z urciteho pohledu pro bezpecnost, ale . by byla proti ;-)
Ježíš, já už ani číst neumím :-(
Název: Re:Root nemá v $PATH systémové utility
Přispěvatel: FKoudelka 13. 06. 2022, 18:10:12
No tvl ! Takže se to tam musí dopsat :-O .Doufám že tam tam nepřidali “.”
export PATH="$HOME/bin:$PATH"

Nemotej mu hlavu s home, když řeší sbin a nebude nikam nic dopisovat, ale prostě, když chce login shell, tak použije to su tak, aby dostal login shell. Ty vždycky, když něco napíšeš, tak to je perla.
No dyť píšu, že je to příklad jak něco přidat do cesty, snad si nemyslíš, že budu hledat kde je v debianu insmod. Mmch to může použít jindy.
To jak použít su aby dostal prostředí roota,tedy s mínus jsem přece psal a je to správné řešení. Prostě PERLA!
Název: Re:Root nemá v $PATH systémové utility
Přispěvatel: DolamanAnoha 17. 06. 2022, 13:57:08
Tak přeci jen nějakej podrázek od vývojářů. Přiznávám bez mučení, že o "su -" jsem opravdu nevěděl a je to moje chyba. Zřejmě jsem někdy před 15-20 lety narazil na malinko nepřesnej návod pro začátečníky v linuxu. Už od Jessie, když změnili cosik, co mě vyhodilo z rovnováhy - používám VPN a celý se to nějak předělalo a od tý doby tomu nerozumím, jsem na změny trošinku nakrklej.
A tak děkuju všem za objasnění problému.
Název: Re:Root nemá v $PATH systémové utility
Přispěvatel: k3dAR 17. 06. 2022, 22:01:51
Tak přeci jen nějakej podrázek od vývojářů. Přiznávám bez mučení, že o "su -" jsem opravdu nevěděl [...]
A tak děkuju všem za objasnění problému.
nejde o zadrej "podrazek"...
"su" (bez pomlcky) odjakziva preplo na root prava, ale NEpreplo na root prostredi
"su -" odjakziva preplo na root prava a root prostredi

co se zmenilo je to ze bezny uzivatel nema v ceste sbin ktere obsahuje "prikazy" pro roota,
neslo o podraz, ale o v podstate zvyseni bezpecnosti...

a tedy pouziti su bez prepnuti na root prostredi pak nezmenilo tu $PATH aby v ni byl sbin,
driv to nevadilo kdyz beznej user sbin v $PATH mel, takze su stacilo protoze si potreboval od roota jen ta prava
Název: Re:Root nemá v $PATH systémové utility
Přispěvatel: _Jenda 17. 06. 2022, 23:17:20
co se zmenilo je to ze bezny uzivatel nema v ceste sbin ktere obsahuje "prikazy" pro roota,
neslo o podraz, ale o v podstate zvyseni bezpecnosti...
Zdroj? Uživatel si může PATH nastavit nebo volat ty příkazy plnou cestou. Já to chápal jako pokus o snížení zmatení/nepořádku, aby třeba při doplňování tabem „nepřekážely“ příkazy, které stejně „nemá cenu spouštět“ (a pak to právě naráží na to, že mnoho těch příkazů je užitečných i bez roota - například umí nějaké informace zobrazit alespoň read-only).