Debian: Todos os comandos executados como usuário root.

0

Hoje, eu entrei no meu servidor raiz e a primeira coisa que me cumprimentou foi:

-bash: id: command not found
-bash: [: : integer expression expected

Eu mudei para root e tentei executar o nano, sem sucesso. Depois de algumas pesquisas, descobri que todos os comandos se foram, exceto os mais básicos. As últimas coisas que fiz foram adicionar algumas linhas ao / etc / profile e / etc / environment. E eu adicionei um link simbólico para / usr / lib / grails ou algo assim. Mas não notei nenhum efeito imediatamente. Como usuário normal, eu ainda tenho todos os comandos btw.

    
por Chris 17.10.2012 / 22:12

3 respostas

3

Primeiro, certifique-se de fazer algo como:

export PATH="/bin:/usr/bin:/sbin:/usr/sbin"

para poder executar qualquer coisa.

Em seguida, certifique-se de corrigir o arquivo /etc/profile , já que parece ter um erro de sintaxe ... o erro sugere que é um if ou outra expressão envolvendo um operador [ .

Parece que seu /usr/bin/id está faltando. Está em outra partição que não foi montada, está montada noexec ou similar?

Para qualquer um que encontre isso depois: acontece que /etc/environment foi malformado (não contém todas as linhas necessárias) e, portanto, o ambiente de bash antes de ler /etc/profile já estava borked. De man ssh :

   /etc/environment
          This file is read into the environment at login (if
          it exists).  It can only contain empty lines,  com-
          ment  lines  (that  start with '#'), and assignment
          lines of the form name=value.  This  file  is  pro-
          cessed  in all environments (normal rsh/rlogin only
          process it on AIX and potentially some  other  sys-
          tems).   The  file should be writable only by root,
          and should be world-readable.

Em um Debian (6.0.6) este foi meu padrão /etc/profile

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "'id -u'" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/games"
fi

if [ "$PS1" ]; then
  if [ "$BASH" ]; then
    PS1='\u@\h:\w\$ '
  else
    if [ "'id -u'" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

export PATH

umask 022
    
por 17.10.2012 / 22:16
0

Não consegui executar um ant-script porque a variável env apontando para a instalação do Java ficou vazia.

eu corri:

source /etc/profile

e depois não está mais vazio, então talvez /etc/profile não seja executado corretamente? Você já tentou isso? (Não, eu não sou um especialista, mas posso ter sorte às vezes ...: -)

    
por 15.11.2012 / 09:26
0

Eu encontrei o mesmo problema no Debian jessie (8.0).

O / etc / profile começa com o seguinte:

if [ "'id -u'" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

Portanto, essas linhas definem o caminho, mas elas começam usando o comando "id", que ainda não pode ser encontrado porque o PATH não está definido!

Basta especificar o caminho absoluto para o id na primeira linha:

if [ "'/usr/bin/id -u'" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH
    
por 14.09.2015 / 23:23

Tags