È una cattiva pratica impostare la shell di root su qualcosa di diverso da quello predefinito?


16

Una volta un mio amico (che è un utente esperto di Unix / Linux) mi ha detto che impostare la shell di root su qualcosa di diverso da sh (cioè bash o zsh) potrebbe creare problemi, perché alcuni script potrebbero supporre che la shell sia sh e fare qualcosa di strano .

Tuttavia, penso che Ubuntu abbia la shell root predefinita impostata su bash e Gentoo usa anche bash. Qualcuno può sballare il mito?

Risposte:


12

Sì. Se il sistema non funziona durante l'avvio, è possibile accedere alla shell di root. Se hai separato / usr alcune shell potrebbero non avviarsi correttamente.

Consiglio di creare un account toor(uid 0, gid 0) con shell non standard mentre si lascia root con shell predefinita.


Questo è successo a me quando ho aggiornato da FBSD 7.2 a 8.0 e ho dimenticato di ricostruire bash. Ho avviato in modalità utente singolo per risolvere, ma ha funzionato solo perché /bin/shera ancora collegato al FBSDfork di bournee non bash.
gvkv,

solo per chiarire le cose, se installo dire zshe in qualche modo /usrè danneggiato avrò problemi? ma il mio sistema ha /bin/shindicando /bin/bashe bashper sé, perché non sarebbe shessere colpiti?
phunehehe,

1
I valori predefiniti per il root "garantiscono" l'avvio del sistema: la guida all'aggiornamento si occuperà di poter accedere almeno al root. Tuttavia, potrebbe non essere il caso di nient'altro. La soluzione è duplicare l'account di root con toor con shell non predefinita per l'uso quotidiano e mantenere il root così com'è.
Maciej Piechotka,

1
zshnon dovrebbe esserci /usr/bin/se è stato installato in modo errato. tutte le conchiglie dovrebbero essere in/bin
xenoterracide il

1
@xenoterracide: zsh su Gentoo è attivo /binma conserva alcuni file /usr/share. Inoltre ho affermato chiaramente che il problema si verifica durante il login durante l'avvio (quando alcuni servizi falliscono).
Maciej Piechotka,

7

Non dovrebbe essere un problema.

I file di script di shell codificano esplicitamente con quale shell vengono eseguiti. È codificato nella prima riga o altri programmi o script eseguono una shell specifica e forniscono lo script della shell come argomento.

L'unico programma che mi viene in mente che utilizza le informazioni sulla shell dell'account utente (oltre al processo di accesso) è procmail. Davvero divertente se il tuo utente ha impostato come shell / bin / false sul server di posta ... Ma di solito non esegui procmail come root.

Un altro candidato sarebbero le linee nel crontab di radice. Non so quale sia la politica di Crond quale shell utilizzare.


$ SHELL viene solitamente impostato su / bin / sh dal crondaemon all'avvio.
echox

3

Gli script scritti per la shell bourne verranno eseguiti per lo più contro BASH o ZSH o $ foo senza problemi.

Su molti sistemi Linux non è installato sh originale, invece è spesso un collegamento simbolico a / bin / bash.

Se alcuni script "ipotizzano" che la shell sia esplicitamente sh, dovrebbero essere riscritti. Esiste il meccanismo shebang per scegliere quale interprete è necessario per la tua sceneggiatura. Se è sh, lo script dovrebbe includere#!/bin/sh come prima riga.

L'impostazione della shell predefinita non dovrebbe essere rilevante in questo contesto.


2

Non penso che cambiare la shell di root causerebbe problemi. Mi sembra di ricordare alcuni unices (forse alcune varianti di BSD?) Che hanno tcsh come shell predefinita per root.

Gli accessi root sono comunque rari. Normalmente, accedi al tuo account e poi su o sudo su root.

Ciò che conta è che la shell di root dovrebbe avere il minor numero di dipendenze possibile in modo da essere utilizzabile in un contesto di riparazione del sistema. Ad esempio, è una buona idea avere una shell radice collegata staticamente; alcune distribuzioni forniscono una versione staticamente collegata di bash o zsh o sash (una shell con molte utility standard integrate). Tuttavia, questo non è così importante se il tuo sistema può essere facilmente avviato da un CD di ripristino o da un'unità USB.


Per il motivo della dipendenza penso che abbia senso lasciare la shell così com'è, così che una grande modifica del sistema (come un aggiornamento) non rovinerà le cose. Sono d'accordo che è facile da riparare con un CD o USB dal vivo, ma non dovrei doverlo riparare in primo luogo.
phunehehe,

1

La shell di accesso di un utente non influisce sul processo di avvio. Puoi impostare questa shell su quello che vuoi. Non tutti i sistemi hanno bash e funzionano bene. Inoltre, se è /usr/bin/zshstato installato in modo errato, dovrebbero essere presenti tutte le shell di sistema /bin. Non dovresti, tuttavia, cambiare /bin/shper indicare qualcosa di diverso da quello predefinito (a meno che tu non sappia cosa stai facendo) come molti script hanno #!/bin/shche di solito punta a bash, quando dovrebbero avere #!/bin/bashperché usano basismi e altri comportamenti che non lo faranno lavorare su zsho dash.


oops mi dispiace di aver fatto un errore, in realtà sul mio computer entrambi bashe zshsono in/bin
phunehehe

0

Ho bash come shell predefinita per root. Ho usato zsh per qualche tempo, ma poi sono tornato a bash . Quale shell usi, non importa molto.

È solo un problema, se più di una persona ha accesso come root. In tal caso è possibile selezionare un "comune denominatore" che di solito è bash, poiché si tratta della shell più utilizzata.


0

Per quanto riguarda Solaris / illumos, la menzione Mini-FAQ di Solaris Root Shell

Alcuni amministratori di sistema sconsigliano ancora di modificare la shell di root sui
sistemi Solaris. Chiedi perché e ti potrebbe essere detto che root ha bisogno di una
shell collegata staticamente che non dipende dalle
librerie dinamiche in / usr / lib. Questo era vero in passato, ma non è
necessariamente il caso oggi. Solaris, se configurato correttamente, è come qualsiasi altra versione di Unix e può supportare qualsiasi shell definita, per root o qualsiasi altro account.

Quindi, sì, se stai usando Solaris o Illumos, è bene usare shell diverse da sh.

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.