GNU/Linux >> Znalost Linux >  >> Linux

Co určuje, které příkazy Linuxu vyžadují přístup root?

Jde hlavně o to, co daný nástroj nebo program dělá . Mějte na paměti, že uživatel, který není superuživatel, se může dotýkat pouze souborů, které vlastní nebo k nim má přístup, jakéhokoli nástroje, který musí mít možnost dostat prsty do všeho bude vyžadovat přístup superuživatele, aby mohl provést to, co dělá. Rychlý příklad Věcí, které mohou vyžadovat přístup superuživatele, zahrnují, ale nejsou omezeny na:

  • Otevření naslouchajícího soketu TCP na portu pod 1024
  • Změna konfigurací systému (např. cokoli v /etc )
  • Přidání nových globálně dostupných knihoven (/lib a /usr/lib ) nebo binární soubory (/bin , /usr/bin )
  • Dotýkat se všech souborů, které nevlastní uživatel, který se dotýká a které nemají dostatečně tolerantní režim
  • Změna vlastnictví souborů ostatních uživatelů
  • Escelace priorit procesu (např. renice )
  • Spuštění nebo zastavení většiny služeb
  • Konfigurace jádra (např. úprava swappiness)
  • Úprava kvót souborového systému
  • Zápis na "plné" disky (většina souborových systémů vyhradí určité místo pro uživatele root)
  • Provádění akcí jako ostatní uživatelé

V linuxu byla práva roota v jednom bodě rozdělena do "schopností", takže úplný seznam speciálních práv roota můžete získat nahlédnutím do této dokumentace:man 7 capabilities .

Abych odpověděl na vaši otázku, příkaz bude vyžadovat spuštění jako root, když potřebuje jedno z těchto oprávnění, a jeho neskriptový spustitelný soubor nemá v metadatech souboru nastavenou příslušnou schopnost (např. pokud python skript vyžaduje tuto schopnost, pak schopnost by musel být v interpretu pythonu specifikovaném v řádku shebang).

Pamatujte, že některé příkazy, které vyžadují přístup root, nepotřebují něco jako sudo protože mají ve spustitelném souboru nastaven bit SUID. Tento bit způsobí, že se spustitelný soubor spustí jako vlastník (obvykle root), když jej spustí kdokoli, kdo má přístup ke spuštění. Příkladem je sudo sama o sobě jako změna uživatelů je privilegovaná akce, kterou musí udělat.

EDIT:Z vaší otázky jsem si všiml, že můžete mít představu, že před spuštěním můžete určit, zda příkaz bude potřebovat přístup root. Není tomu tak. Program může někdy vyžadovat oprávnění root a jindy ne, a to může být rozhodnutí učiněné programem kvůli datům, která poskytuje během běhu. Vezměte si například volání vim , jen tak bez argumentů, a pak pomocí série stisknutí kláves a vkládání, sdělující mu, aby zapsal něco do souboru, ke kterému nemá oprávnění zapisovat, nebo možná provedení jiného příkazu, který sám bude vyžadovat oprávnění root. Nic o příkazu před provedením nemůže naznačovat, že by nakonec vyžadoval přístup root. To je něco, co lze určit pouze v okamžiku, kdy se pokusí udělat něco, co to vyžaduje.

Každopádně zde je velmi málo příkladů z odkazované manuálové stránky práv uživatele root:

  • Provádět libovolné manipulace s UID procesu (setuid(2), setreuid(2), setresuid(2), setfsuid(2));
  • Vynechat čtení, zápis a provádění kontrol oprávnění. (DAC je zkratka pro „kontrola přístupu podle vlastního uvážení“.)
  • Obejít kontroly oprávnění pro odesílání signálů (viz kill(2)). To zahrnuje použití operace ioctl(2) KDSIGACCEPT.
  • Provádět různé operace související se sítí:
    • konfiguraci rozhraní;
    • správa IP brány firewall, maskování a účtování;
    • upravit směrovací tabulky;
  • Připojte soket k privilegovaným portům internetové domény (čísla portů menší než 1024).
  • Načíst a uvolnit moduly jádra (viz init_module(2) a delete_module(2));
  • Nastavit systémové hodiny (settimeofday(2), stime(2), adjtimex(2)); nastavit (hardwarové) hodiny reálného času.
  • Provádějte řadu operací správy systému včetně:quotectl(2), mount(2), umount(2), swapon(2), swapoff(2), sethostname(2) a setdomainname(2);
  • li>
  • Použijte reboot(2) a kexec_load(2).
  • Použijte chroot(2).
  • Zvyšte hodnotu nice procesu (nice(2), setpriority(2)) a změňte hodnotu nice pro libovolné procesy;

Linux
  1. Konfigurace sudo pro povolení příkazů pro uživatele bez oprávnění root v systému Linux

  2. Jaký je účel skupiny „wheel“ v Linuxu

  3. V jakém jazyce jsou psány příkazy shellu?

  1. Co je uživatel Linuxu?

  2. Zjistěte, jaké zařízení /dev/root představuje v Linuxu?

  3. Linux:produktivní správci systému bez root (zabezpečení duševního vlastnictví)?

  1. 5 chyb začátečníků v Linuxu

  2. Co je Umask v Linuxu

  3. Linux – jak šifrovat Linux (debian 8) po instalaci a jaké jsou důsledky?