Buscar

Capítulo 13 Segurança do sistema e do usuário Conteúdo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Capítulo 13 – Segurança do Sistema e do Usuário
13.1 Introdução
As contas de usuário são projetadas para fornecer segurança em um sistema operacional Linux. Cada pessoa no sistema deve fazer o login usando uma conta de usuário e a conta de usuário permitirá que a pessoa acesse um arquivo/diretório específico ou não permita tal acesso. Isto é realizado por permissões de arquivo, um tópico discutido em um capítulo posterior.
As contas de usuário também pertencem a grupos que também podem ser usados ​​para fornecer acesso a arquivos/diretórios. Cada usuário pertence a pelo menos um grupo (muitas vezes muitos) para permitir que os usuários compartilhem de forma mais fácil dados armazenados em arquivos com outros usuários.
Os dados da conta de usuário e grupo são armazenados em arquivos de banco de dados. Conhecer o conteúdo desses arquivos é importante, pois isso permitirá que você compreenda melhor quais usuários têm acesso a arquivos e diretórios no sistema. Esses arquivos de banco de dados também contêm informações vitais de segurança que podem afetar a capacidade de um usuário acessar o sistema (login).
Existem vários comandos que lhe proporcionam a capacidade de ver as informações da conta do usuário e do grupo, bem como permitir que você mude de uma conta de usuário para outra (desde que você tenha a autoridade apropriada para fazê-lo). Esses comandos são valiosos para investigar o uso do sistema, solucionar os problemas do sistema e monitorar o acesso não autorizado ao sistema.
13.2 Contas de usuário
Existem vários arquivos de texto no diretório /etc que contém os dados da conta dos usuários e grupos que estão definidos no sistema. Por exemplo, se você quisesse ver se uma conta de usuário específica foi definida no sistema, o local para verificar é o arquivo /etc/passwd.
O arquivo /etc/passwd define algumas das informações da conta para as contas de usuário. Curiosamente, as senhas para as contas não são armazenadas no arquivo /etc/passwd, como o nome do arquivo indica, mas sim o arquivo /etc/shadow.
13.2.1 Arquivo /etc/passwd
Cada linha do arquivo /etc/passwd se relaciona com uma conta de usuário. O gráfico a seguir mostra as dez primeiras linhas de um arquivo típico /etc/passwd:
sysadmin@localhost:~$ head /etc/passwd 
root:x:0:0:root:/root:/bin/bash 
daemon:x:1:1:daemon:/usr/sbin:/bin/sh 
bin:x:2:2:bin:/bin:/bin/sh 
sys:x:3:3:sys:/dev:/bin/sh 
sync:x:4:65534:sync:/bin:/bin/sync 
games:x:5:60:games:/usr/games:/bin/sh 
man:x:6:12:man:/var/cache/man:/bin/sh 
lp:x:7:7:lp:/var/spool/lpd:/bin/sh 
mail:x:8:8:mail:/var/mail:/bin/sh 
news:x:9:9:news:/var/spool/news:/bin/sh 
sysadmin@localhost:~$
Cada linha é separada em campos por caracteres de dois pontos. Os campos da esquerda para a direita são os seguintes:
name:password placeholder:user id:primary group id:comment:home directory:shell
A tabela a seguir descreve cada um desses campos em detalhes, usando a primeira linha da saída do gráfico anterior (root:x:0:0:root:/root:/bin/bash):
	Campo
	Exemplo
	Descrição
	name
	root
	Este é o nome da conta. Esse nome é usado pela pessoa quando eles fazem logon no sistema e quando a propriedade do arquivo é fornecida com o comando ls -l. Normalmente, o sistema usa a ID do usuário (veja abaixo) internamente e o nome da conta é fornecido para tornar mais fácil para os usuários regulares se referirem à conta.
A conta raiz normalmente é uma conta administrativa especial. No entanto, é importante notar que nem todos os sistemas têm uma conta raiz e que é realmente o ID do usuário de 0 (zero) que fornece privilégios administrativos no sistema.
	password placeholder
	x
	Ao mesmo tempo, a senha para o usuário estava realmente armazenada neste local, mas agora está armazenada no arquivo /etc/shadow. O x no campo do espaço reservado da senha indica ao sistema que a senha não está armazenada aqui, mas sim no arquivo /etc/shadow.
	user id
	0
	A cada conta é atribuída uma ID de usuário (UID). O UID é o que realmente define a conta, pois o nome do usuário normalmente não é usado diretamente pelo sistema. Por exemplo, os arquivos são de propriedade dos UIDs, e não pelos nomes de usuários.
