Nenhum caminho, ou histórico de comandos através de SSH quando logado no servidor como alguém diferente de root

3

Quando eu faço SSH em um servidor, como qualquer outra coisa além de root, ele mostra apenas $ e não o caminho. Ele também não me permite pressionar a tecla para cima e ver o histórico de comandos quando eu não faço SSH como root. Como faço para dar aos outros usuários as opções mencionadas?

    
por Arthur Walker 22.04.2015 / 00:07

3 respostas

5

Existem dois passos para o conseguir.

Etapa 1) Verifique se os usuários estão usando o shell bash. Olhe a entrada para cada usuário em / etc / passwd e assegure que termine em / bin / bash. Por exemplo, se você vir isto:

joeuser:x:1234:1234:Joe User:/home/joeuser:/bin/sh

altere-o para isto:

joeuser:x:1234:1234:Joe User:/home/joeuser:/bin/bash

O uso do bash deve corrigir o problema da seta para cima e permitir a próxima etapa.

Etapa 2) Se você ainda não encontrar um prompt com o diretório de trabalho atual, diga ao bash o que você deseja. Existem duas maneiras de fazer isso. Adicione a seguinte linha:

export PS1='\w> '

para

  1. Cada usuário .bash_profile file; OR
  2. O arquivo /etc/profile do sistema

Esta linha atribui a variável PS1 , que representa o prompt principal do shell. Eu recomendo colocá-lo em /etc/profile , pois isso é mais fácil e fornece um prompt útil para todos os seus usuários. Se um usuário quiser outra coisa para o prompt, ele sempre poderá editar seu próprio arquivo .bash_profile .

Nota: se o seu sistema tiver /etc/bash.bashrc , coloque a linha lá em vez de /etc/profile .

    
por 22.04.2015 / 05:24
1

Minha página passwd(5) man diz isso sobre o último campo de uma entrada /etc/passwd , chamada de “interpretador de comandos”:

The command interpreter field provides the name of the user's command language interpreter, or the name of the initial program to execute. The login program uses this information to set the value of the $SHELL environmental variable. If this field is empty, it defaults to the value /bin/sh.

Então, parece que suas opções são:

  1. Coloque seus usuários no arquivo /etc/passwd .
  2. Tenha as informações de seus usuários disponíveis pelo NIS ou por outros meios de rede.
  3. Vincule /bin/sh a algum outro shell. Eu não recomendo isso porque os programas provavelmente dependem do comportamento do /bin/sh existente.
por 22.04.2015 / 02:13
1

Isso soa bastante estranho, pois, por padrão, qualquer usuário não-root deve ter a funcionalidade básica que você descreve. Dito isto, esta questão parece familiar. Sempre que eu configuro um usuário no Ubuntu (Debian) eu uso adduser que funciona bem ; mas sempre tive problemas com useradd . Como está na página oficial do man para useradd :

useradd is a low level utility for adding users. On Debian, administrators should usually use adduser(8) instead.

O motivo se resume ao fato de que useradd é basicamente um binário de sistema de baixo nível que requer mais comandos do que apenas um nome de usuário para adicionar caminhos e informações de shell para um novo usuário. Em contraste, adduser é um wrapper de script Perl para useradd que fornece um fluxo de trabalho mais agradável e fácil de usar para criar um novo usuário no sistema sem pensar muito. Pense em adduser como uma configuração de "assistente" para useradd .

Então, se você adicionou um usuário via useradd , você perdeu uma configuração nas opções da linha de comando. Então, tecnicamente, você adicionou um usuário ao sistema, mas não muito mais na configuração do sistema. Em contraste, adduser foi projetado para lidar com todos os princípios básicos.

Sabendo disso, o que eu recomendaria é que você exclua qualquer usuário que você já tenha criado dessa forma; é claro, altere [username] para o nome de usuário real:

sudo deluser --remove-home [username]

E, em seguida, recrie esse usuário com adduser da seguinte forma:

sudo adduser [username]
    
por 22.04.2015 / 02:33