Como o comando não encontrado determina se o usuário é administrador

1

Eu sou administrador de dois servidores Ubuntu. Em um deles, quando tento executar um comando (por exemplo irb1.9.1 ) de um pacote que não está instalado, recebo a seguinte mensagem:

The program 'irb1.9.1' is currently not installed.  You can install it by typing:
sudo apt-get install ruby1.9.1

No outro servidor, recebo a seguinte resposta:

The program 'irb1.9.1' is currently not installed.  To run 'irb1.9.1' please ask your administrator to install the package 'ruby1.9.1'

Eu posso sudo em ambos os servidores, então eu não entendo como o primeiro sabe que eu posso instalar o pacote sozinho e me mostra o comando para executar, enquanto o segundo não.

De onde vem a diferença e como posso obter o segundo servidor para me dar o comando como o primeiro servidor?

Editar para responder ao comentário de Braiam, apt-cache policy retorna o mesmo nos dois servidores:

$ apt-cache policy command-not-found
command-not-found:
  Installed: 0.3ubuntu7.1
  Candidate: 0.3ubuntu7.1
  Version table:
 *** 0.3ubuntu7.1 0
        500 http://dk.archive.ubuntu.com/ubuntu/ raring-updates/main amd64 Packages
        100 /var/lib/dpkg/status
     0.3ubuntu7 0
        500 http://dk.archive.ubuntu.com/ubuntu/ raring/main amd64 Packages
    
por Calimo 11.10.2013 / 11:13

2 respostas

0

Investigando o tópico um pouco mais, descobri que command-not-found estava usando o script /usr/lib/python2.7/dist-packages/CommandNotFound/CommandNotFound.py , que contém a seguinte linha:

self.user_can_sudo = grp.getgrnam("sudo")[2] in posix.getgroups() or grp.getgrnam("admin")[2] in posix.getgroups()

Então, basicamente, todos os grupos sudo ou admin serão considerados como administradores. Uma das máquinas foi configurada para usar o grupo wheel , portanto, visudo mostraria:

%wheel ALL=(ALL) ALL

No servidor, não era membro dos grupos sudo ou admin , portanto command-not-found não sabia que eu poderia executar apt-get comandos com sudo . Depois de me adicionar ao grupo sudo , agora recebo o comando apt-get para executar a impressão no terminal.

    
por Calimo 18.10.2013 / 11:06
0

A diferença provavelmente ocorre porque você usa diferentes versões bash ou diferentes shells. Use:

echo $SHELL
bash --version

para verificar seu shell atual e / ou sua versão atual do bash.

    
por Radu Rădeanu 11.10.2013 / 11:48