Alguns UIDs são especiais. Por exemplo, o UID de 0 fornece essa conta de usuário com privilégios administrativos.
Os UID abaixo de 500 (em algumas distribuições Linux 1.000) são reservados para contas do sistema. As contas do sistema serão abordadas com mais detalhes mais adiante neste capítulo.
	primary group id
	0
	Cada arquivo e diretório é de propriedade de uma conta de usuário. Normalmente, a pessoa que cria a conta possui o arquivo. Além disso, cada arquivo é de propriedade de um grupo, normalmente o grupo principal do usuário.
Os grupos recebem identificações numéricas como os usuários.
Quando um usuário cria um arquivo, o arquivo é de propriedade do UID do usuário e também pertence a um ID de grupo (GID), o GID principal do usuário. Este campo define qual GID é o GID primário do usuário.
Além disso, fornecendo propriedade de grupo padrão em um arquivo, esse campo também indica que o usuário é um membro do grupo, o que significa que o usuário terá permissões especiais em qualquer arquivo que pertence a este grupo. As permissões serão abordadas em detalhes em um capítulo posterior.
	comment
	root
	Este campo pode conter qualquer informação sobre o usuário, incluindo seu nome real (completo) e outras informações úteis.
Este campo também é chamado de campo GECOS (General Electric Comprehensive Operating System). O GECOS é um formato predefinido raramente usado para esse campo que define uma lista de itens separados por vírgulas, incluindo o nome completo do usuário, a localização do escritório, o número de telefone e informações adicionais.
Um administrador pode modificar a informação GECOS com o comando chfn e os usuários podem exibir essas informações com o comando finger.
	home directory
	/root
	Este campo define a localização do diretório inicial do usuário. Para usuários regulares, isso normalmente seria /home/username onde o nome de usuário é substituído pelo nome de usuário do usuário. Por exemplo, um nome de usuário de bob teria um diretório pessoal de /home/bob.
O usuário root normalmente possui um local diferente para o diretório inicial: /root.
As contas do sistema raramente possuem diretórios domésticos, pois normalmente eles não são usados para criar ou armazenar arquivos.
	shell
	/bin/bash
	Esta é a localização do shell de login do usuário. Por padrão, o usuário é "colocado" neste shell sempre que o usuário faz logon em um ambiente de linha de comando ou abre uma janela de terminal. O usuário pode então mudar para um shell diferente digitando o nome do shell, por exemplo: /bin/tcsh.
O bash shell (/bin/bash) é o shell mais comum para usuários do Linux.
Observe que, enquanto este capítulo descreve o conteúdo dos arquivos de usuário e grupo, o próximo capítulo descreverá os comandos e ferramentas usados para modificar as informações da conta do usuário e do grupo.
13.2.2 Arquivo /etc/shadow
Conforme mencionado anteriormente, o arquivo /etc/shadow contém informações da conta relacionadas à senha do usuário. Um arquivo típico /etc/shadow ficaria como o seguinte gráfico:
root@localhost:~# head /etc/shadow 
root:$6$4Yga95H9$8HbxqsMEIBTZ0YomlMffYCV9VE1SQ4T2H3SHXw41M02SQtfAdDVE9mqGp2hr20q
.ZuncJpLyWkYwQdKlSJyS8.:16464:0:99999:7::: 
daemon:*:16463:0:99999:7:::bin:*:16463:0:99999:7::: 
sys:*:16463:0:99999:7::: 
sync:*:16463:0:99999:7::: 
games:*:16463:0:99999:7::: 
man:*:16463:0:99999:7::: 
lp:*:16463:0:99999:7::: 
mail:*:16463:0:99999:7::: 
news:*:16463:0:99999:7::: 
root@localhost:~#
Os campos do arquivo /etc/shadow são:
name:password:last change:min:max:warn:inactive:expire:reserved
A tabela a seguir descreve os campos do arquivo /etc/shadow com mais detalhes, usando a seguinte conta que descreve uma conta de usuário típica:
sysadmin:$6$lS6WJ9O/fNmEzrIi$kO9NKRBjLJJTlZD.L1Dc2xwcuUYaYwCTS.gt4elijSQW8ZDp6GLYAx.TRNNpUdAgUXUrzDuAPsYs5YHZNAorI1:15020:5:30:7:60:15050:
	Campo
	Exemplo
	Descrição
	name
	sysadmin
	Este é o nome da conta, que corresponde ao nome da conta no arquivo /etc/passwd.
	password
	$6$.........rI1
	O campo da senha contém a senha criptografada da conta. Essa linha muito longa (que foi truncada no exemplo à esquerda desta célula) é uma criptografia unidirecional, o que significa que não pode ser "revertida" para determinar a senha original.
