GNU/Linux >> Znalost Linux >  >> Linux

Jak najít soubory na základě jejich oprávnění v Linuxu

Hledání souborů z příkazového řádku v Linuxu je mnohem jednodušší a rychlejší. Již jsme diskutovali o tom, jak najít a seřadit soubory podle data a času přístupu a úprav . Dnes uvidíme, jak najít soubory na základě jejich oprávnění v operačních systémech Linux a Unix.

Pro účely této příručky vytvořím tři soubory a to file1 , file2 a file3 s oprávněním 777 , 766 , 655 respektive ve složce s názvem ostechnix .

$ mkdir ostechnix && cd ostechnix/
$ install -b -m 777 /dev/null file1
$ install -b -m 766 /dev/null file2
$ install -b -m 655 /dev/null file3

Nyní najdeme soubory na základě jejich oprávnění.

Najít soubory na základě jejich oprávnění

Typická syntaxe pro vyhledání souborů na základě jejich oprávnění je:

$ find -perm mode

MODE může být buď s numerickým nebo osmičková oprávnění (například 777 , 666 , ... atd.) nebo symbolické oprávnění (jako u=x , a=r+x ).

Můžeme zadat MODE třemi různými způsoby, jak je uvedeno níže.

  1. Pokud zadáme režim bez jakýchkoli předpon, najde soubory přesně oprávnění.
  2. Pokud použijeme "-" prefix with mode, alespoň soubory by měly mít dané oprávnění, nikoli přesné oprávnění.
  3. Pokud použijeme "/" prefix, vlastník, skupina nebo někdo jiný by měl mít oprávnění k souboru.

Dovolte mi to vysvětlit na několika příkladech, abyste lépe porozuměli.

Nejprve uvidíme hledání souborů na základě číselných oprávnění.

Najít soubory na základě jejich číselných (osmičkových) oprávnění

Nyní mi dovolte spustit následující příkaz:

$ find -perm 777

Tento příkaz najde soubory s oprávněním přesně 777 v aktuálním adresáři.

Jak vidíte ve výše uvedeném výstupu, soubor1 je jediný, který má přesné oprávnění 777 .

Nyní použijme "-" prefix a uvidíte, co se stane.

$ find -perm -766

Jak vidíte, výše uvedený příkaz zobrazí dva soubory. Nastavili jsme 766 oprávnění k file2 , ale tento příkaz zobrazí dva soubory, proč? Protože zde jsme použili "-" předpona. To znamená, že tento příkaz najde všechny soubory, kde má vlastník souboru oprávnění ke čtení/zápisu/spouštění, členové skupiny souborů mají oprávnění ke čtení/zápisu a vše ostatní má také oprávnění ke čtení/zápisu. V našem případě file1 a file2 splnili tato kritéria. Jinými slovy, soubory nemusí mít přesné oprávnění 766. Zobrazí všechny soubory, které spadají pod toto 766 oprávnění.

Dále použijeme "/" prefix a uvidíte, co se stane.

$ find -perm /222

Výše uvedený příkaz najde soubory, do kterých může někdo zapisovat (buď jejich vlastník, nebo jejich skupina nebo kdokoli jiný). Zde je další příklad.

$ find -perm /220

Tento příkaz najde soubory, do kterých může zapisovat jejich vlastník nebo jejich skupina. To znamená, že soubory nemusí být zapisovatelné od vlastníka i skupiny být spárován; buď udělá.

Ale pokud spustíte stejný příkaz s "-" prefix, uvidíte pouze soubory, do kterých může zapisovat vlastník i skupina.

$ find -perm -220

Následující snímek obrazovky vám ukáže rozdíl mezi těmito dvěma předponami.

Jak jsem již řekl, můžeme také použít symbolický zápis k reprezentaci oprávnění souboru.

Najít soubory na základě jejich oprávnění pomocí symbolického zápisu

V následujících příkladech používáme symbolické zápisy jako u (pro uživatele), g (skupina), o (ostatní). Můžeme také použít písmeno a reprezentovat všechny tři tyto kategorie. Oprávnění lze zadat pomocí písmen r (přečíst), w (zápis), x (spustitelný).

Chcete-li například najít jakýkoli soubor se skupinou write povolení, spusťte:

$ find -perm -g=w

Jak vidíte ve výše uvedeném příkladu, file1 a file2 mít skupinu zápis povolení. Vezměte prosím na vědomí, že můžete použít buď "=" nebo "+" operátory pro symbolický zápis. Například následující dva příkazy udělají totéž.

$ find -perm -g=w
$ find -perm -g+w

Chcete-li najít jakýkoli soubor, do kterého může vlastník souboru zapisovat, spusťte:

$ find -perm -u=w

Chcete-li najít jakýkoli soubor, do kterého mohou zapisovat všichni (vlastník souboru, skupina a všichni ostatní), spusťte:

$ find -perm -a=w

Chcete-li najít soubory, do kterých lze zapisovat oběma jejich vlastníka a jejich skupina , použijte tento příkaz:

$ find -perm -g+w,u+w

Výše uvedený příkaz je ekvivalentem "find -perm -220" příkaz.

Chcete-li najít soubory, do kterých lze zapisovat obě jejich vlastníka nebo jejich skupina , spustit:

$ find -perm /u+w,g+w

Nebo,

$ find -perm /u=w,g=w

Tyto dva příkazy dělají stejnou práci jako "find -perm /220" příkaz.

Další podrobnosti naleznete na manuálových stránkách.

$ man find

Zkontrolujte také alternativy manuálových stránek se dozvíte více zjednodušených příkladů libovolného příkazu Linuxu.

Související čtení:

  • Jak najít největší a nejmenší adresáře a soubory v Linuxu
  • Jak najít nejstarší soubor ve stromu adresářů v systému Linux
  • Jak najít soubory větší nebo menší než X v systému Linux

Linux
  1. Jak najít duplicitní soubory v Linuxu

  2. Jak třídit soubory podle jejich oprávnění pomocí Ls?

  3. Jak najít soubory pomocí příkazu fd v Linuxu

  1. Jak najít soubory upravené za posledních 30 dní v Linuxu?

  2. Jak používat Linuxový příkaz find k hledání souborů

  3. Jak najít všechny řídké soubory v Linuxu

  1. Jak najít soubory s oprávněními SUID a SGID v Linuxu

  2. Kopírování souborů na základě data modifikace v Linuxu

  3. Jak vypsat všechny soubory oddílu na linuxu?