Muitos de nós usamos comandos "su", "sudo" etc em terminais ou fazemos atalhos na Área de Trabalho, no Desktop, automaticamente, quase sem pensar!
Achei que seria interessante, principalmente aos iniciantes, saber quanta teoria existe por trás de um simples atalho, ou de um "su" ou "sudo".
Vejamos, então, alguns detalhes sobre esses comandos básicos muito utilizados.
Comando su
O
su é um comando, originário do sistema operacional
UNIX, depois transposto também para o
Linux.
Ele significa, em Inglês, o que sua abreviatura mostra: "
Switch
User, isto é, "Substitua Usuário" ou "Troque Usuário".
Segundo alguns autores, em
GNU (não em Unix, Linux) o termo seria "Substitute User" e não "Switch User", mas o significado é o mesmo.
Isto é, você, como usuário, vai trocar para outro usuário qualquer, por exemplo:
su gatapinguim
Onde "gatapinguim" é o nome do outro usuário.
Automaticamente ele também pode trocar o identificador (
User ID), ou mesmo o grupo de trabalho onde o novo usuário vai atuar.
Alguns poderiam perguntar: "mas se eu uso só o 'su', ele sempre pede a senha do root, por quê?". Isso ocorre porque a opção padrão do "su" é para o root, ou seja:
su
Equivale a:
su root
Quando o "su" é usado de um terminal, de um konsole, dentro de um ambiente gráfico, somente esse terminal e os comandos que serão feitos posteriormente irão pra o root, o sistema continua como usuário comum (geralmente, mas nem sempre, pois isso depende da sua distro e da configuração).
Ao contrário, logando diretamente como root, do
bash de comando (fora do X) ou da tela de login, todo o sistema e a sessão terão privilégios de root.
Percebeu intuitivamente, porque se usa "su"?
É preciso cuidado para logar o tempo todo como root, isso não é igual a usar "su". Logado como root o tempo todo você está no grupo root, não é um "root user", mas é um "system root", é diferente!
Ao contrário do Windows, que só tem executáveis e drivers, em Linux, como em UNIX, o sistema é controlado também por arquivos texto e por scripts (inclusive alguns periféricos, como o teclado) e por módulos de
kernel.
O sistema precisa, para rodar, editar ou não automaticamente esses arquivos e, para isso, eles são montados na distro com as permissões adequadas.
Você sabia que quando loga na sua internet usando
Networkmanager, se necessário, o sistema escreve automaticamente em
/etc/resolv.conf?
Pois é, assim como "não escrever", tudo deve ser feito adequadamente e de modo automático. O sistema precisa saber onde escrever ou não.
Logado direto como root todas as permissões são abertas, o sistema pode escrever sozinho, onde quiser. Por isso recomenda-se que mesmo usuários experientes não trabalhem o tempo todo logado como root, é perigoso.
Pode parecer prático em um primeiro momento, mas isso pode danificar o sistema de um jeito que para resolver reinstalar dá menos trabalho. Se for seu Desktop, melhor, porque se for um servidor, você terá que tirá-lo do ar e a bronca do seu chefe é certa! rs
Vimos que pode logar como root no terminal, fazendo "su" e senha de root. Vamos ver outras opções de "su"?
Para juntar o su e já fazer o comando seguinte (o mesmo que faria depois que entrou com a senha) use a opção '-c", é como se fosse fazer "su" e o comando junto (é como se fosse um "su --command"). Ex.:
su -c "apt-get install amsn"
Entra com a senha root e já instala o
aMSN, e você pode usar tanto as aspas simples, como as aspas inglesas. Outro exemplo:
su -c 'thunar /home/usuário/Desktop'
Abrirá o gerenciador de arquivos do
XFCE, o
Thunar, já em modo root, no diretório da Área de Trabalho.
Outro exemplo para acompanhar o que os outros usuários estão fazendo, o administrador Linux pode fazer:
cd /
$ su -c "tail /var/log/messages"
E entrar com a senha de root. Por padrão, sempre o comando "su" pedirá a senha do superusuário, por isso é bastante seguro. Entretanto, uma segurança adicional é "proibir" usuários comuns de executarem "su".
Para isso o root deve editar o arquivo
/etc/pam.d/su, depois salvá-lo, dar permissão só ao root e escondê-lo ("hidden"), como no exemplo abaixo:
# If you want to restrict users begin allowed to su even more,
# create /etc/security/suauth.allow (or to that matter) that is only
# writable by root, and add users that are allowed to su to that
# file, one per line.
auth required pam_listfile.so item=ruser sense=allow onerr=fail file=/etc/security/suauth.allow
Aqui todos os usuários que forem listados em
/etc/security/suauth.allow serão os únicos que executam "su".
Você viu que em Linux o root pode, se quiser, impedir que qualquer outra pessoa use o Linux, exceto ele (o root), não é legal?
Para mais detalhes sobre outras opções menos usadas de "su", veja: