C'è un modo per smettere di dover scrivere 'sudo' per ogni piccola cosa in Linux?


59

Presto eseguirò una buona parte del lavoro di PHP e mi interessa apprendere il RoR, quindi ho installato Linux Mint 12 nel mio VirtualBox.

L'aspetto più frustrante dello switch, finora, ha avuto a che fare con le autorizzazioni di Linux. Sembra che non riesca a fare nulla di utile (come, diciamo, copiare il tarball di Symfony2 dalla mia directory dei download nella mia radice del documento ed estrarlo) senza posare come root tramite sudo.

C'è un modo semplice per dire a Linux di darmi l'accesso illimitato a certe directory senza semplicemente spalancare tutte le loro autorizzazioni?


1
Molte distribuzioni avranno un gruppo abilitato a modificare la configurazione per varie utilità di sistema. Mettiti in quel gruppo e apri una nuova shell.
dmckee,

Sarebbe meglio puntare invece la radice del documento a qualcosa nella mia directory Home?

3
Il "sudo" è uno di quei comandi ridicoli che viene usato e abusato troppo frequentemente dai nuovi utenti Linux. Spesso vedrò tutorial sul web in cui 15 comandi di seguito useranno sudo? In situazioni normali, non dovresti avere bisogno di permessi speciali quando sei loggato come utente normale (consigliato). Ero in una società in cui tutto ciò che facevano usava il sudo. Quando ho provato a vietarlo (per motivi di sicurezza), si sono lamentati. Dopo aver esaminato il file di configurazione sudo criptico, ho visto un difetto (come sempre) che mi ha permesso di "rootare" il sistema da quell'utente normale. Il Sudo è estremamente pericoloso !!
Jeach

Risposte:


77

Mi vengono in mente due opzioni:

  1. Possiedi la directory che desideri utilizzando chown:

    sudo chown your_username directory 
    

    (sostituisci nome_utente con nome utente e directory con la directory desiderata.)

  2. L'altra cosa che puoi fare è lavorare come root fintanto che SAPI COSA STAI FACENDO . Per usare root fai:

    sudo -s
    

    e quindi puoi fare qualsiasi cosa senza dover digitare sudoprima di ogni comando.


"L'altra cosa che puoi fare è lavorare come root fintanto che SAPI COSA STAI FACENDO. Usare root do ..." - Bene, ciò annulla la migliore pratica che le distribuzioni e la comunità della sicurezza hanno cercato di insegnare agli utenti. Correlati: "qual è il principio del privilegio minimo" .

16

In generale, lavora sempre come tuo utente a meno che tu non stia facendo qualcosa con un impatto a livello di sistema.

Se ci sono file che vuoi mettere sul tuo server web, lavora come tuo utente e poi usa sudoper rilasciare i file in posizione nell'area di servizio web del tuo filesystem. Di solito, questo verrebbe eseguito da uno script di installazione e si eseguirà qualcosa di simile sudo -u webmaster install-webserver-fileso migliore sudo -u webmaster git update(o il sistema di controllo della versione di propria scelta).

Se stai lavorando su un server di sviluppo e desideri che i tuoi file siano immediatamente accessibili, crea una directory nell'area del web server e rendila di proprietà o almeno scrivibile da te. Dopo quell'operazione unica ( sudo chown …o sudo -u webmaster setfacl …), non avrai bisogno di privilegi elevati per le operazioni quotidiane.

A volte è conveniente consentire a più utenti di scrivere in una directory o altrimenti avere autorizzazioni diverse per più utenti diversi dal proprietario o per più gruppi. Gli elenchi di controllo degli accessi ti danno questa possibilità. Vedere Problemi di autorizzazioni per la directory condivisa su un server o problema di autorizzazione degli script di backup .


3

Sì, accedi come root che ti dà il controllo degli accessi super user.
Lo stesso concetto in Windows, puoi accedere al tuo terminale usando l'amministratore.


Mi rendo conto che stai rispondendo direttamente alla domanda del poster originale. Ma questo è un cattivo consiglio, che spiega il voto negativo.
bignose

Come se lo collegassi a Windows.
LeWoody,

3