Embora usuários regulares tenham criptografado senhas neste campo, as contas do sistema terão um caractere * nesse campo. Veja mais detalhes sobre contas do sistema mais adiante neste capítulo.
	last change
	15020
	Este campo contém um número que representa a última vez que a senha foi alterada. O número 15020 é o número de dias desde 1º de janeiro de 1970 (denominado Época) e o último dia em que a senha da conta foi alterada.
Esse valor é gerado automaticamente quando a senha do usuário é modificada. Esse valor é importante, pois é usado pelos recursos de envelhecimento da senha fornecidos pelo resto dos campos desse arquivo.
	min
	5
	Este é um dos campos de envelhecimento da senha; um valor diferente de zero neste campo indica que após um usuário alterar sua senha, a senha não pode ser alterada novamente para o número especificado de dias (5 dias neste exemplo). Este campo é importante quando o campo máximo é usado (veja abaixo).
Um valor de zero neste campo significa que o usuário sempre pode alterar sua senha.
	max
	5
	Este campo é usado para forçar os usuários a mudar suas senhas em uma base regular. Um valor de 30 neste campo significa que o usuário deve alterar sua senha pelo menos a cada 30 dias para evitar que sua conta seja "bloqueada".
Observe que, se o campo min estiver configurado para 0, o usuário poderá retornar a senha ao valor original, derrotando a finalidade de forçar o usuário a mudar sua senha a cada 30 dias. Então, se o campo máximo estiver configurado, o campo mínimo também está configurado.
Por exemplo, um min:máximo de 5:60 significa que o usuário deve alterar sua senha a cada 60 dias e, depois de mudar, o usuário deve aguardar 5 dias antes de poderem mudar sua senha novamente.
Se o campo máximo estiver definido para 99999, o valor máximo possível, então o usuário essencialmente nunca precisa mudar sua senha (porque 99999 dias são aproximadamente 274 anos).
	warn
	7
	Se o campo máximo estiver definido, o campo de aviso indica que o usuário seria "avisado" quando o prazo máximo se aproximar. Por exemplo, se o aviso for definido como 7, em qualquer momento durante os 7 dias antes do prazo máximo alcançado, o usuário seria avisado para alterar sua senha durante os processos de login.
O usuário só é avisado no login, então alguns administradores adotaram a abordagem para configurar o campo de aviso para um valor maior para fornecer uma maior chance de ter um aviso emitido.
Se o prazo máximo for definido como 99999, o campo de aviso é essencialmente inútil
	inactive
	60
	Se o usuário ignora os avisos e eles excedem o prazo máximo da senha, sua conta será bloqueada. Nesse caso, o campo inativo fornece ao usuário um período de "graça" no qual sua senha pode ser alterada, mas somente durante o processo de login.
Se o campo inativo estiver definido para 60, o usuário tem 60 dias de graça para mudar para uma nova senha. Se não o fizerem, o administrador seria necessário para redefinir a senha do usuário.
	expire
	15050
	Este campo representa o número de dias a partir de 1º de janeiro de 1970 e o dia em que a conta "expirará". Uma conta expirada será bloqueada, não eliminada, o que significa que o administrador pode redefinir a senha para desbloquear a conta.
Contas com datas de validade são normalmente fornecidas a empregados temporários ou contratados. A conta expira automaticamente após o último dia de trabalho do usuário.
Quando um administrador define este campo, uma ferramenta é usada para converter de uma data real para uma data de "Epoch". Existem também vários conversores gratuitos disponíveis na Internet.
	reserved
	
	Atualmente não usado, este campo é reservado para uso futuro.
13.2.3 Visualizando informações da conta
Uma boa maneira de ver as informações da conta a partir do arquivo /etc/passwd é usar o comando grep para exibir apenas a linha que contém a conta que lhe interessa. Por exemplo, para ver as informações da conta para o nome de usuário chamado sysadmin, use o comando grep sysadmin /etc/passwd:
sysadmin@localhost:~$ grep sysadmin /etc/passwd 
sysadmin:x:1001:1001:System Administrator,,,,:/home/sysadmin:/bin/bash 
sysadmin@localhost:~$
Outra técnica para recuperar informações do usuário normalmente contida nos arquivos /etc/passwd e /etc/shadow é usar o comando getent. Uma vantagem em usar o comando getent é que ele pode recuperar informações da conta definidas localmente (/etc/passwd e /etc/shadow) ou em um servidor de diretório de rede.
A sintaxe geral de um comando getent é: registro do banco de dados getent. Por exemplo, o comando getent passwd sysadmin recuperaria as informações da conta passwd para o usuário sysadmin:
sysadmin@localhost:~$ getent passwd sysadmin 
sysadmin:x:1001:1001:System Administrator,,,,:/home/sysadmin:/bin/bash 
sysadmin@localhost:~$
13.2.4 Visualizando informações de login
Quando você efetua login em diferentes contas de usuário, pode ser confuso quanto a quem você está logado no momento. Para verificar sua identidade (veja a conta que está usando atualmente), você pode executar o comando id.
O comando id informará a identidade atual, tanto pelo nome de usuário quanto pelo ID do usuário. Além de fornecer as informações da conta do usuário, a associação do grupo também é exibida. Sem argumento, o comando id mostrará sua identidade. Dado um nome de usuário como um argumento, como id root, o comando exibirá outras informações da conta:
sysadmin@localhost:~$ id 
uid=1001(sysadmin) gid=1001(sysadmin) groups=1001(sysadmin),4(adm),27(sudo) context=unconfined_u:unconfined_r:unconfined t:s0-s0:c0.c1023 
sysadmin@localhost:~$ 
sysadmin@localhost:~$ id root 
uid=0(root) gid=0(root) groups=0(root) 
sysadmin@localhost:~$
A saída inclui o contexto do Security Enhanced Linux (o contexto = parte da saída), um tópico que está além do escopo deste curso.
13.2.5 Contas do sistema
Os usuários entrarão no sistema usando contas de usuário regulares. Normalmente, essas contas possuem valores UID superiores a 500 (em alguns sistemas 1.000).
O usuário root tem acesso especial ao sistema. Como mencionado anteriormente, este acesso especial é realmente fornecido à conta com um UID de 0.
Existem contas adicionais que não foram projetadas para usuários para se conectarem. Essas contas,normalmente do UID 1 ao UID 499, são chamadas de contas do sistema e são projetadas para fornecer contas de serviços que estão sendo executados no sistema.
As contas do sistema têm alguns campos nos arquivos /etc/passwd e /etc/shadow que são diferentes das outras contas. Por exemplo, no arquivo /etc/passwd, as contas do sistema terão um programa de não login no campo "login shell":
bin:x:1:1:bin:/bin:/sbin:/sbin/nologin
No arquivo /etc/shadow, as contas do sistema normalmente terão um caractere * no lugar do campo da senha:
bin:*:15513:0:99999:7:::
Existem algumas coisas importantes que você deve lembrar sobre as contas do sistema:
A maioria é necessária para que o sistema funcione corretamente.
Você não deve excluir uma conta do sistema, a menos que você tenha certeza absoluta de que a remoção da conta não causará problemas.
À medida que você ganha mais experiência, você deve aprender o que cada conta do sistema faz. Os administradores do sistema são encarregados de garantir a segurança no sistema e que inclui adequadamente proteger as contas do sistema.
13.3 Contas de grupo
Seu nível de acesso a um sistema não é determinado apenas pela sua conta de usuário. Cada usuário pode ser um membro de um ou mais grupos, o que também pode afetar seu nível de acesso ao sistema.
Tradicionalmente, os sistemas UNIX limitavam os usuários a pertencerem a um total de dezesseis grupos, mas os recentes kernels do Linux suportam usuários com mais de sessenta e cinco mil membros de grupo.
Como você já viu, o arquivo /etc/passwd define a associação de grupo primário para um usuário. A associação de grupo suplementar (ou associação de grupo secundário), bem como os próprios grupos, é definida no arquivo /etc/group.
Para visualizar informações sobre um grupo específico, os comandos grep ou getent podem ser usados. Por exemplo, os seguintes comandos exibirão as informações da conta do grupo de e-mail:
sysadmin@localhost:~$ grep mail /etc/group
mail:x:12:mail,postfix
sysadmin@localhost:~$ getent group mail
mail:x:12:mail,postfix
13.3.1 Arquivo /etc/group
O arquivo /etc/group é um arquivo delimitado por dois pontos com os seguintes campos:
group_name:password_placeholder:GID:user_list
A tabela a seguir descreve os campos do arquivo /etc/group em mais detalhes, usando uma linha que descreve uma conta de grupo típica:
mail:x:12:mail,postfix
	Campo
	Exemplo
	Descrição
	group_name
	mail
	Este campo contém o nome do grupo. Tal como acontece com os nomes dos usuários, os nomes dos grupos são mais fáceis de lembrar das pessoas. O sistema geralmente usa IDs de grupo (GIDs) em vez de nomes de grupo.
	password_placeholder
	x
	Embora existam senhas para grupos, eles raramente são usados no Linux. No caso de o administrador criar uma senha de grupo, seria armazenado em um arquivo diferente (/etc/gshadow) porque a senha do grupo não está mais armazenada no arquivo /etc/group. O x neste campo é usado para indicar que a senha não está armazenada neste arquivo. As senhas de grupo estão além do escopo deste curso.
	GID
	12
	Cada grupo está associado a um ID de grupo exclusivo (GID) que é colocado neste campo.
	user_list
	mail,postfix
	Este último campo é usado para indicar quem é um membro do grupo. Embora a associação de grupo primário esteja definida no arquivo /etc/passwd, os usuários que são atribuídos a grupos adicionais teriam seu nome de usuário colocado neste campo do /etc/groupfile.
