Sudo (Magyar)
A sudo lehetővé teszi a rendszergazda számára, hogy hatáskört delegáljon (rendszergazdai hatáskört adjon meg) bizonyos felhasználóknak – vagy felhasználói csoportoknak – annak érdekében, hogy parancsokat futtassanak root felhasználóként vagy másik felhasználóként, miközben naplózást biztosít a parancsokról és azok argumentumairól.
A sudo alternatívát kínál a su parancshoz a root jogosultságú parancsok futtatására. Ellentétben a su paranccsal, amely egy root shellt indít el, és ezáltal minden további parancs root hozzáférést kap, a sudo csak egyetlen parancs erejéig biztosít ideiglenes jogosultságnövelést. Mivel a root jogosultságok csak szükség esetén kerülnek engedélyezésre, a sudo használata csökkenti annak esélyét, hogy egy elgépelés vagy egy hibásan meghívott parancs tönkretegye az operációs rendszert.
A sudo más felhasználók nevében történő parancsfuttatásra is használható Emellett, a sudo minden parancsot és sikertelen hozzáférési kísérletet naplóz a journal rendszerbe biztonsági ellenőrzés céljából.
Telepítés
Annak érdekében, hogy a számítógépen fent legyen a sudo parancs, Önnek fel kell telepítenie a számítógépre a sudo szoftvercsomagot.
Használat
Annak érdekében, hogy a sudo parancsot nem privilegizált felhasználóként használhassuk, azt megfelelőképpen be kell állítani. Tekintse meg a #Beállítás című szakaszt.
A sudo parancsot úgy kell használni, hogy az adott parancsunk legelejére odaírjuk a sudo szöveget és egy szóközt írunk utána, majd jöhet az adott parancsunk (és utána jöhetnek az adott parancsunkhoz tartozó paraméterek, ha vannak ilyenek):
$ sudo cmd
A pacman szoftvercsomag-kezelőt a sudo paranccsal együtt a következőképpen kell írni:
$ sudo pacman -Syu
További információkért tekintse meg a sudo(8) parancs man súgóoldalát.
Login shell
Minden parancsot nem lehet másik felhasználó nevében futtatni pusztán a sudo előtag hozzáadásával. Különösen átirányítás és parancshelyettesítés használatakor bejelentkezési shell-t kell használni, amely könnyen elérhető a sudo -iu user paranccsal (az -u user elhagyható, ha a kívánt felhasználó a root).
A következő példában a parancshelyettesítés teljes shell-ben működne, de a sudo előtag hozzáadásával meghiúsul:
$ sudo wpa_supplicant -B -i interface -c <(wpa_passphrase MYSSID passphrase)
Successfully initialized wpa_supplicant Failed to open config file '/dev/fd/63', error: No such file or directory Failed to read or parse configuration '/dev/fd/63'
Beállítás
A sudo fő beállításfájlja a /etc/sudoers. Ezt a beállításfájlt mindig a visudo(8) paranccsal kell szerkeszteni. A beállításfájl használható aliasok (gyakorlatilag változók) beállítására, alapértelmezett viselkedések megváltoztatására és annak meghatározására, hogy mely felhasználók milyen parancsokat futtathatnak. További információért tekintse meg a sudoers(5) man súgóoldalt.
A sudo feldolgozza a /etc/sudoers.d/ könyvtárban található fájlokat is. Ez azt jelenti, hogy a /etc/sudoers fájl szerkesztése helyett a sudo a beállításokat különálló fájlokban módosíthatja, majd elhelyezheti azokat ebben a könyvtárban. Ennek kettő előnye van:
- Nincs szükség a
sudoers.pacnewfájl összevonására. - Ha probléma van egy új bejegyzéssel, akkor Ön eltávolíthatja a hibás fájlt ahelyett, hogy a
/etc/sudoersfájlt szerkesztené. (Azonban, tekintse meg az alábbi figyelmeztetést).
A beillesztett fájlok bejegyzéseinek formátuma megegyezik magának a /etc/sudoers fájlnak a formátumával. Közvetlen szerkesztésük érdekében Ön használja a visudo /etc/sudoers.d/somefile parancsot. Részletekért tekintse meg a sudoers(5) § Including other files from within sudoers man sógót.
A /etc/sudoers.d/ könyvtárban lévő fájlok lexikografikus sorrendben kerülnek feldolgozásra, a . vagy ~ karaktert tartalmazó fájlnevek kihagyásra kerülnek. A rendezési problémák elkerülése érdekében a fájlneveknek kettő számjeggyel kell kezdődniük. Például: 10-foo.
/etc/sudoers.d/ könyvtárban lévő fájlok éppoly sérülékenyek, mint maga a /etc/sudoers fájl: Bármely helytelenül formázott fájl megakadályozza a sudo működését. Ezért ugyanabból az okból erősen javasolt a visudo használata.Defaults váz
Ahogy az a sudoers(5) § Defaults súgóleírásban is ki van fejtve, "számos viselkedési beállítás megváltoztatható futásidőben az alapértelmezett értékekről egy vagy több Default_Entry sor segítségével". A sudoers(5) § SUDOERS OPTIONS súgóleírás felsorolja az összes olyan beállítást, amely használható a Defaults segítségével.
Aktuális beállítások megtekintése
Futtassa a sudo -ll parancsot az aktuális sudo beállítás megjelenítése érdekében, vagy futtassa a sudo -lU felhasználónév parancsot egy adott felhasználóhoz tartozó sudo beállítás megjelenítése érdekében.
A visudo használata
A visudo zárolja a megadott fájlt (alapértelmezés szerint a /etc/sudoers fájlt), a módosításokat egy ideiglenes fájlba menti, majd még mielőtt elmentené, szintaktikai hibákat keres benne.
- Elengedhetetlen, és kritikusan fontos, hogy a
sudoersmentes legyen a szintaktikai hibáktól! Bármilyen hiba használhatatlanná teszi a sudo parancsot. Ön mindig a visudo segítségével szerkessze a sudoers fájlt annak érdekében, hogy biztosan elkerülje a hibákat. - A visudo(8) man súgója figyelmeztet, hogy a visudo beállítása a választott szövegszerkesztő felhasználói környezeti változóinak tiszteletben tartására biztonsági rés lehet, mivel lehetővé teszi a visudo jogosultsággal rendelkező felhasználó számára, hogy tetszőleges parancsokat futtasson root felhasználóként naplózás nélkül, egyszerűen a változó más értékre állításával.
A visudo alapértelmezett szövegszerkesztője a vi szövegszerkesztő. A sudo szoftvercsomag --with-env-editor opcióval van forráskódból lefordítva, és figyelembe veszi a SUDO_EDITOR, VISUAL és EDITOR változók használatát. Ha a VISUAL be van állítva, akkor az EDITOR nincs használva.
A nano szövegszerkesztő beállításához visudo szövegszerkesztőként az aktuális shell munkamenet idejére exportálja a EDITOR=nano változót. Egy másik szövegszerkesztő egyszeri használatához egyszerűen állítsa be a változót a visudo meghívása előtt:
# EDITOR=nano visudo /etc/sudoers.d/10-editor
A szövegszerkesztő végleges megváltoztatása érdekében tekintse meg az Environment variables#Felhasználónként című leírást.
A visudo szövegszerkesztőjének rendszerszintű, végleges megváltoztatása érekében (például rnano(1), a nano korlátozott mód):
/etc/sudoers.d/10-editor
# Az alapértelmezett EDITOR a nano korlátozott verziójára történő beállítása. Továbbá annak letiltása, hogy a visudo használja az EDITOR/VISUAL változókat. Defaults editor=/usr/bin/rnano, !env_editor
Ön alternatív megoldásként létrehozhat egy másolatot a fájlról, majd utólag ellenőrizheti a visudo -c /fájl/másolata parancs futtatásával. Ez hasznos lehet amikor Ön el akarja kerülni a visudo segítségével történő fájl zárolását.
Példabejegyzések
Annak érdekében, hogy – amikor egy parancs elé sudo kerül – az archie felhasználó egyetlen gépen (hostname) bármely felhasználóként és csoportként futtathassa az összes parancsot, Ön hozza létre a következőt:
/etc/sudoers.d/90-archie
archie hostname=(ALL:ALL) ALL
Annak érdekében, hogy a wheel csoport tagjai teljes hozzáférést kapjanak, a következőt kell létrehozni:
/etc/sudoers.d/10-wheel
%wheel ALL=(ALL:ALL) ALL
wheel csoport számára és hozzáadni a felhasználót ehhez a csoporthoz, mivel alapértelmezés szerint a Polkit a wheel csoport tagjait rendszergazdáknak tekinti. Ha a felhasználó nem tagja a wheel csoportnak, akkor a Polkit-et használó szoftverek előfordulhat, hogy a root jelszóval kérnek hitelesítést a felhasználói jelszó helyett.Az archie felhasználó számára történő jelszóbekérés letiltása érdekében a következőt kell létrehozni:
/etc/sudoers.d/90-archie_nopasswd
Defaults:archie !authenticate
Meghatározott parancsok engedélyezése kizárólag az archie felhasználó számára a hostname számítógépen jelszó nélkül:
/etc/sudoers.d/90-archie_commands
archie hostname= NOPASSWD: /usr/bin/halt,/usr/bin/poweroff,/usr/bin/reboot,/usr/bin/pacman -Syu
%wheel sor után elhelyezni, amikor az Ön felhasználói fiókja tagja ennek a csoportnak.Részletes sudoers példa érhető el a /usr/share/doc/sudo/examples/sudoers fájlban. Egyébként tekintse meg a sudoers(5) man súgót a részletes információért.
Alapértelmezett sudoers fájljogosultságok
A sudoers fájl tulajdonosának és csoportjának egyaránt 0 értékűnek kell lennie. A fájl jogosultságait 0440 értékre kell állítani. Ezek a jogosultságok alapértelmezetten be vannak állítva, de ha Ön véletlenül megváltoztatja őket, akkor azonnal vissza kell állítani, máskülönben a sudo nem fog működni.
# chown -c root:root /etc/sudoers # chmod -c 0440 /etc/sudoers
Parancs futtatása SSH protokollon keresztül
Az SSH alapértelmezés szerint amikor távoli parancsot futtat nem foglal le tty-t. Lefoglalt tty nélkül a sudo nem tudja megakadályozni, hogy a jelszó megjelenjen. Önnek az ssh -t opcióját kell használnia annak érdekében, hogy kényszerítse a tty lefoglalását, és a Defaults beállításban a requiretty opciót kell megadnia annak érdekében, hogy csak akkor engedje a felhasználónak a sudo futtatását, amikor rendelkezik tty-vel.
/etc/sudoers.d/10-requiretty
# Az "ssh hostname sudo <parancsneve>" használatának letiltása, mert ez a jelszó egyszerű szövegként fog megjelenni. Önnek az "ssh -t hostname sudo <parancsneve>" parancsot kell futtatnia. # Defaults requiretty Defaults cmddenial_message="Usage without a TTY is not allowed: run 'ssh -t'!"
Megengedő umask
A sudo egyesíti a felhasználó umask értékét a saját umask értékével (amelynek alapértelmezése 0022). Ez megakadályozza, hogy a sudo a felhasználó umask értékénél nyitottabb jogosultságokkal hozzon létre fájlokat. Bár ez észszerű alapértelmezés, ha nincs egyedi umask használatban, előfordulhat, hogy egy sudo paranccsal futtatott segédprogram más jogosultságokkal hoz létre fájlokat, mint ha közvetlenül root felhasználóként futtatnák. Ha ebből hibák adódnának, akkor a sudo lehetőséget biztosít az umask javítására, még akkor is, ha a kívánt umask engedékenyebb, mint a felhasználó által megadott umask:
/etc/sudoers.d/10-umask_override
Defaults umask = 0022 Defaults umask_override
Ez beállítja a sudo umask értékét a root alapértelmezett umask értékére (0022), és felülírja az alapértelmezett működést, mindig a megadott umask értéket használva, függetlenül attól, hogy a felhasználó milyen umask értéket állított be.
Tippek és trükkök
Annak az alkalmaknak a csökkentése amikor a jelszóbegépelést el kell végezni
Ha bosszantja, hogy alapértelmezés szerint 5 percenként újra be kell írnia az Ön saját jelszavát, akkor ezt az állapotot megváltoztathatja úgy, hogy hosszabb időértéket állít be a timestamp_timeout számára (percben):
/etc/sudoers.d/10-timestamp_timeout
Defaults timestamp_timeout=10
Amennyiben Ön hosszú szkriptfájlban használ sudo parancsokat, és nem szeretné megvárni a felhasználói bevitelt, amikor a timeout lejár, akkor lehetőség van a timeout frissítésére a sudo -v külön futtatásával egy ciklusban (míg a sudo -K azonnal visszavonja a timeout időértéket).
Jelszóbekérés időkorlátjának letiltása
Gyakori bosszúság egy hosszú ideig futó folyamat, amely egy háttérben a parancssorban fut normál jogosultságokkal, és csak szükség esetén emelkedik magasabb szintre. Ez sudo jelszóbekérést eredményez, amely észrevétlen marad és lejár, ekkor a folyamat megszakad, és az addig elvégzett munka elveszik, vagy legjobb esetben gyorsítótárba kerül. Gyakori tanács a jelszó nélküli sudo engedélyezése, vagy a sudo jelszómegőrzési időkorlátjának meghosszabbítása. Mindkettőnek negatív biztonsági következményei vannak. A prompt időkorlátot azonban le lehet tiltani, és mivel ez nem szolgál semmilyen észszerű biztonsági célt, itt ez kell, hogy legyen a megoldás:
/etc/sudoers.d/10-passwd_timeout
Defaults passwd_timeout=0
Aliaszok átadása
A következő abban az esetben releváns, amikor a bash completion nem érhető el (sem teljes, sem a fent leírt csökkentett formában): Az Zsh és Bash aliaszok általában csak a parancs első szavára kerülnek kibővítésre. Ez azt jelenti, hogy az Ön aliaszai általában nem fognak kibővülni a sudo parancs futtatásakor. Az egyik módja annak, hogy a következő szó kibővüljön, ha készít egy sudo aliaszt, amely szóközzel végződik. Adja hozzá a következőt a shell beállításfájljához:
alias sudo='sudo '
A zshmisc(1) § ALIASING súgó leírja, hogy miként működik ez:
- Ha a helyettesítő szöveg szóközzel végződik, akkor a shell bemenet következő szava mindig alkalmas az aliasz kibővítésére.
Ugyanígy a bash(1) § ALIASES súgó is leírja:
- Ha az aliasz értékének utolsó karaktere egy szóköz, akkor az aliasz után következő parancsszó is ellenőrzésre kerül aliasz kibővítés szempontjából.
Parancssorcsengő hozzáadása a jelszóbekéréshez
Annak érdekében, hogy felhívja a figyelmet egy háttérben futó parancssorban megjelenő sudo promptra, a felhasználó egyszerűen kiírathat egy csengő karaktert:
/etc/sudoers.d/10-passprompt
Defaults passprompt="^G[sudo] password for %p: "
Vegye figyelembe, hogy a ^G egy tényleges csengő karakter. Például a vim szövegszerkesztőben a Ctrl+v Ctrl+g billentyűgombok sorozatával lehet beilleszteni. Ha a Ctrl+v másra van kiosztva, például beillesztésre, akkor általában a Ctrl+q használható helyette. A nano szövegszerkesztőben az Alt+v Ctrl+g billentyűgombokat lehet használni erre a célra.
Egy másik lehetőség a SUDO_PROMPT környezeti változó beállítása. Például adja hozzá a következőt a shell beállításfájljához:
export SUDO_PROMPT=$'\a[sudo] password for %p: '
Parancssoronkénti sudo letiltása
Amennyiben zavarja Önt a sudo alapértelmezett viselkedése, amely minden újonnan megnyitott parancssorban megköveteli a jelszó beírását, akkor változtassa meg a timestamp_type változónak az értékét (amely alapértelmezett állapotban tty értékre van beállítva). Be kell állítani ppid értékre, így minden azonos szülőfolyamat-azonosítóval rendelkező folyamat megosztja az 5 perces időkorlátot. Ez különösen hasznos terminál multiplexer vagy olyan grafikus felhasználói felülettel rendelkező parancssor esetében amely rendelkezik fülekkel. Egy másik lehetőség az, hogy ha Ön global értékre állítja be.
global időbélyeg használata lehetővé teszi, hogy bármely folyamat hozzáférjen az Ön sudo munkamenetéhez./etc/sudoers.d/10-timestamp_type
Defaults timestamp_type=ppid
Környezeti változók
Amennyiben Önnek sok környezeti változója van, vagy a proxy beállításait az export http_proxy="..." paranccsal exportálja, akkor a sudo parancs használatakor ezek a változók nem kerülnek át a root felhasználói fiókhoz, kivéve ha a sudo parancsot a -E/--preserve-env opcióval futtatja.
$ sudo -E pacman -Syu
Ha hozzáadja a környezeti változókat az env_keep listához, akkor a környezeti változók megőrzésének ajánlott módja:
/etc/sudoers.d/10-env_keep
Defaults env_keep += "ftp_proxy http_proxy https_proxy no_proxy"
Root jelszó
Amennyiben a felhasználók hozzáadják a targetpw (célfelhasználó, alapértelmezésben root) vagy a rootpw opciót a Defaults sorhoz a /etc/sudoers fájlban, akkor ezzel beállíthatják a sudo parancsot úgy, hogy a root jelszót kérje a felhasználói jelszó helyett:
/etc/sudoers.d/10-targetpw
Defaults targetpw
A root felhasználó jelszavának felhasználók előtti felfedés megelőzése érdekében a felfedést Ön korlátozhatja egy adott csoportra:
/etc/sudoers.d/10-targetpw
Defaults:%wheel targetpw %wheel ALL=(ALL) ALL
Root bejelentkezés letiltása
Létezik olyan eset, amikor a felhasználók le kívánják tiltani a root bejelentkezési lehetőséget. A root felhasználó hiányában a támadóknak először meg kell találniuk azt a felhasználónevet, amely sudoer-ként van beállítva, aztán ezután ki kell találniuk ennek a felhasználónak a jelszavát is. Részletekért tekintse meg például a OpenSSH#Deny című leírást.
- Legyen óvatos, mert előfordulhat, hogy Ön kizárja saját magát a rendszerből a root bejelentkezés letiltása által. A sudo nincs automatikusan telepítve, és az alapértelmezett beállítása sem jelszó nélküli root hozzáférést, sem pedig root hozzáférést a saját jelszavával nem engedélyez. Gondoskodjon arról, hogy egy felhasználó megfelelően sudoer-ként legyen beállítva mielőtt letiltja a root fiókot!
- Ha módosította a sudoers fájlt úgy, hogy alapértelmezésként a rootpw-t használja, akkor ne tiltsa le a root bejelentkezést az alábbi parancsok egyikével sem!
- Ha már kizárta Önmagát, akkor a segítségért tekintse meg a Jelszó helyreállítása című leírást.
A fiók zárolható a passwd parancs segítségével:
# passwd -l root
Egy hasonló parancs feloldja a root fiókot.
$ sudo passwd -u root
Alternatív megoldásként használhatja a következő parancsot a jelszó törlésére, majd a root fiók zárolására:
$ sudo passwd -dl root
A root bejelentkezés újbóli engedélyezése érdekében a következő parancsot kell futtatni:
$ sudo passwd root
Vegye figyelembe, hogy a fenti parancs csupán a jelszóalapú bejelentkezést tiltja le. A felhasználó továbbra is képes lehet bejelentkezni egy másik hitelesítési tokennel (például SSH kulccsal). A fiók letiltása érdekében futtassa a következő parancsot:
$ usermod --expiredate 1 root
Vészhelyzet esetén a helyreállítási prompt root jelszót fog kérni, ami lehetetlenné teszi a bejelentkezést a helyreállítási shell környezetbe. A root fiók automatikus feloldásához vészhelyzet esetén adja hozzá a SYSTEMD_SULOGIN_FORCE=1 környezeti változót a rescue.service szolgáltatáshoz egy drop-in fájl használatával:
/etc/systemd/system/rescue.service.d/SYSTEMD_SULOGIN_FORCE.conf
[Service] Environment=SYSTEMD_SULOGIN_FORCE=1
sudo -i parancsot.kdesu
A KDE alatt a kdesu használható GUI alkalmazások root jogosultságokkal történő indítására. Előfordulhat, hogy alapértelmezés szerint a kdesu az su parancsot próbálja használni még akkor is, ha a root fiók le van tiltva. Szerencsére megadható, hogy a kdesu az su helyett a sudo parancsot használja. Hozza létre/szerkessze a ~/.config/kdesurc fájlt:
[super-user-command] super-user-command=sudo
Illetve, használja a következő parancsot:
$ kwriteconfig6 --file kdesurc --group super-user-command --key super-user-command sudo
Megerősítés sudo példával
Tegyük fel, hogy Ön létrehoz három felhasználót: Az admin, devel és archie felhasználót. Az "admin" felhasználót a journalctl, systemctl, mount, kill és iptables használatához hozza létre. A "devel" felhasználót a szoftvercsomagok telepítéséhez és a konfigurációs fájlok szerkesztéséhez hozza létre. Az "archie" pedig az a felhasználó, amellyel Ön bejelentkezik az operációs rendszerbe. Annak érdekében, hogy az "archie" felhasználó újra tudja indítani, illetve le tudja állítani az operációs rendszert, és használni tudja a netctl parancsot, a következőt tennénk:
Szerkesztenünk kell a /etc/pam.d/su és a /etc/pam.d/su-l fájlokat. Követelje meg, hogy a felhasználó a wheel csoportban legyen benne, de ne tegyen bele senkit.
#%PAM-1.0 auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. auth required pam_wheel.so use_uid auth required pam_unix.so account required pam_unix.so session required pam_unix.so
Korlátozza az SSH bejelentkezést az 'ssh' csoportra. Egyedül az archie felhasználó lesz ennek a csoportnak a tagja.
# groupadd -r ssh # gpasswd -a archie ssh # echo 'AllowGroups ssh' >> /etc/ssh/sshd_config
Indítsa újra az sshd.service szolgáltatást.
Adjon hozzá felhasználókat más csoportokhoz.
# for g in power network ;do ;gpasswd -a archie $g ;done # for g in network power storage ;do ;gpasswd -a admin $g ;done
Állítsa be a beállításfájlok jogosultságait úgy, hogy a devel felhasználó szerkeszteni tudja azokat.
# chown -R devel:root /etc/{http,openvpn,cups,zsh,vim,screenrc}
/etc/sudoers.d/80-hardened
Cmnd_Alias POWER = /usr/bin/shutdown -h now, /usr/bin/halt, /usr/bin/poweroff, /usr/bin/reboot Cmnd_Alias STORAGE = /usr/bin/mount -o nosuid\,nodev\,noexec, /usr/bin/umount Cmnd_Alias SYSTEMD = /usr/bin/journalctl, /usr/bin/systemctl Cmnd_Alias KILL = /usr/bin/kill, /usr/bin/killall Cmnd_Alias PKGMAN = /usr/bin/pacman Cmnd_Alias NETWORK = /usr/bin/netctl Cmnd_Alias FIREWALL = /usr/bin/iptables, /usr/bin/ip6tables Cmnd_Alias SHELL = /usr/bin/zsh, /usr/bin/bash %power ALL = (root) NOPASSWD: POWER %network ALL = (root) NETWORK %storage ALL = (root) STORAGE root ALL = (ALL) ALL admin ALL = (root) SYSTEMD, KILL, FIREWALL devel ALL = (root) PKGMAN archie ALL = (devel) SHELL, (admin) SHELL
Ezzel a beállítással Önnek szinte soha nem lesz szüksége arra, hogy root felhasználóként jelentkezzen be.
Az archie felhasználó csatlakozni tud az otthoni Wi-Fi hálózathoz.
$ sudo netctl start home $ sudo poweroff
Az archie felhasználó nem tudja használni a netctl parancsot más felhasználóként.
$ sudo -u admin -- netctl start home
Amikor az archie felhasználónak szüksége van a journalctl parancs használatára vagy egy elszabadult folyamat leállítására, akkor átválthat arra a felhasználóra.
$ sudo -i -u devel $ sudo -i -u admin
De az archie felhasználó nem tud átváltani a root felhasználóra.
$ sudo -i -u root
Ha az archie felhasználó admin felhasználóként szeretne elindítani egy GNU Screen munkamenetet, akkor ezt így teheti meg:
$ sudo -i -u admin [admin]$ chown admin:tty `echo $TTY` [admin]$ screen
Fájlok szerkesztése
A sudo szoftvercsomag biztosítja a sudoedit parancsot (egyenértékű a sudo -e paranccsal). Ez a parancs hasznos olyan fájlok szerkesztéséhez, amelyeket egyedül a root felhasználó tud módosítani, miközben a szövegszerkesztő továbbra is normál felhasználóként fut, és az adott felhasználó beállításait használja.
Egy fájl szerkesztése érdekében, Ön állítsa be a SUDO_EDITOR változót a szövegszerkesztő nevére, majd adja át a szerkesztendő fájl nevét a sudoedit parancsnak. Például:
$ SUDO_EDITOR=vim sudoedit /etc/fájlneve
Tekintse meg az #A visudo használata című bekezdést és a sudo(8) § e man súgót azokra a lehetőségekre, hogy Ön miként állíthatja be a szövegszerkesztőt, de legyen óvatos a lehetséges biztonsági problémákkal.
Amennyiben Ön több fájlnevet ad át a sudo parancsnak, akkor egyetlen parancsmeghívással az összes átadott fájl megnyílik a szövegszerkesztőben. Ez a funkció hasznos a fájlok egyesítése szempontjából:
$ SUDO_EDITOR=vimdiff sudoedit /etc/file /etc/file.pacnew
Humoros beszólogatások engedélyezése
A számítógép felhasználók engedélyezhetik az insults easter egg lehetőséget a sudo parancsban azáltal, hogy a sudoers fájlhoz hozzáadják az alábbi sort a visudo segítségével.
/etc/sudoers.d/10-insults
Defaults insults
Helytelen jelszó megadása esetén ez lecseréli a Elnézést, próbálja újra. üzenetet humoros beszólogatásokra.
Jelszóbevitel-visszajelzés engedélyezése
Amikor Ön jelszót ad meg, alapértelmezés szerint nincs vizuális visszajelzés. Ez a viselkedés szándékosan van így a nagyobb biztonság érdekében (így senki nem látja aki a képernyőt megfigyeli, hogy hány karakteres az Ön jelszava). Azonban, ha Önnek mégis vizuális bevitelre van szüksége, akkor engedélyezheti az alábbi sor hozzáadásával:
/etc/sudoers.d/10-pwfeedback
Defaults pwfeedback
Színezett jelszóbekérés
A jelszóbekérés testreszabásához színekkel és/vagy félkövér betűtípusokkal állítsa be a SUDO_PROMPT környezeti változót a shell inicializációs fájlban, és használja a tput(1) parancsot.
Például annak érdekében, hogy a jelszóbekérés Password: formában, félkövér vastagsággal, és piros színnel jelenjen meg, használja ezt:
export SUDO_PROMPT="$(tput setaf 1 bold)Password:$(tput sgr0) "
Vagy használjon különböző színeket az alapértelmezett üzenettel a következőképpen:
export SUDO_PROMPT="$(tput setab 1 setaf 7 bold)[sudo]$(tput sgr0) $(tput setaf 6)password for$(tput sgr0) $(tput setaf 5)%p$(tput sgr0): "
Tekintse meg továbbá a Színes szövegkimenet a parancssorban és a Parancssor testreszabása című cikkeket.
U2F használata
A(z) U2F nagyszerűen használható a sudo paranccsal, mivel nyilvános helyeken hatékonyan kiküszöbölheti a váll fölötti leskelődés, kifigyelés kockázatát, miközben egy egyszerű fizikai érintéssel továbbra is tudatos ellenőrzést biztosít Önnek a felszólítás jóváhagyására.
Tekintse meg az Universal 2nd Factor#Passwordless sudo című leírást.
Írásvédett fájlokban
Előfordulhat, hogy Ön védett fájlokba szeretne írni amikor a sudo parancsot használja. A tee parancs használata lehetővé teszi az ilyen szétválasztást:
$ input stream | sudo tee --option védett_fájl_1 védett_fájl_2...
A fenti parancs akkor jó, amikor egy egyszerű >/>> átirányítás nem működik.
Vim szövegszerkesztőben
Hasonló elv hasznos lehet olyan körülmények között, amikor Ön elfelejtette a Vim szövegszerkesztőt sudo paranccsal indítani egy másik felhasználó tulajdonában lévő fájl szerkesztésekor. Ebben az esetben a fájl mentéséhez a következőt teheti a Vim szövegszerkesztőben:
:w !sudo tee %
Ezt hozzáadhatja a ~/.vimrc fájlhoz annak érdekében, hogy ezt a trükköt könnyen használhatóvá tegye a :w!! hozzárendeléssel parancs módban:
~/.vimrc
" Allow saving of files as sudo when I forgot to start vim using sudo cmap w!! w !sudo tee > /dev/null %
A > /dev/null rész kifejezetten eldobja a szabványos kimenetet, mivel nincs szükségünk arra, hogy bármit is továbbadjunk egy másik csővezérelt parancsnak.
Részletesebb magyarázat arról, hogy pontosan hogyan és miért működik ez, megtalálható a Hogyan működik a vim "írás sudo paranccsal" trükk? című cikkben a StackOverflow weboldalon.
A sudo-rs parancs használata a sudo szoftvercsomag nélkül
Ön használhatja a sudo-rs parancsot önálló helyettesítőként a sudo parancs helyett, anélkül hogy szüksége lenne a sudo szoftvercsomag feltelepítésére.
A sudo parancs [https://gitlab.archlinux.org/archlinux/packaging/packages/sudo/-/blob/main/sudo.pam alapértelmezett be
állítása] alapján hozza létre a /etc/pam.d/sudo fájlt.
Továbbá, hozza létre a /etc/pam.d/sudo-i fájlt a sudo -i számára:
# ln -s /etc/pam.d/sudo /etc/pam.d/sudo-i
Hozza létre vagy a már meglévő /etc/sudo-rs/config.toml fájlt szerkessze:
/etc/sudo-rs/config.toml
[defaults] askpass = false timeout = 15
A sudo-rs parancs támogatja mind a /etc/sudoers, mind a /etc/sudoers-rs fájlt, és ha létezik a fájl, akkor az utóbbit használja.
Opcionálisan, Ön lecserélheti a sudo parancsot sudo-rs parancsra, amennyiben szimbolikus linket hoz létre egy magasabb prioritású PATH könyvtárból:
# ln -s /usr/bin/sudo-rs /usr/local/bin/sudo