Concedendo privilégios de administrador ao usuário não está funcionando?

0

Eu vi o manual do sudo e planejo dar ao usuário apenas direitos para executar programas específicos, mas tentei testando-o com todas as permissões e não está funcionando.

sudo -l mostra isso:

[sudo] password for nav: 
Matching Defaults entries for nav on this host:
    env_reset,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User nav may run the following commands on this host:
    (ALL : ALL) ALL
    (ALL : ALL) ALL

Mas quando eu tento apt-get install firefox Eu entendo isso:

E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

Meu objetivo atual é executar o Truecrypt sem ter que pedir a senha de login do Ubuntu, mas antes disso eu gostaria de poder executar outros comandos sem ter que digitar sudo . Alguma ideia do que estou fazendo errado?
Também tentei esta solução e não funcionou.

    
por Nav 28.06.2013 / 06:53

1 resposta

2

Hum, há uma pequena confusão sobre como o sudo funciona.

O Sudo permite que você se torne root (ou outro usuário) com a finalidade de executar um determinado comando. No entanto, ele não é invocado automaticamente quando você executa o comando apt-get; você precisa executar o sudo:

sudo apt-get install firefox

e não

apt-get install firefox

Caso contrário, você não está invocando o sudo! Você vê, o sudo não é uma coisa do sistema. É apenas um programa regular que funciona sempre com privilégios de root ( suid , em outras palavras).

~$ ls -l 'which sudo'
-rwsr-xr-x 2 root root 127668 2013-02-27 21:41 /usr/bin/sudo*

Veja esta estrela e o "s" nas permissões? É isso que significa - quem quer que execute sudo, o sudo é executado com as permissões de root; como se o root tivesse começado. E então ele olha em volta, vê que é você quem o executa, procura o arquivo sudoers e diz: tudo bem, você tem permissão para executar o apt-get como root, deixe-me executá-lo para você. E invoca apt-get com permissões de raiz, que tem o mesmo efeito de se a raiz executou isso.

Se você não usa sudo, apenas digite

apt-get install firefox

Em seguida, apt-get é executado como usuário comum e, naturalmente, não tem permissão para tocar nos arquivos que só podem ser abertos para gravação por root. Isso ocorre porque o apt-get não é um programa suado; ele é executado com a permissão desse usuário que o iniciou.

Programas Suid são perigosos, porque se houver algum erro no programa, ele poderá ser usado para escalonar os privilégios de um usuário não autorizado. É por isso que apenas um programa ( sudo ) existe para esses propósitos específicos.

Bem. Sobre essa coisa de senha: use a diretiva NOPASSWD no arquivo sudoers (use visudo para editá-la) e execute o comando com sudo . Aqui está a entrada apropriada para o seu arquivo sudoers:

yourusername ALL = NOPASSWD: /path/to/the/program

Dessa forma, invocando

sudo /path/to/the/program

não precisará digitar uma senha e você poderá executá-la a partir de um script ou do cron.

    
por January 28.06.2013 / 09:13