Baixe o app para aproveitar ainda mais
Prévia do material em texto
Capítulo 14 - Criar um novo usuário 14.1 Introdução No capítulo anterior, você viu que as informações da conta do usuário são armazenadas no arquivo /etc/passwd e as informações de autenticação do usuário (dados da senha) são armazenadas no arquivo /etc/shadow. Criar um novo usuário pode ser realizado adicionando manualmente uma nova linha a cada um desses arquivos, mas geralmente não é a técnica recomendada. Ao usar um comando apropriado para adicionar um novo usuário, esses arquivos podem ser modificados de forma automática e segura. Se você fosse modificar manualmente esses arquivos, você arriscaria cometer um erro que poderia impedir que todos os usuários pudessem fazer o login normalmente. Em algumas distribuições, criar uma nova conta de usuário também cria automaticamente uma conta de grupo para o usuário, chamado Grupo Privado de Usuários (UPG). Nesses sistemas, o nome do grupo e do usuário seria o mesmo e o único membro desse novo grupo seria o novo usuário. Para distribuições que não criam uma UPG, os usuários novos normalmente recebem o grupo "usuários" como seu grupo principal. O administrador pode criar manualmente contas de grupo que são privadas para o usuário, mas é mais comum que o administrador crie grupos para vários usuários que precisam colaborar. As contas de usuário podem ser modificadas a qualquer momento para adicioná-las ou removê-las de membros da conta de grupo, mas os usuários devem pertencer a pelo menos um grupo para uso como seu grupo primário. Antes de começar a criar usuários, você deve planejar como você usará grupos. Os usuários podem ser criados com membros em grupos que já existem ou usuários existentes podem ser modificados para ter membros em grupos existentes. Se você já planejou quais usuários e grupos deseja, é mais eficiente criar seus grupos primeiro e criar seus usuários com suas associações de grupo. Caso contrário, se você criar seus usuários primeiro e, em seguida, seus grupos, você precisará dar um passo extra para modificar seus usuários para torná-los membros de seus grupos. 14.2 Criando um Grupo O motivo mais comum para criar um grupo é fornecer uma maneira para os usuários compartilhar arquivos. Um exemplo disso pode ser onde existem várias pessoas que trabalham juntas no mesmo projeto e precisam ser capazes de colaborar em documentos armazenados em arquivos para o projeto. Nesse cenário, o administrador pode fazer essas pessoas membros de um grupo comum, alterar a propriedade do diretório para o novo grupo e definir permissões no diretório que só permitirá que membros do grupo acessem os arquivos. Depois de criar ou modificar um grupo, você pode verificar as mudanças visualizando as informações de configuração do grupo no arquivo /etc/group com o comando grep. Se estiver trabalhando com serviços de autenticação baseados em rede, o comando getent pode mostrar-lhe grupos locais e baseados em rede. Para o uso local, esses comandos mostram o mesmo resultado, neste caso para o grupo raiz: root@localhost:~# grep root /etc/group root:x:0: root@localhost:~# getent group root root:x:0: O comando groupadd pode ser executado pelo usuário root para criar um novo grupo. O comando requer apenas o nome do grupo a ser criado. A opção -g pode ser usada para especificar um ID de grupo para o novo grupo: root@localhost:~# groupadd -g 506 research root@localhost:~# grep research /etc/group research:x:506: Se a opção -g não for fornecida, o comando groupadd fornecerá automaticamente um GID para o novo grupo. Para realizar isso, o comando groupadd examina o arquivo /etc/group e usa um número que é um valor maior do que o número GID mais alto atual. A execução dos seguintes comandos ilustra isso: root@localhost:~# grep research /etc/group research:x:506: root@localhost:~# groupadd development root@localhost:~# grep development /etc/group development:x:507: 14.2.1 Considerações sobre ID de grupo Em algumas distribuições Linux, particularmente aquelas baseadas no Red Hat, quando uma ID de usuário (UID) é criada, um grupo particular de usuários (UPG) também é criado com esse usuário como seu único membro. Nessas distribuições, o UID do usuário e o ID do grupo privado devem corresponder (seja o mesmo número). Portanto, você deve evitar a criação de GIDs nos mesmos intervalos numéricos onde você espera criar IDs de usuário (UIDs), para evitar um conflito entre um GID que você cria contra um número UPG criado para coincidir com um UID. Lembre-se de que os GID inferiores a 500 estão reservados para o uso do sistema. Pode haver momentos em que você deseja atribuir um GID inferior a 500. Para fazer isso, use o -r. A opção -r atribuirá ao novo grupo um GID que será menor que o UID padrão mais baixo: root@localhost:~# groupadd -r sales root@localhost:~# getent group sales sales:x:491: 14.2.2 Considerações de nomeação de grupo Seguir estas orientações para nomes de grupo irá ajudá-lo a selecionar um nome de grupo que será portátil (função corretamente com outros sistemas ou serviços): O primeiro caractere do nome deve ser um sublinhado _ ou um caractere alfabético em minúsculas a-z. São permitidos até 32 caracteres na maioria das distribuições do Linux, mas usar mais de 16 pode ser problemático, pois algumas distribuições podem não aceitar mais de 16. Após o primeiro personagem, os caracteres restantes podem ser alfanuméricos, o dash - ou um underscore _. O último caractere não deve ser um hífen -. Infelizmente, essas diretrizes nem sempre são aplicadas. O problema não é que o comando groupadd falhe necessariamente, mas que outros comandos ou serviços de sistema podem não funcionar corretamente. 14.3 Modificando um Grupo O comando groupmod pode ser usado para alterar o nome do grupo (com a opção -n) ou alterar o GID (com a opção -g) para o grupo. AVISO: alterar o nome do grupo pode causar confusão para os usuários que estavam familiarizados com o nome antigo e não foram informados sobre o novo nome. No entanto, alterar o nome do grupo não causará problemas ao acessar arquivos, uma vez que os arquivos são realmente de propriedade de GIDs, e não nomes de grupo. Por exemplo: root@localhost:~# ls -l index.html -rw-r-----. 1 root sales 0 Aug 1 13:21 index.html root@localhost:~# groupmod -n clerks sales root@localhost:~# ls -l index.html -rw-r-----. 1 root clerks 0 Aug 1 13:21 index.html Após o comando groupmod anterior, o arquivo index.html tem um nome diferente do proprietário do grupo. No entanto, todos os usuários que estavam no grupo de vendas estão agora no grupo de funcionários, então todos esses usuários ainda podem acessar o arquivo index.html. Novamente, isso ocorre porque o grupo é definido pelo GID, e não o nome do grupo. Por outro lado, se você alterar o GID para um grupo, todos os arquivos associados a esse grupo não serão mais associados a esse grupo. Na verdade, todos os arquivos associados a esse grupo não serão mais associados a nenhum nome de grupo. Em vez disso, esses arquivos serão de propriedade de um GID somente, conforme mostrado abaixo: root@localhost:~# groupmod -g 10003 clerks root@localhost:~# ls -l index.html -rw-r-----. 1 root 491 13370 Aug 1 13:21 index.html Esses arquivos sem nome de grupo são chamados de arquivos "órfãos". Como usuário root, você pode querer procurar por todos os arquivos pertencentes apenas a um GID (não associado a um nome de grupo). Isso pode ser realizado com a opção -nogroup para o comando find: root@localhost:~# find / -nogroup /root/index.html 14.4 Apagar um grupo Se você decidir excluir um grupo com o comando groupdel, lembre-se de que qualquer arquivo pertencente a esse grupo se tornará "órfão". Somente grupos suplementares podem ser excluídos, portanto, se um grupo for o grupo principal para qualquer usuário, ele não pode ser excluído. O administrador pode modificar qual grupo é o grupo principal de um usuário, de modo que um grupo que estava sendo usado como um grupo primário pode ser transformado em um grupo suplementar e, em seguida, pode ser excluído. Enquantoo grupo a ser excluído não é o grupo principal de um usuário, a exclusão do grupo é realizada usando o comando groupdel juntamente com o nome do grupo: root@localhost:~# groupdel clerks 14.5 Arquivo /etc/default/useradd Antes de começar a criar usuários para o seu sistema, você deve verificar ou estabelecer valores práticos que serão usados por padrão com o comando useradd. Isso pode ser feito modificando configurações nos arquivos de configuração que são usados pelo comando useradd. Garantir que os valores nesses arquivos de configuração sejam razoáveis antes de adicionar usuários podem ajudá-lo a economizar tempo e o problema de ter que corrigir as configurações da conta de usuário depois de adicionar os usuários. A opção -D no comando useradd permitirá que você visualize ou altere alguns dos valores padrão usados pelo comando useradd. Os valores mostrados pelo useradd -D também podem ser visualizados ou atualizados manipulando o arquivo /etc/default/useradd: root@localhost:~# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes A tabela a seguir descreve cada um desses valores: Campo Exemplo Descrição GROUP 100 Nas distribuições que não utilizam UPG, este será o grupo primário padrão para um novo usuário, se um não for especificado com o comando useradd. Este é normalmente o grupo "usuários" com um GID de 100. Esta configuração afeta a configuração padrão do arquivo /etc/passwd destacado abaixo: bob:x:600:600:bob:/home/bob:/bin/bash A opção -g para o comando useradd permite que você use um grupo primário diferente do padrão ao criar uma nova conta de usuário. HOME /home O diretório /home é o diretório base padrão do qual o novo diretório inicial do usuário será criado. Isso significa que um usuário com um nome de conta de bob teria um diretório pessoal de /home/bob. Esta configuração afeta a configuração padrão do arquivo /etc/passwd destacado abaixo: bob:x:600:600:bob:/home/bob:/bin/bash A opção -b para o comando useradd permite que você use um grupo de diretório base diferente do padrão ao criar uma nova conta de usuário. INACTIVE -1 Esse valor representa o número de dias após a expiração da senha que a conta está desabilitada. Um valor de -1 significa que este recurso não está habilitado por padrão e nenhum valor "inativo" é fornecido para novas contas por padrão. Esta configuração afeta a configuração padrão do arquivo /etc/shadow destacado abaixo em: bob:pw:15020:5:30:7:60:15050: A opção -f para o comando useradd permite que você use um valor INACTIVO diferente do padrão ao criar uma nova conta de usuário. EXPIRE Por padrão, não há valor definido para a data de validade. Normalmente, uma data de validade é definida em uma conta individual, não todas as contas por padrão. Por exemplo, se você tivesse um empreiteiro contratado para trabalhar até o final do dia 1 de novembro de 2013, você poderia garantir que eles não seriam capazes de fazer login depois dessa data, usando o campo EXPIRE. Esta configuração afeta a configuração padrão do arquivo /etc/shadow destacado abaixo: bob:pw:15020:5:30:7:60:15050: A opção -e no comando useradd permite que você use um valor EXPIRE diferente do padrão ao criar uma nova conta de usuário. SHELL /bin/bash A configuração SHELL indica o shell padrão para usuários quando eles fazem login no sistema. Esta configuração afeta a configuração padrão do arquivo /etc/passwd destacado abaixo: bob:x:600:600:bob:/home/bob:/bin/bash A opção -s para o comando useradd permite que você use um shell de logon diferente do padrão ao criar uma nova conta de usuário. SKEL /etc/skel O valor SKEL determina qual diretório "esqueleto" terá seu conteúdo copiado para o diretório inicial dos novos usuários. O conteúdo deste diretório é copiado para o diretório inicial do novo usuário e o novo usuário recebe propriedade dos novos arquivos. Isso fornece aos administradores uma maneira fácil de "preencher" uma nova conta de usuário com os principais arquivos de configuração. A opção -k para o comando useradd permite que você use um diretório SKEL diferente do padrão ao criar uma nova conta de usuário. CREATE_MAIL_SPOOL yes Um "spool de email" é um arquivo onde o email recebido é colocado. Atualmente, o valor para criar um spool de email é sim, o que significa que os usuários, por padrão, são configurados com a capacidade de receber e armazenar correios locais. Se você não está planejando usar o correio local, esse valor pode ser alterado para no (não). Para modificar um dos valores padrão do useradd, o arquivo /etc/default/useradd pode ser editado com um editor de texto. Outra técnica (mais segura) é usar o comando useradd -D. Por exemplo, se você quisesse permitir que os usuários tenham senhas expiradas para as quais ainda pudessem fazer login por até trinta dias, então você poderia executar: root@localhost:~# useradd -D -f 30 root@localhost:~# useradd -D GROUP=100 HOME=/home INACTIVE=30 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes 14.6 Arquivo /etc/login.defs O arquivo /etc/login.defs também contém valores que serão aplicados por padrão aos novos usuários que você crie com o comando useradd. Ao contrário do /etc/default/useradd, que pode ser atualizado com o comando useradd -D, o /etc/login.defs geralmente é editado diretamente pelo administrador para alterar seus valores. Este arquivo contém muitos comentários e linhas em branco, então, se você quiser apenas visualizar linhas que não sejam comentários ou linhas em branco (as configurações de configuração reais), você pode usar o seguinte comando grep: root@localhost:~# grep -Ev '^#|^$' /etc/login.defs MAIL_DIR /var/mail/spool PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_MIN_LEN 5 PASS_WARN_AGE 7 UID_MIN 500 UID_MAX 60000 GID_MIN 500 GID_MAX 60000 CREATE_HOME yes UMASK 077 USERGROUPS_ENAB yes ENCRYPT_METHOD SHA512 MD5_CRYPT_ENAB no O exemplo acima representa um arquivo /etc/login.defs típico da distribuição do CentOS 6 com seus valores. A tabela a seguir descreve cada um desses valores: Campo Exemplo Descrição MAIL_DIR /var/mail/spool O diretório no qual o arquivo de spool de email do usuário será criado. PASS_MAX_DAYS 99999 Esta configuração determina o número máximo de dias que um usuário pode continuar a usar a mesma senha. Uma vez que é padrão para 99999 dias, ou mais de 200 anos, efetivamente significa que os usuários nunca precisam mudar sua senha. Organizações com políticas efetivas para manter senhas seguras geralmente alteram esse valor para 60 ou 30 dias. Esta configuração afeta a configuração padrão do arquivo /etc/shadow destacado abaixo: bob:pw:15020:5:30:7:60:15050: PASS_MIN_DAYS 0 Com este conjunto para um valor padrão de 0 (zero), o menor tempo que um usuário é necessário para manter uma senha é zero dias, o que significa que eles podem mudar imediatamente uma senha que eles acabaram de definir. Se o valor PASS_MIN_DAYS foi definido para 3 dias, depois de configurar uma nova senha, o usuário precisaria esperar três dias antes de poder mudar de novo. Esta configuração afeta a configuração padrão do arquivo /etc/shadow destacado abaixo: bob:pw:15020:3:30:7:60:15050: PASS_MIN_LEN 5 Isso indica o número mínimo de caracteres que uma senha deve conter. PASS_WARN_AGE 7 Este é o padrão para o campo de aviso. À medida que um usuário se aproxima do número máximo de dias que eles podem usar sua senha, o sistema verificará se é hora de começar a avisar o usuário sobre a mudança de senha no login. Esta configuração afeta a configuração padrão do arquivo /etc/shadow destacado abaixo: bob:pw:15020:3:30:7:60:15050: UID_MIN 500 O UID_MIN determina o primeiro UID que será atribuído a um usuário comum. Qualquer usuário com um UID que seria menor do que esse valor seria para uma conta do sistema ou a conta raiz. UID_MAX 60000 Um UID tecnicamente poderiater um valor de mais de quatro bilhões. Para compatibilidade máxima, recomenda-se que o deixe no seu valor padrão de 60000. GID _MIN 500 O GID _MIN determina o primeiro GID que será atribuído a um grupo comum. Qualquer grupo com um GID que seria menor do que esse valor seria para um grupo de sistema ou o grupo raiz. GID _MAX 60000 Um GID como um UID poderia ter um valor de mais de quatro bilhões. Qualquer valor que você use para seu UID_MAX, deve ser usado para GID_MAX para suportar UPG. CREATE_HOME yes O valor disto determina se um novo diretório será ou não criado para o usuário, quando sua conta for criada. UMASK 077 Este UMASK funciona no momento em que o diretório inicial do usuário está sendo criado; Ele determinará quais serão as permissões padrão neste diretório. Usar o valor padrão de 077 para UMASK significa que somente o proprietário do usuário terá qualquer tipo de permissão para acessar seu diretório. O UMASK será abordado com mais detalhes em um capítulo posterior. USERGROUPS_ENAB yes Nas distribuições que apresentam um grupo particular para cada usuário, como mostra este exemplo do CentOS, o USERGROUPS_ENAB terá um valor de sim. Se o UPG não for utilizado na distribuição, isso terá um valor de não. ENCRYPT_METHOD SHA512 O método de criptografia que é usado para criptografar as senhas dos usuários no arquivo /etc/shadow. A configuração ENCRYPT_METHOD substitui a configuração MD5_CRYPT_ENAB (veja a próxima linha). MD5_CRYPT_ENAB no Esta configuração obsoleta originalmente permitiu ao administrador especificar o uso da criptografia MD5 de senhas em vez da criptografia DES original. Agora é substituído pela configuração do ENCRYPT_METHOD. 14.7 Criando um usuário Durante o processo de instalação, a maioria dos instaladores criará um usuário normal e dará a esse usuário a permissão para executar comandos administrativos com sudo ou exigir que a senha da conta de usuário raiz seja configurada como parte do processo de instalação. Isso significa que a maioria dos sistemas Linux será configurado para permitir que um usuário não privilegiado inicie sessão, além de ter a capacidade de efetivamente executar comandos como usuário raiz, direta ou indiretamente. Se o computador for usado por uma única pessoa, então, ter apenas uma conta de usuário regular pode ser suficiente. No entanto, se um computador precisa ser compartilhado por várias pessoas, é desejável ter uma conta separada para cada pessoa que a usa. Existem várias vantagens para os indivíduos que possuem suas próprias contas separadas: As contas podem ser usadas para conceder acesso seletivo a arquivos ou serviços. Por exemplo, o usuário de cada conta possui um diretório particular separado, geralmente não acessível aos outros usuários. O comando sudo pode ser configurado para permitir a execução de comandos administrativos selecionados. Se os usuários forem obrigados a usar o comando sudo para executar comandos administrativos, o sistema será logado quando os usuários executarem esses comandos. Cada conta pode ter associações e direitos de grupo associados, permitindo uma maior flexibilidade de gerenciamento. 14.7.1 Considerações sobre a conta Criar uma conta de usuário para usar com um sistema Linux pode exigir que você colete várias informações. Enquanto tudo o que for necessário é o nome da conta, você também pode planejar o UID, o grupo primário, os grupos suplementares, o diretório inicial, o diretório do esqueleto e o shell a ser usado. Ao planejar esses valores, considere o seguinte: Nome do usuário: O único argumento necessário para o comando useradd é o nome que deseja que a conta tenha. Este nome deve seguir as mesmas diretrizes discutidas anteriormente neste capítulo para nomes de grupos. Para resumir, deve ter 32 caracteres ou menos, começar com uma letra minúscula ou um sublinhado e, em seguida, só deve conter letras minúsculas, números, hifens e sublinhados. Se o usuário precisa acessar vários sistemas, geralmente é recomendado que o nome da conta seja o mesmo nesses sistemas. O nome da conta deve ser exclusivo para cada usuário. Identificador de usuário (UID): Depois de criar um usuário com um UID específico, o sistema geralmente aumentará apenas um UID para o próximo usuário que você criou. Se estiver conectado a uma rede com outros sistemas, você pode querer garantir que este UID seja o mesmo em todos os sistemas para ajudar a fornecer um acesso consistente. A opção -u para o comando useradd permite que você especifique o número UID. Normalmente, os UIDs podem variar de zero a mais de quatro bilhões, mas para maior compatibilidade com sistemas mais antigos, o valor UID máximo recomendado é de 60.000. Conforme discutido anteriormente, o usuário raiz possui um identificador de usuário (UID) de 0, que é o que faz com que a conta tenha privilégios especiais. Qualquer conta com um UID de zero efetivamente poderá atuar como o "administrador". As contas do sistema são contas geralmente usadas para executar serviços em segundo plano (chamados daemons). Ao não ter os serviços executados como usuário root, a quantidade de danos que pode ser feita com uma conta de serviço comprometida é limitada. As contas do sistema usadas pelos serviços geralmente usarão UIDs que estão no intervalo "reservado". Uma conta do sistema que é uma exceção a esta regra é o usuário nfsnobody, que possui um UID de 65534. O intervalo reservado usado para contas de serviço expandiu ao longo do tempo. Originalmente, era para UIDs entre 1 e 99. Então, expandiu para estar entre 1 e 499. A tendência atual entre as distribuições é que as contas do sistema serão qualquer conta que tenha um UID entre 1 e 999, mas o intervalo 1-499 também é comumente usado. Se você estiver configurando um novo sistema, é uma boa prática iniciar seus UIDs não inferiores a 1000. Isso também tem a vantagem de garantir que você tenha UIDs suficientes disponíveis para muitos serviços do sistema e lhe dará a capacidade de criar muitos GIDs em o intervalo "reservado". grupo primário: em distribuições que possuem UPG, este grupo será criado automaticamente com um nome GID e grupo que corresponde ao UID e ao nome de usuário da conta de usuário recém-criada. Em distribuições que não usam UPG, o grupo primário normalmente será padrão para o grupo "usuários" com um GID de 100. Para especificar um grupo primário com o comando useradd, use a opção -g com o nome ou GID do grupo. grupo(s) suplementar(es): se você deseja tornar o usuário um membro de um ou mais grupos suplementares, a opção -G pode ser usada para especificar uma lista separada por vírgulas de nomes ou números de grupo. Diretório inicial: por padrão, a maioria das distribuições criará o diretório inicial do usuário com o mesmo nome que a conta de usuário abaixo do /home. Por exemplo, se criar uma conta de usuário chamada sam, o novo diretório inicial do usuário seria /home/sam. Existem várias opções para o comando useradd que podem afetar a criação do diretório inicial do usuário: A opção -b permite que você especifique um diretório diferente no qual o diretório inicial do usuário será criado. Por exemplo: -b /test resultaria em um diretório pessoal de /test/sam para uma conta de usuário chamada sam. A opção -d permite que você especifique um diretório existente ou um novo diretório inicial para criar para o usuário. Este deve ser um caminho completo para o diretório inicial do usuário. Por exemplo: -d /home/sam A opção -m diz ao useradd para criar o diretório inicial; normalmente não é necessário, pois este é o comportamento padrão do comando useradd. No entanto, ao usar a opção -k (veja abaixo) para especificar um diretório de esqueleto diferente, a opção -m é necessária. A opção -M é usada para especificar o comando useradd que não deve criar o diretório inicial Diretório de esqueleto: Por padrão, o conteúdo do diretório /etc/skel é copiado para o diretório inicial do novo usuário. Os arquivos resultantes também são de propriedade do novo usuário.Ao usar a opção -k com o comando useradd, o conteúdo de um diretório diferente pode ser usado para preencher o diretório inicial de um novo usuário. Ao especificar o diretório de esqueleto com a opção -k, a opção -m deve ser usada ou então o comando useradd falhará com um erro informando, "a bandeira -k só é permitida com o sinalizador -m." shell: enquanto o shell padrão é especificado no arquivo /etc/default/useradd, ele também pode ser substituído pela opção useradd -s no momento da criação da conta. Mais tarde, o administrador pode usar a opção usermod -s para alterar o shell ou o usuário pode alterar seu shell com o comando chsh. É comum especificar o shell /sbin/nologin para que as contas sejam usadas como contas do sistema. Comentário: O campo de comentários, originalmente chamado de Sistema Geral de Sistema Elétrico Geral (GECOS), geralmente é usado para manter o nome completo do usuário. Muitos programas de login gráfico exibem o valor desse campo em vez do nome da conta. A opção -c dos comandos useradd e usermod permite que o valor desse campo seja especificado. 14.7.2 comando useradd Depois de verificar quais valores padrão serão usados e você reuniu as informações sobre o usuário, então você está pronto para criar uma conta de usuário. Um exemplo de um comando useradd usando algumas opções pareceria o seguinte: root@localhost:~# useradd -u 1000 -g users -G wheel,research -c 'Jane Doe' jane Este exemplo do comando useradd cria um usuário com um UID de 1000, um grupo primário de usuários, membros suplementares em roda e grupos de pesquisa, um comentário de "Jane Doe" e um nome de conta de jane. As informações sobre a conta de usuário do jane serão adicionadas automaticamente aos arquivos /etc/passwd e /etc/shadow, enquanto as informações sobre o acesso suplementar ao grupo do jane serão automaticamente adicionadas aos arquivos /etc/group e /etc/gshadow. Por exemplo: root@localhost:~# useradd -u 1000 -g users -G wheel,research -c "Jane Doe" jane root@localhost:~# grep jane /etc/passwd jane:x:1000:100:Jane Doe:/home/jane:/bin/bash root@localhost:~# grep jane /etc/shadow jane:!!:16003:0:99999:7::: root@localhost:~# grep jane /etc/group wheel:x:10:jane research:x:2000:jane root@localhost:~# grep jane /etc/gshadow wheel:::jane research:!::jane root@localhost:~# Tenha em atenção que a conta ainda não possui uma senha válida. Além disso, o arquivo de spool de correio /var/spool/mail/jane seria criado, o diretório /home/jane seria criado com permissões apenas permitindo o acesso do usuário do jane e o conteúdo do diretório /etc/skel seria copiado para o diretório: root@localhost:~# ls /var/spool/mail jane root rpc sysadmin root@localhost:~# ls /home jane sysadmin root@localhost:~# ls -a /home/jane . .. .bash_logout .bashrc .profile .selected_editor root@localhost:~# ls -a /etc/skel . .. .bash_logout .bashrc .profile .selected_editor root@localhost:~# 14.8 Escolhendo uma senha Escolher uma boa senha não é uma tarefa fácil, mas é fundamental que seja feito corretamente ou a segurança de uma conta (talvez todo o sistema) possa ser comprometida. Escolher uma boa senha é apenas um começo; você precisa ter muito cuidado com sua senha para que ela não seja revelada a outras pessoas. Você nunca deve contar a ninguém sua senha e nunca permitir que alguém a veja digite sua senha. Se você optar por anotar sua senha, então você deve armazená-la de forma segura em um lugar como um cofre ou cofre. É fácil fazer uma senha ruim! Se você usar qualquer informação na sua senha relacionada com você, essa informação também pode ser conhecida ou descoberta por outros, resultando em sua senha facilmente comprometida. Sua senha nunca deve conter informações sobre você ou qualquer pessoa que você conheça, como: primeiro nome nome do meio último nome aniversário telefone nomes de animais de estimação carteira de motorista seguro Social Existem inúmeros fatores a serem considerados quando você está tentando escolher uma senha para uma conta: Comprimento: O arquivo /etc/login.defs permite que o administrador especifique o comprimento mínimo da senha. Enquanto alguns acreditam que quanto mais tempo a senha, melhor, isso não é realmente correto. O problema com as senhas que são muito longas é que eles não são facilmente lembrados e, como resultado, eles são freqüentemente escritos em um local onde eles podem ser facilmente encontrados e comprometidos. Composição: uma boa senha deve ser composta por uma combinação de caracteres alfabéticos, numéricos e simbólicos. Tempo de vida: a quantidade de tempo que uma senha pode ser usada no máximo deve ser limitada por vários motivos: Se uma conta é comprometida e o tempo que a senha é válida é limitado, o intruso perderá o acesso, uma vez que a senha acabará se tornando inválida. Se uma conta não estiver sendo usada, ela pode ser desabilitada automaticamente quando a senha não for mais válida. Se os atacantes estão tentando um ataque de "força bruta" tentando todas as possíveis senhas, então a senha pode ser alterada antes que o ataque possa ter sucesso. No entanto, exigir que um usuário altere sua senha muitas vezes pode representar problemas de segurança, incluindo: A qualidade da senha que o usuário escolher pode sofrer. O usuário pode começar a escrever sua senha em papel, aumentando a possibilidade de que a senha possa ser descoberta. As contas de usuários raramente usadas podem expirar e exigir que a atenção administrativa seja reiniciada. As opiniões variam com a frequência com que os usuários devem ser forçados a mudar suas senhas. Para contas altamente sensíveis, recomenda-se alterar senhas com mais freqüência, como por exemplo, a cada 30 dias. Por outro lado, para contas não críticas sem acesso a informações confidenciais, há menos necessidade de mudanças frequentes. Para contas com risco mínimo, ter uma duração de 90 dias seria considerado mais razoável. 14.9 Definir uma senha de usuário Há várias maneiras de mudar a senha do usuário: o usuário pode executar o comando passwd, o administrador pode executar o comando passwd, fornecendo o nome do usuário como argumento e ferramentas gráficas também estão disponíveis. O administrador pode usar o comando passwd para definir a senha inicial ou alterar a senha da conta. Por exemplo, se o administrador criou a conta jane, a execução do jane passwd fornecerá ao administrador um prompt para configurar a senha da conta jane. Se concluído com sucesso, o arquivo /etc/shadow será atualizado com a nova senha do usuário. Enquanto os usuários regulares devem seguir muitas regras de senha, o usuário raiz só precisa seguir uma regra: a senha não pode ser deixada em branco. Todas as outras regras de senha que o usuário root viola simplesmente resultarão em um aviso sendo impresso na tela e a regra não sendo aplicada: root@localhost:~# passwd jane Enter new UNIX password: BAD PASSWORD: it is WAY to short BAD PASSWORD: is too simple Retype new UNIX password: passwd: password updated successfully root@localhost:~# Supondo que o administrador tenha configurado uma senha para uma conta de usuário, o usuário pode fazer login com o nome e a senha da conta. Depois que o usuário abrir um terminal, eles podem executar o comando passwd sem argumentos para alterar sua própria senha. Eles são solicitados para sua senha atual e então eles são solicitados a inserir a nova senha duas vezes. Como um usuário comum, pode ser difícil configurar uma senha válida porque todas as regras para a senha devem ser seguidas. Normalmente, o usuário épermitido três tentativas de fornecer uma senha válida antes do comando passwd sair com um erro. Usando os privilégios do usuário raiz, as senhas criptografadas e outras informações relacionadas à senha podem ser visualizadas ao visualizar o arquivo /etc/shadow. Lembre-se de que os usuários regulares não podem ver o conteúdo deste arquivo. 14.10 Usando o comando Chage Embora não esteja listado como um comando que você precisa saber nos objetivos do Linux Essentials, o comando chage oferece muitas opções para gerenciar as informações de envelhecimento da senha encontradas no arquivo /etc/shadow. Aqui está um resumo das opções de chage: Opção Curta Opção Longa Descrição -l --list Liste a informação do envelhecimento da conta -d LAST_DAY --lastday LAST_DAY Defina a data da última alteração de senha para LAST_DAY -E EXPIRE_DATE --expiredate EXPIRE_DATE Defina a conta para expirar no EXPIRE_DATE -h --help Mostre a ajuda para a mudança -I INACTIVE --inactive INACTIVE Configure a conta para permitir o login para INACTIVEdays após a expiração da senha -m MIN_DAYS --mindays MIN_DAYS Defina o número mínimo de dias antes da senha pode ser alterada para MIN_DAYS -M MAX_DAYS --maxdays MAX_DAYS Defina o número máximo de dias antes de uma senha ser alterada para MAX_DAYS -W WARN_DAYS --warndays WARN_DAYS Defina o número de dias antes da expiração de uma senha para começar a exibir um aviso para WARN_DAYS Um bom exemplo do comando chage seria alterar o número máximo de dias em que a senha de um indivíduo é válida para 60 dias: root@localhost:~# chage -M 60 jane 14.11 Modificando um usuário Antes de fazer alterações em uma conta de usuário, entenda que alguns comandos não modificarão com sucesso uma conta de usuário se o usuário estiver logado no momento (como, por exemplo, ao alterar o nome de login do usuário). Outras alterações que você pode fazer não serão efetivas se o usuário estiver logado, mas entrará em vigor assim que o usuário efetuar o logout e depois retornar novamente. Por exemplo, se você estiver modificando as associações de grupo, as novas associações estarão indisponíveis para o usuário até a próxima vez que o usuário fizer logon. Em ambos os casos, é útil saber como usar os comandos who, w e last, para que você possa estar ciente de quem está logado no sistema, pois isso pode afetar as mudanças que você quer fazer para um usuário. Os comandos who e w foram discutidos em um capítulo anterior. Ambos os comandos permitem que você veja quem está logado no sistema. O comando w é realmente o mais detalhado dos dois, pois mostra o tempo de atividade e as informações de carga do sistema, bem como o processo que cada usuário está executando. O comando last é um pouco diferente dos comandos who e w. Por padrão, ele também mostra o nome do usuário, terminal e local de login, não apenas das sessões de login atuais, mas também das sessões anteriores. Ao contrário dos comandos who e w, ele exibirá a data/hora em que o usuário fez logon no sistema. Se o usuário tiver desconectado o sistema, então ele exibirá o tempo total que o usuário tenha efetuado no login ou exibirá "ainda conectado". O comando last irá ler todo o histórico de login a partir do arquivo /var/log/wtmp e exibir todos os logins e reiniciar os registros por padrão. Um detalhe interessante dos registros de reinicialização é que ele exibe a versão do kernel do Linux que foi inicializada em vez do local de login. Ao fornecer um nome de usuário ou um nome de tty (terminal) como um argumento, o comando mostrará apenas os registros que correspondem a esse nome. Se você precisa descobrir quem foi logado em uma determinada data e hora, o comando last pode exibir isso se você usar a opção -t para especificar essa data e hora. 14.11.1 comando usermod O comando usermod oferece muitas opções para modificar uma conta de usuário existente. Você deve notar que a maioria dessas opções também está disponível com o comando useradd no momento em que você criou a conta. A tabela a seguir fornece um resumo das opções do usermod: Opção Curta Opção Longa Descrição -c COMMENT Define o valor do campo GECOS ou comentário para COMENTAR. -d HOME_DIR --home HOME_DIR Define um novo diretório inicial para o usuário. -e EXPIRE_DATE --expiredate EXPIRE_DATE Defina a data de validade da conta para EXPIRE_DATE. -f INACTIVE --inactive INACTIVE Configure a conta para permitir o login para INACTIVEdays após a expiração da senha. -g GROUP --gid GROUP Defina GROUP como grupo primário. -G GROUPS --groups GROUPS Defina grupos suplementares para uma lista especificada em GRUPOS. -a --append Anexe os grupos suplementares do usuário com os especificados por -G. -h --help Mostre a ajuda para usermod. -l NEW_LOGIN --login NEW_LOGIN Altere o nome de login do usuário. -L --lock Bloqueie a conta de usuário. -s SHELL --shell SHELL Especifique o shell de login para a conta. -u NEW_UID --uid NEW_UID Especifique o UID do usuário para ser NEW_UID. -U --unlock Desbloqueie a conta de usuário. Várias dessas opções são dignas de discussão por causa de como elas afetam o gerenciamento de usuários. Pode ser muito problemático alterar o UID do usuário com a opção -u, pois qualquer arquivo de propriedade do usuário será órfão. Por outro lado, especificar um novo nome de login para o usuário com -l não faz com que os arquivos sejam órfãos. A exclusão de um usuário com o comando userdel (veja a próxima seção) pode orfamar ou remover os arquivos do usuário no sistema. Em vez de excluir a conta, outra opção é bloquear a conta com a opção -L para o comando usermod. Bloquear uma conta impede que a conta seja usada, mas a propriedade dos arquivos permanece. Há algumas coisas importantes a serem conhecidas quanto à gestão dos grupos suplementares. Se você usar a opção -G sem a opção -a, então você deve listar todos os grupos aos quais o usuário pertenceria. Usar a opção -G sozinho pode levar a remover acidentalmente um usuário de todos os grupos suplementares anteriores aos quais o usuário pertencia. Se você usa a opção -a com -G, basta listar os novos grupos aos quais o usuário pertenceria. Por exemplo, se o usuário jane atualmente pertence à roda e grupos de pesquisa, então, para adicionar sua conta ao grupo de desenvolvimento, execute o seguinte comando: root@localhost:~# usermod -aG development jane 14.12 Excluir um usuário Quando você exclui uma conta de usuário, você também precisa decidir se deseja excluir o diretório inicial do usuário. Os arquivos do usuário podem ser importantes para sua organização e você pode até ter requisitos legais para manter os dados por um certo período de tempo, então tenha cuidado para não tomar esta decisão de forma leve. Além disso, a menos que você tenha feito cópias de backup dos dados, uma vez que você executou o comando para excluir o usuário e seus arquivos, não há uma inversão da ação. Para excluir o jane do usuário sem excluir o diretório inicial do usuário (/home/jane), você pode executar: root@localhost:~# userdel jane Tenha em atenção que excluir um usuário sem excluir seu diretório inicial significa que os arquivos do diretório inicial do usuário agora serão órfãos e esses arquivos serão de propriedade exclusiva do seu antigo UID e GID. Para excluir o usuário jane e excluir o diretório /home/jane também, use a opção -r: root@localhost:~# userdel -r jane AVISO: o comando acima excluirá apenas os arquivos do usuário em seu diretório inicial e seu spool de email. Se o usuário possui outros arquivos fora do seu diretório inicial, esses arquivos continuarão a existir como arquivos órfãos.
Compartilhar