Portál AbcLinuxu, 7. května 2025 19:46
Dejme tomu, že aplikace, které mohou konat svou činnost jen pod rootem můžem rozdělit do dvou skupin: ty, co se spustí, ale něco na nás zařvou (např. apt-get) a druhé, tedy ty, které můžem se pokusit spustit leda absolutní cestou (tedy pokud nejsme v jejich složce.
Př. 1.:
user@machine:~$ apt-get ckeck
E: Nešlo otevřít zámkový soubor /var/lib/dpkg/lock - open (13 Přístup odmítnut)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
Př. 2a:
user@machine:~$ fdisk
bash: fdisk: command not found
Př. 2b:
user@machine:~$ /sbin/fdisk
Usage: fdisk [-l] [-b SSZ] [-u] device
E.g.: fdisk /dev/hda (for the first IDE disk)
or: fdisk /dev/sdc (for the third SCSI disk)
or: fdisk /dev/eda (for the first PS/2 ESDI drive)
or: fdisk /dev/rd/c0d0 or: fdisk /dev/ida/c0d0 (for RAID devices)
...
Pokud zkusíme spustit 1. typ aplikace se sudo
:
user@machine:~$ sudo apt-get check
Čtu seznamy balíků... Hotovo
Vytvářím strom závislostí... Hotovo
Vše je v pořádku, aplikace se spustí tak, jak má.
Pokud však 2. typ:
user@machine:~$ sudo fdisk
sudo: fdisk: command not found
Výsledek je, že aplikace nebyla nalazene (jakoby k ní neznal cestu).
Řešením je:
user@machine:~$ sudo sudo fdisk
Usage: fdisk [-l] [-b SSZ] [-u] device
E.g.: fdisk /dev/hda (for the first IDE disk)
or: fdisk /dev/sdc (for the third SCSI disk)
...
Aplikace se normálně spustí.
Domníval jsem se, že za to mohou PATH
, příliš moudrý z toho však nejsem:
user@machine:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games
user@machine:~$ sudo echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games
user@machine:~$ sudo sudo echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games
user@machine:~$ su
Password:
machine:/home/user# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin
Sudo mám vyřešené tak, že v /etc/sudoers
mám:
root ALL=(ALL) ALL
%sudo ALL=(ALL) ALL
V systému je skupina sudo, takže její člen by neměl mít problém sudo používat. Skupina se vytvořila sama a např. dle tohoto threadu je její účel právě tento (tedy členové skupiny sudo mohou používat sudo).
Prosím tedy poraďte, co mám dělat, aby sudo
šlo používat normálně a skupinu sudo bych i nadále používal rád.
Všem zůčastněním předem díky moc!
tedy pokud nejsme v jejich složce
(terminologická poznámka: žádné složky, adresář se tomu říká) Vy máte tečku v cestě? To není dobrý nápad, ve vlastním zájmu pryč s ní.
user@machine:~$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games user@machine:~$ sudo echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games user@machine:~$ sudo sudo echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/gamesŠpatný přístup. Tohle nevypovídá naprosto o ničem, protože ve všech třech případech expanduje
$PATH
tentýž shell: ten, kterému to píšete.
Mám-li vám poradit podle svého nejlepšího vědomí a svědomí, zapomeňte na černou magii s (ne)děděním proměnné PATH
a pište
sudo /sbin/fdiskPokud to chcete pohodlněji, udělejte si alias:
alias fdisk='/usr/bin/sudo /sbin/fdisk'
Především neexistují žádné aplikace...Vím, že ne. Jen jsem chtěl naznačit, že určité fungují a jiné ne.
tedy pokud nejsme v jejich složceTo sem trochu ulít, to by platilo jen s
./
...pište sudo /sbin/fdisk...Ale to není vůbec žádné řešení, to bych takhle musel psát pomalu každý druhý příkaz! To samé s tím aliasem, to bych musel udělat aliasy na kde co, to je naprosto nesystémové řešení.
Jenomže těch příkazů, kdy musím psát sudo sudo příkaz je celkem dost: adduser, deluser, visudo, ntpdate, ifconfig, ...
Řekl bych, že to bude rozdíl těchto dvou hodnot:
user@machine:~$[TAB][TAB]
Display all 1924 possibilities? (y or n)
user@machine:~$ su
Password:
machine:/home/user#[TAB][TAB]
Display all 2205 possibilities? (y or n)
machine:/home/user#
Pokud to vyřeším tak, že v /etc/sudoers
budu mít místo:
jen:
%sudo ALL=(ALL) ALL
user1 ALL=(ALL) ALL
user2 ALL=(ALL) ALL
user2 ALL=(ALL) ALL
Tak to jde, ale když už skupina sudo v Debianu (Sarge) je, řekl bych, že by měla fungovat...
/sbin
a /usr/sbin
přidejte do cesty a bude vymalováno…
… přidejte do cesty a bude vymalovánoa lze to přidat všem ve skupině sudo?
su
a pak psát exit
, když si člověk vzpomene. Když to není nutné, neběžet jako root.
Ctrl-D :-)
user@machine:~$ sudo fdisk
sudo: fdisk: command not found
user@machine:~$ sudo sudo fdisk
Usage: fdisk [-l] [-b SSZ] [-u] device
E.g.: fdisk /dev/hda (for the first IDE disk)
or: fdisk /dev/sdc (for the third SCSI disk)
...
sudo sudo fdisk
' než 'sudo /sbin/fdisk
'? Mně to tak nepřipadá…
sudo fdisk
? A např. se skupinou users to šlo OK a se skupinou sudo už tomu tak není, proč? Je to tedy BUG?
PATH
. Tak to funguje vždy a všude, to není žádný bug.
Existuje aforismus, vysvětlující naprosto přesně váš problém: "Počítač nedělá to, co po něm chcete, ale to, o co ho požádáte."
... když jsem k tomu účelu používal mnou vytvořenou skupinu users, vše bylo OK. Když jsem narazil na skupinu sudo a řekl jsem si, že od toho tam asi je, tak asi jen u ní to nefunguje tak, jak má.
Tady aspoň pro nevěřící Tomáše:
/etc/sudoers
:
Defaults targetpw
%sudo ALL=(ALL) ALL
user@machine:~$ groups
dialout cdrom floppy sudo audio dip video plugdev webmasters
user@machine:~$ sudo fdisk
sudo: fdisk: command not found
user@machine:~$ sudo sudo fdisk
Usage: fdisk [-l] [-b SSZ] [-u] device
E.g.: fdisk /dev/hda (for the first IDE disk)
or: fdisk /dev/sdc (for the third SCSI disk)
or: fdisk /dev/eda (for the first PS/2 ESDI drive)
or: fdisk /dev/rd/c0d0 or: fdisk /dev/ida/c0d0 (for RAID devices)
...
Nyní vymazání se ze skupiny sudo, zapsání se do users, úprava /etc/sudoers
na:
Defaults targetpw
%users ALL=(ALL) ALL
A po rebootu:
user@machine:~$ groups
dialout cdrom floppy audio dip video plugdev users webmasters
user@machine:~$ sudo fdisk
Usage: fdisk [-l] [-b SSZ] [-u] device
E.g.: fdisk /dev/hda (for the first IDE disk)
or: fdisk /dev/sdc (for the third SCSI disk)
or: fdisk /dev/eda (for the first PS/2 ESDI drive)
or: fdisk /dev/rd/c0d0 or: fdisk /dev/ida/c0d0 (for RAID devices)
...
Proč tedy se skupinou users narozdíl od skupiny sudo to jde?
sudo
.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.