GNU/Linux >> Linux Esercitazione >  >> Linux

Cosa determina quali comandi Linux richiedono l'accesso root?

È principalmente una questione di ciò che lo strumento o il programma fa . Tenendo presente che un non superutente può toccare solo i file di cui è proprietario o a cui ha accesso, qualsiasi strumento che deve essere in grado di mettere le dita in tutto richiederà l'accesso come superutente per fare ciò che fa. Un rapido esempio di cose che potrebbero richiedere l'accesso come superutente include, ma non è limitato a:

  • Apertura di un socket TCP in ascolto su una porta inferiore a 1024
  • Modificare le configurazioni di sistema (ad es. qualsiasi cosa in /etc )
  • Aggiunta di nuove librerie accessibili a livello globale (/lib e /usr/lib ) o binari (/bin , /usr/bin )
  • Toccare qualsiasi file non di proprietà dell'utente che sta toccando che non ha una modalità sufficientemente permissiva
  • Modifica della proprietà dei file di altri utenti
  • Priorità del processo crescente (ad es. renice )
  • Avvio o arresto della maggior parte dei servizi
  • Configurazione del kernel (ad es. regolazione dello swappiness)
  • Regolazione delle quote del filesystem
  • Scrittura su dischi "pieni" (la maggior parte dei filesystem riserva spazio per l'utente root)
  • Eseguire azioni come altri utenti

In Linux, i privilegi di root sono stati a un certo punto divisi in "capacità", quindi puoi ottenere un elenco completo dei privilegi speciali di root esaminando quella documentazione:man 7 capabilities .

Per rispondere alla tua domanda, un comando richiederà l'esecuzione come root quando necessita di uno di questi privilegi e il suo eseguibile non script non ha la capacità pertinente impostata nei suoi metadati di file (ad esempio, se uno script python richiede la capacità, allora la capacità dovrebbe essere nell'interprete python specificato nella riga shebang).

Nota che alcuni comandi che richiedono l'accesso root non hanno bisogno di qualcosa come sudo perché hanno il bit SUID impostato nel loro eseguibile. Questo bit fa sì che l'eseguibile venga eseguito come proprietario (tipicamente root) quando eseguito da chiunque abbia accesso all'esecuzione. Un esempio è sudo in quanto cambiare utente è un'azione privilegiata che deve eseguire.

EDIT:Prendo atto dalla tua domanda che potresti avere l'idea di poter determinare se un comando avrà bisogno dell'accesso root prima di eseguirlo. Non è così. Un programma a volte può richiedere i privilegi di root e altre volte no, e questa potrebbe essere una decisione presa dal programma a causa dei dati forniti durante il runtime. Prendi ad esempio, chiamando vim , proprio così senza argomenti, e poi attraverso una serie di pressioni di tasti e incolla, dicendogli di scrivere qualcosa su un file che non ha il permesso di scrivere, o forse eseguendo un altro comando che a sua volta richiederà i privilegi di root. Nulla nel comando prima dell'esecuzione potrebbe indicare che alla fine richiederebbe l'accesso come root. Questo è qualcosa che può essere determinato solo nel momento in cui cerca di fare qualcosa che lo richiede.

Ad ogni modo, qui ci sono pochissimi esempi dalla manpage referenziata dei privilegi di root:

  • Fai manipolazioni arbitrarie degli UID di processo (setuid(2), setreuid(2), setresuid(2), setfsuid(2));
  • Aggira i controlli di autorizzazione di lettura, scrittura ed esecuzione dei file. (DAC è l'abbreviazione di "controllo di accesso discrezionale".)
  • Aggira i controlli di autorizzazione per l'invio di segnali (vedi kill(2)). Questo include l'uso dell'operazione ioctl(2) KDSIGACCEPT.
  • Esegue varie operazioni relative alla rete:
    • configurazione dell'interfaccia;
    • amministrazione del firewall IP, mascheramento e contabilità;
    • modificare le tabelle di instradamento;
  • Associa un socket alle porte privilegiate del dominio Internet (numeri di porta inferiori a 1024).
  • Carica e scarica i moduli del kernel (vedi init_module(2) e delete_module(2));
  • Imposta l'orologio di sistema (settimeofday(2), sti(2), adjtimex(2)); impostare l'orologio (hardware) in tempo reale.
  • Esegui una serie di operazioni di amministrazione del sistema, tra cui:quotactl(2), mount(2), umount(2), swapon(2), swapoff(2), sethostname(2) e setdomainname(2);
  • Usa reboot(2) e kexec_load(2).
  • Usa chroot(2).
  • Aumenta il valore nice del processo (nice(2), setpriority(2)) e cambia il valore nice per processi arbitrari;

Linux
  1. Comandi di accesso ai file in Linux:trova, ordina, testa, coda

  2. Qual è lo scopo del gruppo "wheel" in Linux

  3. I comandi della shell sono scritti in quale lingua?

  4. Scopri quale dispositivo /dev/root rappresenta in Linux?

  5. Consenti all'utente root di Linux l'accesso root mysql senza password

Linux quale comando

Cos'è umask in Linux?

Comandi Linux usati frequentemente dagli amministratori di sistema Linux – Parte 1

Quattro comandi Linux completamente inutili

Limita all'utente l'esecuzione di comandi selettivi (Linux)

Qual è l'equivalente di Active Directory su Linux