Nesse caso, os usuários mail e postfix são membros secundários do grupo de correio.
É muito comum que um nome de usuário também apareça como um nome de grupo. Também é comum que um usuário pertença a um grupo com o mesmo nome.
13.3.2 Visualização de informações do grupo
Os grupos são usados ​​principalmente para controlar o acesso a arquivos. Por padrão, qualquer arquivo novo que um usuário crie será propriedade do grupo principal do usuário. O comando id pode ser usado para verificar o grupo principal do usuário:
sysadmin@localhost:~$ id -g 
1001
Os usuários também podem acessar arquivos e dispositivos se forem membros de grupos secundários. O comando id também pode ser usado para verificar as associações de grupos secundários do usuário:
sysadmin@localhost:~$ id -G 
1001 4 27
Sem passar por nenhuma opção ao comando, a ID lista as associações de grupo primário e secundário:
sysadmin@localhost:~$ id 
uid=1001(sysadmin) gid=1001(sysadmin) groups=1001(sysadmin),4(adm),27(sudo)
Um nome de usuário pode ser adicionado para determinar os grupos de um usuário específico:
sysadmin@localhost:~$ id sysadmin 
uid=1001(sysadmin) gid=1001(sysadmin) groups=1001(sysadmin),4(adm),27(sudo)
Isso alinha com o conteúdo do arquivo /etc/group, como uma busca por sysadmin revela:
sysadmin@localhost:~$ cat /etc/group | grep sysadmin 
adm:x:4:sysadmin 
sudo:x:27:sysadmin 
sysadmin:x:1001:
13.3.3 Alterando a propriedade do grupo de um arquivo existente
Para alterar o proprietário do grupo de um arquivo existente, o comando do arquivo chgrp group_name pode ser usado. Os usuários só podem alterar a propriedade dos arquivos que possuem. O novo proprietário do arquivo do grupo também deve ser um grupo ao qual o usuário é membro:
sysadmin@localhost:~$ touch sample 
sysadmin@localhost:~$ ls -l sample 
-rw-rw-r-- 1 sysadmin sysadmin 0 Dec 10 00:44 sample 
sysadmin@localhost:~$ chgrp games sample 
-rw-rw-r--. 1 sysadmin games 0 Oct 23 22:12 sample
sysadmin@localhost:~$
Para alterar a propriedade do grupo de todos os arquivos de uma estrutura de diretório, use a opção -R no comando chgrp. Por exemplo, o comando chgrp -R games test_dir alteraria a propriedade do grupo do diretório test_dir e todos os arquivos e subdiretórios do diretório test_dir.
Há também um comando chown que pode ser usado para alterar o proprietário de um arquivo ou diretório de um usuário. No entanto, esse comando só pode ser usado pelo usuário root. Usuários regulares não podem "fornecer" seus arquivos a outro usuário.
13.4 Fazer logon como Root
Existem muitas maneiras diferentes de executar um comando que requer privilégios administrativos ou de root. Como já mencionado, efetuar login no sistema, pois o usuário root permite que você execute comandos como administrador. Isso é potencialmente perigoso porque você pode esquecer que você está logado como root e pode executar um comando que pode causar problemas no sistema. Como resultado, não é recomendado fazer o login como usuário root diretamente.
Porque usar a conta root é potencialmente perigoso, você só deve executar comandos como root se forem necessários privilégios administrativos. Se a conta de root estiver desativada, como está na distribuição do Ubuntu, os comandos administrativos podem ser executados usando o comando sudo. Se a conta root estiver habilitada, um usuário normal pode executar o comando su para alternar contas para a conta raiz.
Quando você faz login no sistema diretamente como root para executar comandos, então tudo sobre sua sessão é executado como usuário root. Se estiver usando o ambiente gráfico, isso é especialmente perigoso, pois o processo de login gráfico é composto por vários executáveis ​​diferentes (programas que são executados durante o login). Cada programa que funciona como o usuário root representa uma ameaça maior do que um processo executado como um usuário padrão, pois esses programas teriam permissão para fazer quase qualquer coisa, enquanto os programas de usuário padrão são muito restritos no que eles podem fazer.
O outro perigo potencial para iniciarsessão no sistema como root é que uma pessoa que faz isso pode esquecer de se fechar para fazer seu trabalho não administrativo. Isso significa que programas como navegadores, clientes de e-mail, etc, serão executados como usuários root sem restrições sobre o que eles poderiam fazer. O fato de que várias distribuições do Linux, nomeadamente o Ubuntu, não permitem que os usuários façam login como o usuário root deve ser uma implicação suficiente para que essa não seja a maneira preferida de executar tarefas administrativas.
13.5 Usando o comando su
O comando su permite que você execute um shell como um usuário diferente. Por padrão, se uma conta de usuário não for especificada, o comando su abrirá um novo shell como usuário root. Ao mudar para o usuário raiz é o que o comando su é usado com mais freqüência, ele também pode mudar para outros usuários também.
Uma opção comum que é usada com o comando su é a opção -l, que resulta no novo shell sendo um shell de logon. O uso do comando su com uma opção de shell de login geralmente é importante para garantir que qualquer comando executado seja executado corretamente, pois o shell de login configura totalmente o novo shell com as configurações do novo usuário. Um shell sem login essencialmente apenas altera o UID, mas não registra completamente o usuário. A opção -l pode ser abreviada como simples ou soletrada como --login.
Como a conta raiz é usada por padrão com o comando su, os dois comandos a seguir são formas equivalentes de iniciar um shell como usuário root:
su - root
su -
Depois de pressionar Enter para executar um desses comandos, o usuário deve fornecer a senha do usuário root para iniciar o shell como usuário root. Se você não conhece a senha da conta para a qual você está mudando, o comando su falhará.
Depois de usar o shell iniciado pelo comando su para executar as tarefas administrativas necessárias, volte ao seu shell original (e a sua conta de usuário original) usando o comando exit.
sysadmin@localhost:~$ su - 
Password: 
root@localhost:~# id 
uid=0(root) gid=0(root) groups=0(root) 
root@localhost:~# exit 
logout 
sysadmin@localhost:~$ id 
uid=1001(sysadmin) gid=1001(sysadmin) groups=1001(sysadmin),4(adm),27(sudo) 
sysadmin@localhost:~$
13.6 Usando o comando sudo
Em distribuições que não permitem que o usuário root faça o login diretamente ou através do comando su, o processo de instalação configura automaticamente uma conta de usuário para poder usar o comando sudo para executar comandos como se eles fossem executados pelo usuário root.
Como o comando su, o comando sudo assume, por padrão, a conta de usuário root deve ser usada para executar comandos; para especificar uma conta de usuário diferente, use a opção -u.
Ao usar o comando sudo para executar um comando como usuário root, o comando solicitará a senha própria do usuário (e não a do usuário root). Este é um recurso de segurança que evitaria o acesso root não autorizado se o usuário deixasse seu computador desacompanhado. O prompt para a senha não aparecerá novamente, desde que o usuário continue a executar comandos sudo com menos de cinco minutos de tempo.
O uso do comando sudo para executar um comando administrativo resultará em uma entrada colocada em um arquivo de log. Esta entrada incluirá o nome de usuário que executou o comando, o comando que foi executado e a data e hora em que o comentário foi executado. Isso permite uma maior responsabilidade, em comparação com um sistema em que muitos usuários podem saber a senha de root e podem fazer login diretamente como root ou usar o comando su para executar comandos como usuário root.
Você pode usar o comando sudo para executar um comando que requer privilégios de root. Por exemplo, você precisa ser o usuário root para visualizar o arquivo /etc/shadow. O comando sudo head /etc/shadow executaria o comando principal como o usuário root:
sysadmin@localhost:~$ head /etc/shadow 
head: cannot open `/etc/shadow' for reading: Permission denied 
sysadmin@localhost:~$ sudo head /etc/shadow 
[sudo] password for sysadmin: 
root:$6$4Yga95H9$8HbxqsMEIBTZ0YomlMffYCV9VE1SQ4T2H3SHXw41M02SQtfAdDVE9mqGp2hr20q
.ZuncJpLyWkYwQdKlSJyS8.:16464:0:99999:7::: 
daemon:*:16463:0:99999:7::: 
bin:*:16463:0:99999:7::: 
sys:*:16463:0:99999:7::: 
sync:*:16463:0:99999:7::: 
games:*:16463:0:99999:7::: 
man:*:16463:0:99999:7::: 
lp:*:16463:0:99999:7::: 
mail:*:16463:0:99999:7::: 
news:*:16463:0:99999:7::: 
sysadmin@localhost:~$
Uma grande vantagem em usar o sudo para executar comandos administrativos é que reduz o risco de que um usuário executa acidentalmente um comando como root. A intenção de executar um comando é clara; O comando é executado como root se prefixado com o comando sudo. Caso contrário, o comando é executado como um usuário regular.
13.6.1 Configurando o comando sudo
Se o comando sudo não for configurado automaticamente durante a instalação, ele pode ser configurado para funcionar manualmente após a instalação. Inicialmente, isso exigiria iniciar sessão como o usuário root (ou usar o comando su para alternar para a conta raiz), mas depois que ele foi configurado, os usuários especificados poderão executar comandos sudo. Você configura o acesso ao comando sudo executando o comando visudo.
O comando visudo irá colocá-lo em um programa de editor, por padrão, o editor vi (ou vim) na maioria dos sistemas, o que pode ser um desafio para usuários novatos do Linux usar. Para configurar outro editor, exporte a variável EDITOR com o valor do editor que você preferiria. Por exemplo, para usar o editor gedit em vez de vi/vim, você executaria o comando export EDITOR=gedit antes de executar o comando visudo.
O uso do comando visudo abrirá o arquivo de configuração /etc/sudoers para edição. Embora as configurações avançadas do comando sudo sejam possíveis através deste arquivo, eles estão além do escopo deste curso. Basicamente, as entradas são feitas neste arquivo para especificar quais os usuários em que máquinas podem usar o comando sudo para executar comandos como outros usuários.
Esta entrada padrão...
root	ALL=(ALL) 	ALL
...pode ser lido como, “o usuário root pode em TODAS as máquinas atuarem como TODOS OS usuários para executar todos os comandos”. Para permitir que um usuário como sysadmin execute todos os comandos como todos os usuários usando o comando sudo, uma entrada como a seguinte pode ser adicionada:
sysadmin ALL=(ALL) ALL
13.7 Usando o comando who
O comando who exibe uma lista de usuários que atualmente estão logados no sistema, onde eles foram logados e quando eles iniciaram sessão. Através do uso de opções, esse comando também pode exibir informações como o nível de execução atual (um estado funcional do computador) e o tempo que o sistema foi inicializado.
Por exemplo:
sysadmin@localhost:~$ who
root 	tty2 2013-10-11 10:00
sysadmin	tty1 2013-10-11 09:58 (:0)
sysadmin 	pts/0 2013-10-11 09:59 (:0.0)
sysadmin 	pts/1 2013-10-11 10:00 (example.com)A tabela a seguir descreve a saída do comando who:
	Coluna
	Exemplo
	Descrição
	username
	root
	Esta coluna indica o nome do usuário que iniciou sessão. Observe que, por "logado", significamos "qualquer processo de login e qualquer janela de terminal aberta".
	terminal
	tty2
	Esta coluna indica em qual janela de terminal o usuário está trabalhando.
Se o nome do terminal começar com tty, isso é uma indicação de um login local, pois este é um terminal de linha de comando regular.
Se o nome do terminal começar com pts, isso indica que o usuário está usando um pseudo terminal ou executando um processo que age como um terminal. Isso pode significar que o usuário possui um aplicativo de terminal executado no X Windows, como o gnome-terminal ou o xterm ou que eles podem ter usado um protocolo de rede para se conectar ao sistema, como ssh ou telnet.
	date
	2013-10-11 10:00 (example.com)
	Isto indica quando o usuário iniciou sessão.
Após a data e a hora em que o usuário fez logon no sistema, algumas informações de localização podem aparecer.
Se as informações de localização contiverem um nome de host, nome de domínio ou endereço IP, o usuário iniciou sessão remotamente.
Se houver dois pontos e um número, isso indica que eles realizaram um login gráfico local.
Se nenhuma informação de localização for mostrada na última coluna, isso significa que o usuário efetuou o login por meio de um processo de linha de comando local.
Se você quiser exibir as informações de status do sistema, o comando who pode fazer isso usando várias opções. Por exemplo, a opção -b mostrará a última vez que o sistema foi iniciado e a opção -r mostrará o tempo que o sistema atingiu certo nível de execução:
sysadmin@localhost:~$ who -b -r
 system boot 	2013-10-11 09:54
 run-level 5 2013-10-11 09:54
13.8 Usando o comando w
O comando w fornece uma lista mais detalhada sobre os usuários atualmente no sistema do que o comando who. Ele também fornece um resumo do status do sistema. Por exemplo:
sysadmin@localhost:~$ w
 10:44:03 up 50 min, 4 users, load average: 0.78, 0.44, 0.19
USER 	TTY FROM	 LOGIN@ IDLE 	JCPU 	PCPU WHAT
root 	tty2 - 10:00 43:44 	0.01s 	0.01s -bash
sysadmin 	tty1 :0 09:58 50:02	5.68s 	0.16s pam: gdm-password
sysadmin	pts/0 :0.0 09:59 0.00s 0.14s 	0.13s ssh 192.168.1.2
sysadmin 	pts/1 example.com 10:00 0.00s 	0.03s 	0.01s w
A primeira linha de saída do comando w é idêntica à do comando uptime. Mostra a hora atual, quanto tempo o sistema está executando, o número total de logins atuais (usuários) e a carga no sistema em média nos últimos períodos de tempo de 1, 5 e 15 minutos. A média de carga é a utilização da CPU, onde um valor de 100 significaria uso completo da CPU durante esse período de tempo.
A tabela a seguir descreve o resto da saída do comando w:
	Coluna
	Exemplo
	Descrição
	USER
	root
	Esta coluna indica o nome do usuário que está logado.
	TTY
	tty2
	Esta coluna indica em qual janela de terminal o usuário está trabalhando.
	FROM
	example.com
	Onde o usuário efetuou o login.
	LOGIN@
	10:00
	Quando o usuário efetuou o login.
	IDLE
	43:44
	Quanto tempo o usuário ficou ocioso desde o último comando que eles executaram.
	JCPU
	0.01s
	O tempo total de CPU (s = segundos) usado por todos os processos (programas) é executado desde o login.
	PCPU
	0.01s
	O tempo total da CPU para o processo atual.
	WHAT
	-bash
	O processo atual que o usuário está executando.

Outros materiais