Configurando usuários para o Ubuntu para conexão ssh

2

Eu criei um novo servidor Ubuntu e, no usuário root, criei um novo usuário. Os passos que segui:

sudo adduser tom

sudo su - tom
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
nano .ssh/authorized_keys    // paste public key

Parece bem e posso fazer o login como [email protected] . No entanto, quando eu logado como Tom, ele pede permissão e quando eu sudo algo, ele pede uma senha, e eu não tenho uma senha para ele, então eu uso minha senha root, então ela avisa:

[sudo] password for tom: tom is not in the sudoers file. This incident will be reported.

Do meu usuário root, tentei adicionar o tom em visudo as

root    ALL=(ALL:ALL) ALL
tom     ALL=(ALL:ALL) ALL

mas isso não mudou nada.

Qual é a maneira correta dessa configuração, então o Tom tem permissão para executar coisas e a única senha pedida a ele é a senha ssh dele? Tom deve executar coisas como sudo npm install ou sudo composer install com sua senha ssh e talvez ele nem deveria saber a senha do root

O que estou perdendo aqui?

    
por senty 06.12.2017 / 03:11

2 respostas

1

EDITAR:

Com base em uma segunda leitura, se você ainda quiser a senha solicitada por Tom para usar o sudo, será necessário:

tom    ALL = ALL: ALL

Se você quiser que o tom rode o sudo sem senha, use a resposta abaixo.

Eu acredito que você gostaria que a linha fosse:

tom    ALL = NOPASSWD: ALL

Explicação:

tom é o usuário a que esta linha se aplica, o primeiro ALL é a que hosts isso se aplica, NOPASSWD é uma tag que especifica uma senha não é necessária e a% final ALL especifica quais comandos pode correr via sudo.

Observe que, se você quiser restringir quais comandos (ou até mesmo combinações de comandos e argumentos), você poderá substituir o segundo ALL . Por exemplo:

tom    ALL = NOPASSWD: /bin/kill, /usr/bin/lprm

Veja a página de manual do Sudoers e um página de manuais alternativos com exemplos adicionais de cerca de 80% na página.

    
por 06.12.2017 / 03:25
0

Você pode fazer o seguinte da raiz ou com sudo do seu usuário principal:

usermod -aG sudo tom

Isso adicionará seu tom de usuário ao grupo 'sudo' e isso é tudo o que deve ser necessário. Como isso faz com que as alterações no arquivo /etc/sudoers sejam desnecessárias, você pode reverter suas alterações lá, a menos que você queira remover a camada de segurança de pedir uma senha para os comandos sudo . Se você quiser isso, você deve usar a linha (como indicado por @ JasonRush em sua resposta) no seu arquivo /etc/sudoers :

tom    ALL = NOPASSWD: ALL

Se você quiser a forma usual de solicitar uma senha para o comando sudo , deixe o arquivo /etc/sudoers sozinho e simplesmente adicione o usuário ao grupo 'sudo'. Então você só precisa alterar /etc/ssh/sshd_config de acordo para não permitir logins de senha.

Normalmente, o Ubuntu é configurado dessa forma que um usuário comum deve estar em alguns grupos essenciais. Você pode verificar em quais grupos seu usuário principal está digitando groups no terminal.

Isso é o que mostra para mim, mas sua saída pode ser diferente disso:

$ groups
<users-own-group> adm cdrom sudo dip plugdev lpadmin sambashare

Um usuário normal que não deve ter permissões extensivas deve estar pelo menos em cdrom, plugdev, lpadmin . Mas desde que você está criando um usuário sudo (pelo menos parece que você quer isso) você deve adicionar seu usuário aos grupos de acordo. Você pode concatenar grupos no comando acima mencionado usando , para separá-los. No entanto, grupos como sambashare podem não ser necessários se você não tiver o samba instalado.

usermod -aG <group1>, <group2> <username>
    
por 06.12.2017 / 03:15