web-development-kb-pt.site

É uma má prática para definir a concha da raiz para algo diferente do padrão?

Uma vez que um amigo meu (que é um usuário experiente do Unix/Linux) me disse que definir a concha da raiz para algo diferente de SH (IE Bash ou ZSH) pode criar problemas, porque algum script pode assumir que o shell é sh e faz algo estranho .

No entanto, acho que o Ubuntu tem conjunto de shell de raiz padrão para bash, e o Gentoo usa Bash também. Alguém pode bugar o mito?

16
phunehehe

Sim. Se o sistema falhar durante a inicialização, você pode efetuar login no shell raiz. Se você tiver algumas conchas separadas/usr, não pode começar com êxito.

Eu conselho para criar conta toor (UID 0, gid 0) com shell não padrão, enquanto raiz esquerda com o shell padrão.

12
Maciej Piechotka

Não deve ser um problema.

Arquivos de script de shell codificam explicitamente qual shell eles são executados. É codificado na primeira linha ou outros programas ou scripts executam um shell específico e dão ao script de shell como argumento.

O único programa que posso pensar que usa as informações do shell da conta de usuário (além do processo de login) é o procmail. Realmente engraçado se seu usuário tiver definido como Shell/Bin/Falso no MailServer ... mas você geralmente não executa o Procmail como root.

Outro candidato seria as linhas no crontab da raiz. Eu não sei o que a política de Crond é qual shell usar.

7
maxschlepzig

Scripts escritos para a Shell Bourne irá a maior parte do tempo contra o bash ou zsh ou $ foo sem problemas.

Em muitos sistemas Linux não é possível shall original, em vez disso, é muitas vezes um link symlink contra/bin/bash.

Se alguns scripts apenas "assumirem" que a casca é explicitamente, elas devem ser reescritas. Há o mecanismo de Shebang para escolher qual intérprete sua script precisa. Se é o sh, o script deve incluir #!/bin/sh como a primeira linha.

Sua configuração padrão de shell não deve ser relevante neste contexto.

3
echox

Eu não acho que mudar a concha da raiz causaria algum problema. Eu pareço lembrar de alguns unices (talvez algumas variantes BSD?) Ter tcsh como o shell padrão para raiz.

Logins de raiz são raros de qualquer maneira. Normalmente, você entraria em sua própria conta e, em seguida, su ou sudo para root.

O que importa é que a concha de raiz deve ter apenas dependências quanto possível, de modo a ser utilizável em um contexto de reparação do sistema. Por exemplo, é uma boa ideia ter uma concha de raiz estaticamente ligada; Algumas distribuições enviam uma versão estaticamente ligada do Bash ou ZSH ou faixa (um shell com muitos utilitários padrão internos). No entanto, isso não é tão importante se o seu sistema puder ser facilmente inicializado a partir de um CD de Rescue ou unidade USB.

2

O shell de login de um usuário não afeta o processo de inicialização. Você pode definir este shell para o que quiser. Nem todos os sistemas têm bash e eles funcionam bem. Além disso, se for /usr/bin/zsh Foram instalados errados, todos os shells do sistema devem estar em /bin. Você não deve, no entanto, mudar /bin/sh Para apontar para algo diferente do padrão (a menos que você saiba o que você está fazendo) Como muitos scripts têm #!/bin/sh Que geralmente aponta para Bash, quando deveriam tem #!/bin/bash Porque eles usam bashisms e outros comportamentos que não funcionam em zsh ou dash.

1
xenoterracide

No que diz respeito ao Solaris/Illumos O Solaris Raiz Shell Mini-FAQ Mencione

Algumas sysadmin ainda recomendam contra mudar a concha de raiz em
Sistemas Solaris. Pergunte por que e você pode ser informado de que raiz precisa de um
[.____] Shell estaticamente ligado que não depende da dinâmica
Bibliotecas sob/usr/lib. Isso foi verdade no passado, mas não é
[.____] necessariamente o caso hoje. O Solaris, quando configurado corretamente, é como qualquer outra versão do UNIX e pode suportar qualquer concha que você defina, para root ou qualquer outra conta.

Então, sim, se você estiver usando o Solaris ou Illumos, é bom usar shell além de sh.

0
gsl

Eu tenho bash como shell padrão para raiz. Eu usei ZSH por algum tempo, mas depois voltou a bash. Qual shell você usa, não importa muito.

É apenas um problema, se mais de uma pessoa tiver acesso root. Nesse caso, você pode selecionar um "denominador comum" que geralmente é bash, como este é o shell mais utilizado.

0
polemon