Como ocasionalmente uso meu Pi sobre SSH, aprendi que é perigoso permitir que o SSH acesse comandos sudo. Assim, pretendo desativar essa permissão em um futuro próximo. Mas, quando instalo pacotes, geralmente tenho que reiniciar. Atualmente, isso é permitido apenas através do superusuário.
sudo reboot
Existe alguma maneira de editar as permissões do usuário pi para permitir que ele reinicie (e instale) pacotes?
Posso ter várias contas com permissões diferentes?
obrigado
Respostas:
Para esclarecer um pouco: Não há "comandos sudo", existem apenas comandos que precisam de privilégios de root para operar corretamente e
sudo
é o comando para obtê-los para um comando:sudo
simplesmente executa o comando fornecido como root (leia "sudo" como imperativo frase "superusuário, faça alguma coisa!"). As regras sobre as quais os usuários podem fazer isso estão descritas em/etc/sudoers
. Em uma instalação Raspbian padrão, o usuário padrão "pi" tem suas permissões nesta linha:Significa: "O usuário 'pi' em TODOS os hosts tem permissão para alternar para TODOS os usuários e NÃO precisa digitar sua PASSWD ao usar os comandos ALL (read: any)". (Usei gramática maluca aqui para manter a ordem da linha. Uma observação sobre o motivo de distinguir hosts: dessa maneira, o mesmo arquivo sudoers pode ser distribuído para várias máquinas em uma rede para que o administrador da rede tenha menos trabalho) .
Pode ser que ser capaz de executar comandos usando o sudo sem emitir uma senha de administrador seja o ponto por que você acha perigoso usar o sudo sobre SSH (eu nunca ouvi falar de um problema geral ao fazer isso ... você também pode explique que perigo exatamente você quer dizer?).
Claro que você pode ter vários usuários com permissões diferentes. Mas receio que o uso do sudo ainda seja a melhor maneira de gerenciar essas permissões.
Então, espero que esta pequena receita aqui seja o que você precisa:
Isso criará um usuário "admin", solicita uma senha, cria seu diretório pessoal, etc.
Isso colocará o usuário "admin" nos grupos de usuários "sudo" e "adm". E como as permissões são gerenciadas no Linux adicionando usuários a grupos de usuários, isso concede ao usuário "admin" todos os privilégios e permissões que ele precisa. Existe uma linha
/etc/sudoers
que permite que qualquer usuário que esteja no grupo de usuários "sudo" execute qualquer comando como root; e esse privilégio é o que precisamos para um usuário administrador (adicioná-lo a "adm" permite que ele leia alguns arquivos de log/var/log
sem usarsudo
e outras coisas). Você ainda precisa usá-sudo
lo quando estiver logado como administrador - mas agora o sudo pede repetidamente a senha do administrador sempre que você não usa o sudo por cerca de cinco minutos.Agora faça logoff e logon como o usuário "admin". Verifique se
trabalho. Nesse caso, você pode revogar alguns privilégios do usuário "pi", porque agora você tem certeza de que seu usuário administrador possui os privilégios corretos:
Isso expulsa o usuário "pi" do grupo de usuários "sudo".
Isso iniciará um editor que permite editar
/etc/sudoers
. Coloque uma tag de hash (#
) antes da linha que começa com "pi", comentando-a (ou simplesmente removendo-a). Em seguida, salve e saia do editor, o visudo recarregará as regras de privilégio imediatamente. Agora, o usuário "pi" não tem mais permissão para usar o sudo.Depois disso, você poderá efetuar logon novamente como o usuário "pi". Se você quiser mudar para o administrador para alguns comandos, use
su
("alternar usuário"):Se você deseja adicionar mais usuários: use
sudo adduser <name>
como acima, e verifique a lista de grupos de usuários que o usuário "pi" possui:Use
sudo adduser <username> <groupname>
para adicionar seu novo usuário a vários desses grupos de usuários, permitindo que ele use áudio, vídeo acelerado, use dispositivos conectáveis, etc. Se não tiver certeza, adicione-o a todos esses grupos de usuários (mas não ao "sudo"!).fonte
visudo
é um comando que usará seu editor padrão para editar o arquivo sudoers. Editar este arquivo sem ele pode ser uma dor e não é recomendado. Você pode mudar o seu editor preferido emitindosudo update-alternatives --config editor
VISUAL=vim visudo
apenas neste momento. Mas é um ótimo exemplo de alteração de programas padrão, como o editor.Sim, você pode configurar
sudo
para permitir apenas que o usuário execute determinados comandos com privilégios adicionais. Você pode alterar isso em seu/etc/sudoers
arquivo, mas é aconselhável não fazer isso diretamente, mas use osudo visudo
comando para isso.Na instalação padrão do sistema, você deve encontrar essa linha:
Ele diz
sudo
para permitir que o usuáriopi
execute todas as cammands comoroot
usuário sem fornecer senha. Você pode alterar por últimoALL
e especificar a lista de comandos delimitados por vírgula (com seu caminho completo) com permissão para execução. No seu caso, você deve alterar esta linha para:Observe que há mais uma linha em
sudoers
afetar opi
usuário:Essa linha permite que todos os usuários do grupo
sudo
(%
caractere na frente do nome significa que é um nome de grupo em vez de nome de usuário) executem TODAS as senhas, desde que conheçam sua própria senha . Se você sair desta linha, o usuáriopi
poderá executar todos os outros comandos, mas será solicitado sua senha.Se você deseja impedir que isso aconteça, você pode remover esta linha ou remover o usuário
pi
dosudo
grupo.Depois de fazer alterações no
/etc/sudoers
arquivo, você pode inspecionar se realmente faz o que deseja, chamando osudo -l -U pi
comandoObviamente, você pode criar contas diferentes e configurar,
sudoers
fornecendo acesso a diferentes comandos.fonte
Em maio de 2018, o conceito ainda é preciso, mas o procedimento foi alterado nas versões posteriores:
Primeiramente, os arquivos devem ser editados diretamente no vi ou nano ou leafpad ou emacs - o que for seu editor de texto favorito.
O nome de usuário pi não é mencionado neste arquivo:
e a última linha do arquivo é esta:
Este é um diretório que contém um arquivo chamado
que contém esta única linha
Que tem o efeito de não solicitar nenhum comando sudo, desde que eu esteja logado como usuário pi. (observe que a sintaxe deve ser exatamente dessa maneira)
Isso é ótimo.
A linha do grupo
%sudo ALL=(ALL:ALL) ALL
ainda está lá comoEntão, para responder à primeira parte da pergunta:
Quando mudei o arquivo /etc/sudoers/sudoers.d/010_pi-nopasswd para um nível de diretório para fazer a inclusão falhar, e esperei 15 minutos, fez com que o meu sistema Raspbian solicitasse minha própria senha ao usar o sudo, apenas como o meu sistema Ubuntu 14.04 LTS costumava fazer.
Então, quando eu a mudei de volta para onde ela pertence, mesmo depois de 10 minutos, ela não me levou mais.
Não é necessário reiniciar. Voila, sem solicitar uma senha ao usar o sudo
Meu sistema de teste lubuntu 14.04 LTS tem a mesma configuração, exceto que o arquivo 010_pi-nopasswd não estava presente. O lubuntu foi instalado com pi como usuário root. Ele me levou a cada vez que usei o sudo, depois não me levou por 10 minutos depois.
Adicionei esse mesmo arquivo ao sistema Ubuntu da mesma maneira que o Raspbian é configurado (lembre-se de chmod 0440 nesse arquivo enquanto você ainda está nessa janela de 10 minutos) - e
Voila, ele não solicita mais minha própria senha quando estou logado como pi, mesmo após 15 minutos.
Novamente, a mudança acontece instantaneamente sem a necessidade de reinicialização.
Esta é a resposta de maio de 2018 sobre como desativar e ativar o prompt para o uso do comando sudo quando conectado como usuário root pi. Outros usuários e grupos podem ser configurados da mesma maneira.
--UPDATE para Ubuntu 16.04 LTS Este sistema também é muito semelhante. No entanto, a maior diferença é que o 16.04 possui permissões de arquivo muito mais restritas, portanto o trabalho deve ser feito no
su
modo. Se você esqueceu sua senha root, pode redefini-la a partir do prompt normal usandosudo passwd root
Então osu
comando funcionará e você poderá prosseguir a partir daí.fonte
sudoers
normalmente é feito no momento em que o usuário é criado. Use o exemplo: você notará que a sequência de comandos comumsudo apt-get update && sudo apt-get upgrade
chama o sudo duas vezes, mas é irritante que possa parar e solicitar a senha novamente antes da atualização. Por isso, defino o meu para nunca solicitar meu nome de login único (pi) e também o usosudo apt-get update -y && sudo apt-get upgrade -y
para que ele também não pare para solicitar o OK para fazer alterações consideráveis. Para torná-lo mais semelhante ao Unix. Faça o que eu pedir e, mesmo que eu vá embora, quero que termine.É mais seguro permitir acesso ao sudo através do SSH do que qualquer usuário instalar pacotes. Se você está realmente preocupado com isso, altere a linha
/etc/sudoers
de:para
Isso significa que você será solicitado a fornecer uma senha na primeira vez em que usar o sudo em qualquer sessão, e novamente após alguns minutos. Você não pode editar
/etc/sudoers
diretamente; usesudo visudo
para fazer isso.Parece que Krzysztof entrou com uma resposta logo ali. Você tem certeza de que precisa reiniciar toda vez que instalar novos pacotes? A menos que você esteja instalando um novo kernel ou firmware, não é necessário reiniciar muito mais. Este é um sistema operacional de qualidade que temos aqui ...
fonte
timestamp
tempo limite é uma boa ideia. São 15 minutos por padrão, BTW. Observe quePASSWD
é o padrão (seNOPASSWD
não tiver sido especificado anteriormente nesta lista de comandos). Observe também que/etc/sudoers
pode ser editado diretamente sem problemas, se você souber o que está fazendo. O usovisudo
faz alterações no arquivo temporário, impedindo que o arquivo seja gravado automaticamente no meio da alteração (o que pode introduzir erros de sintaxe e / ou problemas de segurança), ele bloqueia esse arquivo contra várias edições simultâneas e faz algumas verificações de sintaxe antes de gravar o arquivo.Apenas uma alternativa ao que o scruss disse, exclua o
/etc/sudoers.d/010_pi-nopasswd
arquivo executandosudo rm /etc/sudoers.d/010_pi-nopasswd
. Muito mais fácil e seguro do que editar o arquivo sudoers principal, que pode danificá-lo.fonte