Někdy v nedávné historii začali sci-fi nerdi každoroční oslavu všeho Star Wars 4. května slovní hříčka o požehnání Jediů:"Ať je Síla s tebou." Ačkoli většina uživatelů Linuxu pravděpodobně nejsou Jediové, stále mají způsoby, jak využít sílu. Film by samozřejmě nemusel být tak vzrušující, kdyby Yoda jednoduše řekl Lukovi, aby napsal man X-Wing fighter nebo lidská síla . Nebo kdyby řekl:„RTFM“ (přečtěte si, samozřejmě, Force Manual).
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Mnoho příkazů Linuxu má -f možnost, což znamená, uhodli jste, síla! Někdy, když spustíte příkaz, selže nebo vás vyzve k dodatečnému zadání. Může to být snaha chránit soubory, které se pokoušíte změnit, nebo informovat uživatele, že zařízení je zaneprázdněno nebo že soubor již existuje.
Pokud nechcete být obtěžováni výzvami nebo vás nezajímají chyby, použijte sílu!
Uvědomte si, že použití volby síly příkazu k potlačení těchto ochran je obecně destruktivní. Proto musí uživatel věnovat zvýšenou pozornost a mít jistotu, že ví, co dělá. Použití síly může mít následky!
Následují čtyři linuxové příkazy s možností force a stručným popisem toho, jak a proč byste ji mohli chtít používat.
cp
cp příkaz je zkratka pro kopírování – používá se ke kopírování (nebo duplikování) souboru nebo adresáře. Manuálová stránka popisuje volbu síly pro cp jako:
-f, --force
pokud existující cílový soubor nelze otevřít, odeberte jej
a zkuste to znovu
Tento příklad je pro případ, kdy pracujete se soubory pouze pro čtení:
[alan@workstation ~]$ ls -l
celkem 8
-rw-rw---- 1 alan alan 13. května 1 12:24 Hoth
-r--r ----- 1 alan alan 14. května 1 12:23 Naboo
[alan@workstation ~]$ kočka Hoth Naboo
Icy Planet
Zelená planeta
Pokud chcete zkopírovat soubor s názvem Hoth do Naboo , cp příkaz to nedovolí od Naboo je pouze pro čtení:
[alan@workstation ~]$ cp Hoth Naboo
cp:nelze vytvořit běžný soubor 'Naboo':Oprávnění odepřeno
Ale pomocí síly, cp nevyzve. Obsah a oprávnění Hoth budou okamžitě zkopírovány do Naboo :
[alan@workstation ~]$ cp -f Hoth Naboo
[alan@workstation ~]$ kočka Hoth Naboo
Icy Planet
Icy Planet
[alan@workstation ~]$ ls -l
celkem 8
-rw-rw---- 1 alan alan 12. května 1 12:32 Hoth
-rw-rw- --- 1 alan alan 12. května 1 12:38 Naboo
Ach ne! Doufám, že na Naboo mají zimní vybavení.
ln
Tlačítko ln příkaz se používá k vytváření odkazů mezi soubory. Stránka manuál popisuje možnost vynutit pro ln jako:
-f, --force
odebrat existující cílové soubory
Předpokládejme, že princezna Leia spravuje aplikační server Java a má adresář, kde jsou uloženy všechny verze Java. Zde je příklad:
leia@workstation:/usr/lib/java$ ls -lt
celkem 28
lrwxrwxrwx 1 leia leia 12. března 5 2018 jdk -> jdk1.8.0_162r-xr x 8 leia leia 4096 5. března 2018 jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 28. srpna 2017 jdk1.8.0_144
Jak vidíte, existuje několik verzí Java Development Kit (JDK) a symbolický odkaz ukazující na nejnovější. K instalaci nových verzí JDK používá skript s následujícími příkazy. Nebude to však fungovat bez možnosti force nebo pokud ji nespustí uživatel root:
tar xvzmf jdk1.8.0_181.tar.gz -C jdk1.8.0_181/
ln -vs jdk1.8.0_181 jdk
tar příkaz rozbalí soubor .gz do zadaného adresáře, ale ln příkazu se nepodaří upgradovat odkaz, protože jeden již existuje. Výsledkem bude, že odkaz již neukazuje na nejnovější JDK:
leia@workstation:/usr/lib/java$ ln -vs jdk1.8.0_181 jdk
ln:nepodařilo se vytvořit symbolický odkaz 'jdk/jdk1.8.0_181':Soubor existuje
leia@ pracovní stanice:/usr/lib/java$ ls -lt
celkem 28
drwxr-x--- 2 leia leia 4096 květen 1 15:44 jdk1.8.0_181
lrwxrwxrwx 1 1 leia leia 5. března 2018 jdk -> jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 5. března 2018 jdk1.8.0_162
drwxr-xr-x 8 018 20.4 dwxr-xr-x 8 017 20.1.4
Dokáže vynutit ln pro správnou aktualizaci odkazu předáním možnosti vynutit a jedné další, -n . -n je potřeba, protože odkaz ukazuje na adresář. Nyní odkaz opět ukazuje na nejnovější JDK:
leia@workstation:/usr/lib/java$ ln -vsnf jdk1.8.0_181 jdk
'jdk' -> 'jdk1.8.0_181'
leia@workstation:/usr/lib/ java$ ls -lt
celkem 28
lrwxrwxrwx 1 leia leia 12. května 1 16:13 jdk -> jdk1.8.0_181
drwxr-x--- 2 leia 96 1. května 5 0 44 jdk1.8.0_181
drwxr-xr-x 8 leia leia 4096 5. března 2018 jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 2014 28. srpna 28.08.Aplikaci Java lze nakonfigurovat tak, aby nalezla JDK s cestou /usr/lib/java/jdk místo toho, abyste jej museli měnit při každé aktualizaci Java.
rm
rm příkaz je zkratka pro "remove" (které často nazýváme delete, protože některé jiné operační systémy mají del příkaz pro tuto akci). Manuálová stránka popisuje volbu síly pro rm jako:
-f, --force
ignoruje neexistující soubory a argumenty, nikdy se nevyzvePokud se pokusíte smazat soubor pouze pro čtení, zobrazí se výzva rm :
[alan@workstation ~]$ ls -l
celkem 4
-r--r----- 1 alan alan 16. května 1 11:38 B-wing
[ alan@workstation ~]$ rm B-wing
rm:odstranit běžný soubor 'B-wing' chráněný proti zápisu?Musíte zadat buď y nebo n odpovězte na výzvu a povolte rm příkaz pokračovat. Pokud použijete možnost vynutit, rm nezobrazí výzvu a okamžitě smaže soubor:
[alan@workstation ~]$ rm -f B-wing
[alan@workstation ~]$ ls -l
celkem 0
[alan@workstation ~]$Nejběžnější použití síly s rm je smazat adresář. -r (rekurzivní) možnost říká rm k odstranění adresáře. V kombinaci s možností force odstraní adresář a veškerý jeho obsah bez vyzvání.
rm příkaz s určitými možnostmi může být katastrofální. V průběhu let se online fóra zaplnila vtipy a hororovými příběhy uživatelů, kteří zcela vymazali své systémy. Toto notoricky známé použití je rm -rf * . To okamžitě odstraní všechny soubory a adresáře bez jakékoli výzvy, ať je použito kdekoli.
userdel
uživatel příkaz je zkratka pro user delete, který smaže uživatele. Manuálová stránka popisuje volbu síly pro userdel jako:
-f, --force
Tato možnost vynutí odebrání uživatelského účtu, i když je
uživatel stále přihlášen. Uživatele také přinutí odstranit
domovský adresář uživatele a zařazování pošty, a to i v případě, že jiný uživatel používá
stejný domovský adresář nebo pokud zařazovací soubor pošty není ve vlastnictví
zadaného uživatele. Pokud je USERGROUPS_ENAB definováno jako yes v
/etc/login.defs a pokud existuje skupina se stejným jménem jako
smazaný uživatel, bude tato skupina odstraněna, i když je
stále primární skupinou jiného uživatele.
Poznámka:Tato možnost je nebezpečná a může způsobit, že váš systém bude v
nekonzistentním stavu.Když Obi-Wan dosáhl hradu na Mustafaru, věděl, co je třeba udělat. Musel smazat Darthův uživatelský účet – ale Darth byl stále přihlášen.
[root@workstation ~]# ps -fu darth
UID PID PPID C STIME TTY TIME CMD
darth 7663 7655 0 13:28
[root@workstation ~]# userdel darth
userdel:user darth je aktuálně používán procesem 7663Vzhledem k tomu, že je Darth aktuálně přihlášen, Obi-Wan musí použít možnost vynutit uživatele . Tím se smaže uživatelský účet, i když je přihlášený.
[root@workstation ~]# userdel -f darth
userdel:user darth je aktuálně používán procesem 7663
[root@workstation ~]# finger darth
prst:darth:ne takový uživatel.
[root@workstation ~]# ps -fu darth
chyba:uživatelské jméno neexistujeJak vidíte, prst a ps příkazy potvrdí, že uživatel Darth byl smazán.
Použití síly ve skriptech shell
Mnoho dalších příkazů má možnost síly. Síla na jednom místě je velmi užitečná ve skriptech shellu. Vzhledem k tomu, že v úlohách cron a dalších automatizovaných operacích používáme skripty, je velmi důležité vyhýbat se jakýmkoli výzvám, jinak se tyto automatizované procesy nedokončí.
Doufám, že čtyři příklady, které jsem sdílel výše, vám pomohou pochopit, jak mohou určité okolnosti vyžadovat použití síly. Měli byste dobře rozumět možnosti force při použití na příkazovém řádku nebo při vytváření automatizačních skriptů. Jeho zneužití může mít zničující účinky – někdy v celé vaší infrastruktuře, a to nejen na jednom počítači.
Linux