Como alterar as permissões do usuário pi sudo; como adicionar outras contas com permissões diferentes?

13

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

xxmbabanexx
fonte
1
Alguma das respostas dadas foi útil? Algum deles é a resposta que você procurou? Por favor, marque isso como respondido.
Anders
Sim. Se você ainda estiver interessado, eu os atualizei para junho de 2017 - essa pergunta foi feita há 4 anos e 2 meses e me levou ao caminho para resolver o problema hoje. Confira as respostas abaixo:
SDsolar 21/17/17

Respostas:

21

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: sudosimplesmente 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:

pi ALL=(ALL) NOPASSWD: ALL

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:

$ sudo adduser admin

Isso criará um usuário "admin", solicita uma senha, cria seu diretório pessoal, etc.

$ sudo adduser admin sudo
$ sudo adduser admin adm

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/sudoersque 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/logsem usar sudoe outras coisas). Você ainda precisa usá- sudolo 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

$ sudo apt-get update
$ sudo apt-get upgrade

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:

$ sudo deluser pi sudo
$ sudo deluser pi adm

Isso expulsa o usuário "pi" do grupo de usuários "sudo".

$ sudo visudo

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"):

$ su - admin

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:

$ groups pi
pi : pi dialout cdrom audio video plugdev games users netdev input

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"!).

orithena
fonte
2
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
earthmeLon
Ou você pode tentar isso VISUAL=vim visudoapenas neste momento. Mas é um ótimo exemplo de alteração de programas padrão, como o editor.
Anders
6

Sim, você pode configurar sudopara permitir apenas que o usuário execute determinados comandos com privilégios adicionais. Você pode alterar isso em seu /etc/sudoersarquivo, mas é aconselhável não fazer isso diretamente, mas use o sudo visudocomando para isso.

Na instalação padrão do sistema, você deve encontrar essa linha:

pi ALL=(ALL) NOPASSWD: ALL

Ele diz sudopara permitir que o usuário piexecute todas as cammands como rootusuário sem fornecer senha. Você pode alterar por último ALLe 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:

pi ALL=(ALL) NOPASSWD: /usr/bin/apt-get, /sbin/shutdown

Observe que há mais uma linha em sudoersafetar o piusuário:

%sudo   ALL=(ALL:ALL) ALL

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ário pipoderá 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 pido sudogrupo.

Depois de fazer alterações no /etc/sudoersarquivo, você pode inspecionar se realmente faz o que deseja, chamando o sudo -l -U picomando

Obviamente, você pode criar contas diferentes e configurar, sudoersfornecendo acesso a diferentes comandos.

Krzysztof Adamski
fonte
1

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:

/etc/sudoers

e a última linha do arquivo é esta:

#includedir /etc/sudoers.d

Este é um diretório que contém um arquivo chamado

010_pi-nopasswd

que contém esta única linha

pi ALL=(ALL) NOPASSWD: ALL

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) ALLainda está lá como

Entã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 sumodo. Se você esqueceu sua senha root, pode redefini-la a partir do prompt normal usando sudo passwd rootEntão o sucomando funcionará e você poderá prosseguir a partir daí.

SDsolar
fonte
Acabei de encontrar isso no Google - por isso, se eu estou seguindo isso, o usuário ainda precisa estar no grupo sudoers, mas o /etc/sudo.d controla a frequência com que uma senha é solicitada a um usuário específico?
lonstar
1
Sim. Você conseguiu. Ser membro sudoersnormalmente é feito no momento em que o usuário é criado. Use o exemplo: você notará que a sequência de comandos comum sudo apt-get update && sudo apt-get upgradechama 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 uso sudo apt-get update -y && sudo apt-get upgrade -ypara 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.
SDsolar 29/05
0

É 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/sudoersde:

pi ALL=(ALL) NOPASSWD: ALL

para

pi ALL=(ALL) PASSWD: ALL

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/sudoersdiretamente; use sudo visudopara 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 ...

scruss
fonte
3
Mencionar o timestamptempo limite é uma boa ideia. São 15 minutos por padrão, BTW. Observe que PASSWDé o padrão (se NOPASSWDnão tiver sido especificado anteriormente nesta lista de comandos). Observe também que /etc/sudoerspode ser editado diretamente sem problemas, se você souber o que está fazendo. O uso visudofaz 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.
precisa saber é o seguinte
Eu acho que o OP atualiza que raramente ele sempre obtém um novo kernel ... ou algum colega disse para ele reiniciar a cada vez, porque ele não queria explicar como o OP poderia localizar um pacote de kernel na lista de atualizações.
Orithena 21/04
TNX para este comentário, @Krzysztof. Eu fiz a correção na minha resposta. E você está certo sobre a edição. De fato, na minha máquina 16.04, eu apenas coloquei a linha pi diretamente no arquivo sudoers, porque sudoers.d apenas continha um leia-me. Deixei por justa causa, mas pelo menos as permissões pi estão sendo processadas. (Meu editor favorito é VI / VIM, aliás, mas às vezes usa leafpad ou Idle. Não dominei o emacs novamente - 15 anos é muito tempo - e posso fazer muito mais, mais rápido, no vim do que no emacs , de longe.) Obrigado novamente.
SDsolar
0

Apenas uma alternativa ao que o scruss disse, exclua o /etc/sudoers.d/010_pi-nopasswdarquivo executando sudo 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