È sempre stata la mia ideologia che, come utente, puoi fare quello che vuoi su Linux e per tutto il resto, c'è sempre sudo. sudopermette di eseguire poche cose come alcuni altri utenti, il più delle volte casi rootdi amministrazione del sistema. sudoè stata una risorsa di vantaggio maggiore delegare alcuni dei miei compiti e privilegi di routine come utente (root) ad altri e aiutarmi a gestire meglio il mio tempo e altri senza elevare i privilegi oltre ciò che è richiesto. Allo stesso tempo, è la mia fiducia su di loro che mantiene le loro voci presenti insudoersfile di configurazione. Non sono sicuro che possa essere correlato, ma quello che posso dire è che, sudo ti offre una migliore prospettiva di sicurezza di chi tutti e cosa possono fare con i loro privilegi di fiducia. Anche se qualcosa va storto, sono responsabili. (Posso sempre fare qualche subdolo picco con le informazioni di registro sudoers per trovare anche i colpevoli). I miei ragazzi mi hanno sempre espresso la loro preoccupazione per il fatto che devono digitare sudo per tutto ciò che volevano fare con privilegi elevati in ambiente Linux. Qui ho trovato anche la stessa domanda.

Per vedere le soluzioni e la mia ricerca per trovare le alternative, mi sono imbattuto in controlli di accesso basati sulle risorseRBAC ma in un'altra terra avventurosa Solariscon strumenti come pfexececc. Questo approccio è migliore perché questo manterrebbe i privilegi degli utenti già elevati e di cui mi fiderei sulla coscienza e la prontezza di ciò che gli amministratori di sistema vorrebbero fare con i loro privilegi.

Considerando le soluzioni disponibili di RBAC e le sue implementazioni nel mondo Linux, mi sono imbattuto in

SELinux http://www.ibm.com/developerworks/linux/library/l-rbac-selinux/

grsecurity http://en.wikipedia.org/wiki/Grsecurity

e mentre ci sono altre implementazioni, le prenderei in considerazione nell'ordine in cima alla lista. L'implementazione di RBAC richiede molto lavoro in un'organizzazione, specialmente quando ci sono molti utenti. L'RBAC suonerebbe una soluzione maggiore in ambienti omogenei. Tuttavia, quando ci sono installazioni Unix eterogenee nella rete e il database utente è comune, ciò potrebbe non riuscire. Poiché SELinux non è scalabile / implementato su Solaris e gli strumenti RBAC / pfexec non sono implementati su Linux. Esistono approcci diversi per fare una sola cosa. Ad esempio: http://blogs.oracle.com/darren/entry/opensolaris_rbac_vs_sudo_howto

Installazioni diverse a livello di rete potrebbero non supportare questo approccio (tuttavia openrbac potrebbe essere considerato un approccio di implementazione comune) come sudoers è un approccio host singolo o non è in grado di configurare centralmente la rete / dominio./etc/sudoersdeve essere sincronizzato ogni volta che c'è un cambiamento. Inoltre, durante l'utilizzo del file sudoers è richiesto un knowledge base, è necessario comprendere il linguaggio delle politiche della configurazione dei sudoers per non commettere errori e consentire eventuali sovvenzioni. RBAC può offrire un approccio centralizzato in una certa misura, mentre i profili di sicurezza possono essere comuni, l'aggiunta / rimozione di un utente dal ruolo assegnato può essere eseguita da un unico posto (ovvero il luogo in cui sono archiviate le informazioni utente / passwd / gruppo per il dominio come LDAP, NIS o AD). Ciò richiederebbe implicitamente anche la comprensione dei comandi richiesti per operare sul database RBAC come smexec, smmultiuser, essendo pochi.

Sudo può offrire qui un approccio più multipiattaforma che funziona su tutte le piattaforme Unix / like che offrono le funzionalità setuid. Entrambi sudoe RBACriescono a dare agli utenti non root alcuni privilegi che possono essere fatti senza fornire la rootpassword stessa. Sudo può fornire un approccio più fine / granulare basato sugli argomenti della riga di comando che può essere utilizzato durante l'esecuzione dei comandi e limitare esclusivamente a quale comando con argomenti può essere eseguito con privilegi elevati. Mentre RBAC può limitare l'uso fino ai comandi o ai binari installati ma non avere alcun controllo sugli argomenti della riga di comando. Il controllo è molto meglio e integrato nell'ambiente RBAC mentresudo, dipende dalla configurazione e anche dai vincoli di sicurezza adottati (come non concedere alla shell e in particolare agli host è consentito accedere agli altri host senza problemi). Queste sono solo alcune delle differenze che potrei citare e personalmente ho la tendenza a usare il sudo rispetto all'RBAC, sebbene con queste limitazioni potrei venire a implementare alcune soluzioni. Fino a quando tutti i problemi non verranno risolti da RBAC per migliorare il vantaggio di sudo, non credo che sudo scompaia perché è semplice.


1

Vorrei inserire la radice del documento su cui stai lavorando, in modo da avere pieno accesso ad esso.

Per evitare di dover digitare sudo ogni volta che si installa una gemma, seguire questo articolo qui: http://forums.site5.com/showthread.php?t=11954

Consiglio vivamente di installare RVM per gestire le versioni di Ruby e Rails. http://beginrescueend.com/

Ti renderà la vita molto più semplice quando trovi l'host su cui desideri distribuire la tua app utilizzando versioni diverse rispetto a quelle in cui ti sei sviluppato.


Conoscevo rvm, ma grazie per il link al forum.
Major Productions,

0

Esegui il comando

sudo su root

Ora sarai in grado di eseguire comandi come utente root. Stai attento! Qualsiasi comando eseguito sarà come utente root. Puoi seriamente fare confusione se non stai attento.

Oppure si modificano le autorizzazioni della directory per consentire all'utente di salvare e modificare i file.


4
Perché non solo sudo -s?
Sarnold,

1
O sudo -icome questo simula come shell di login. Potrebbe essere un po 'più vicino a un login root locale nativo che eseguire bash o un'altra shell tramite sudo.
Bastian Ebeling,

1
perché non solo su? Cos'è questa ossessione per sudo? Non hai bisogno di sudo. Mai.
Orione,

2
tra l'altro, non è possibile utilizzare solo suse la password di root è sconosciuta. l'aggiunta di un utente ai sudoer e l'esecuzione sudo suconsente all'utente di utilizzare la propria password utente esistente e nota per l'escalation
Luca

0

Modifica il file / etc / passwd e concedi i permessi di root all'utente "yourUserName" modificando gli ID utente e gruppo in UID 0 e GID 0:

yourUserName: 0: 0 :: / home / yourUserName: / bin / sh


2
Non raccomandare incubi di sicurezza! Questa è la pratica del peggior tipo.
Contromodalità

Sto usando questa soluzione per il mio Raspberry Pi in cui non ho altri account utente ed è collegato alla mia rete domestica
Ufuk özkanlı

0

Come sottolineato da altre risposte, la soluzione più pulita è quella di cambiare la proprietà dei file e delle directory a cui è necessario accedere. In alternativa, è possibile creare un nuovo gruppo dedicato, modificare la proprietà del gruppo dei file e delle directory in questo gruppo e impostare l'autorizzazione di scrittura del gruppo per questi file e directory. Infine, imposta il bit SGID sulle directory in modo tale che se crei un nuovo file, erediterà la proprietà del gruppo della directory contenente (ovvero il gruppo dedicato).


-1

user @ server: ~ $ sudo passwd root
[sudo] password per l'utente:
immettere una nuova password UNIX: digitare
nuovamente la nuova password UNIX:
passwd: password aggiornata correttamente
user @ server: ~ $ su
password:
root @ server: / home / user #

Quel prompt "#" non è una cosa di bellezza?

Uso "sudo" solo una volta per raggiungere la capacità

user @ server: ~ $ su
Password:
root @ server: / home / user #

per la vita del server.

Per renderlo di nuovo sicuro,

root @ server: / home / user # exit
exit
user @ server: ~ $

Gli amministratori di sistema lo fanno da anni in cui "sudo" non faceva parte della tendenza dei molli.

Quando lo fai, è tua responsabilità prenderti cura, non mio.

Ian


Che violino. Prova sudo -s. Lavoro fatto
roaima,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.