Os usuários existentes em uma instalação do sistema Linux podem ser listados facilmente se conseguimos listar o arquivo de dados onde eles são catalogados pelo sistema, ao lado de várias outras informações pessoais importantes, como a sua senha (criptografada, naturalmente), seu nome, grupo primário, etc. Este fantástico arquivo é o /etc/passwd. Ver o seu conteúdo pode ser feito pelo comando abaixo (não precisa ser root):
Em geral, isto lista uma série de informações. Os grupos, analogamente, encontram-se no arquivo /etc/group, associados a algumas informações pertinentes, e podem ser listados da seguinte maneira (não precisa ser root):
Dependendo de como o sistema esteja configurado, as senhas dos usuários podem ficar em local específico, no arquivo /etc/shadow, que só pode ser lido ou modificado pelo root:
Como este arquivo é usado durante o login, ele é acessível a todos os usuário (para leitura), mas só pode ser modificado pelo administrador do sistema. Cada linha representa um usuário e contém seus dados específicos. Cada campo é separado do outro pelo caracter ":" (dois pontos). Observe a seqüência de dados presentes em cada linha, conforme mostra o trecho do arquivo abaixo:
1- nome do usuário: contém o nome da conta do usuário, que pode ter entre 1 e 32 caracteres. Em nosso caso, um usuário se chama "gdm" e o outro "paje";
2- É o local da senha. Se, ao invés disso, houver o caracter "x", então o arquivo indica que as senhas estão encriptadas no arquivo /etc/shadow, que só pode ser lido pelo root.
3- UID (User ID). Número identificador do usuário. Nunca existirão dois usuários com o mesmo número. O UID segue as seguintes regras: 0=root; 1-99=contas pré-definidas (ex: bin, sys, mail, games, irc); 100-999=reservados pelo sistema para contas administrativas e de gerenciamento interno; a partir de 1000=usuários convencionais. No caso acima, "gdm" é um usuário administrativo, mas "paje" é um usuário normal.
4- GID (Group ID). Número identificado do grupo primário do usuário. Um usuário pode estar associado a vários grupos, mas tem apenas um grupo denominado "primário". Quando o usuário cria um arquivo novo, por exemplo, este arquivo fica registrado como pertencente a este usuário seu criador e ao grupo ao qual ele está associado como grupo primário no momento de criação do arquivo.
5- Uma série de informações separadas por vírgulas (que nem sempre são cadastradas!), como o nome real do usuário, telefone, número da sala, etc.
6- O caminho completo (absoluto) do diretório do usuário.
7- O shell que será executado cada vez que este usuário fizer login. Em geral é /bin/bash (para usuários comuns), mas pode ser outro shell ou mesmo /bin/false, caso o usuário não seja autorizado a fazer login.
Não foi tão difĩcil entender estes campos, foi??
Verificando se um usuário existe mesmo, e sabendo suas informações:
Verificando todos os usuários convencionais (que, supostamente, possuem um diretório no /home):
Mostrando uma listagem simples, contendo somente o nome dos usuários, sem as demais informações da linha:
O comando "cut" usado no filtro "|" recorta o resultado do comando grep. Os parâmetros significam: "-d:"=delimitador (indica que será fornecida uma informação para delimitar o resultado), "-f1"=indica que deverá ser mostrado apenas o primeiro campo (field 1).
É claro que este comando todo pode ser armazenado em um shell script ou em uma aliases. Adicionalmente, gostaria de encorajá-lo a modificar o comando acima e personalizá-lo conforme deseje!! Sinta-se à vontade!!
Analogamente ao /etc/passwd, o /etc/group contém uma linha para cada grupo, onde as informações específicas do grupo são separadas pelo caracter ":" (dois pontos). Exemplo de trecho do arquivo:
video:x:44:paje,fulano,beltrano
1 :2: 3 :4
1- Nome do grupo;
2- Senha do grupo. Analogamente ao /etc/passwd, a senha é substituída pelo caracter "x" para ser armazenada em local seguro. Em muitos sistemas, a administração de grupos é feita exclusiva e diretamente pelo root, sem necessidades de senhas para os grupos.
3- GID (Group ID);
4- Lista de usuários que estão associados a este grupo, separados por vírgulas. Esta lista pode estar vazia, indicando que não há usuários associados ao grupo.
Bom, pessoal, espero que este artigo tenha ajudado... lembrem-se de que, aconteça o que acontecer, o mais importante é que COMENTEM!!
cat /etc/passwd
Em geral, isto lista uma série de informações. Os grupos, analogamente, encontram-se no arquivo /etc/group, associados a algumas informações pertinentes, e podem ser listados da seguinte maneira (não precisa ser root):
cat /etc/group
Dependendo de como o sistema esteja configurado, as senhas dos usuários podem ficar em local específico, no arquivo /etc/shadow, que só pode ser lido ou modificado pelo root:
cat /etc/shadow
- Entendendo o /etc/passwd
Como este arquivo é usado durante o login, ele é acessível a todos os usuário (para leitura), mas só pode ser modificado pelo administrador do sistema. Cada linha representa um usuário e contém seus dados específicos. Cada campo é separado do outro pelo caracter ":" (dois pontos). Observe a seqüência de dados presentes em cada linha, conforme mostra o trecho do arquivo abaixo:
gdm:x:105:112:Gnome Display Manager:/var/lib/gdm:/bin/false
paje:x:1001:1001:O Paje,,,:/home/gabriel:/bin/bash
1 :2: 3 : 4 : 5 :6 :7
1- nome do usuário: contém o nome da conta do usuário, que pode ter entre 1 e 32 caracteres. Em nosso caso, um usuário se chama "gdm" e o outro "paje";
2- É o local da senha. Se, ao invés disso, houver o caracter "x", então o arquivo indica que as senhas estão encriptadas no arquivo /etc/shadow, que só pode ser lido pelo root.
3- UID (User ID). Número identificador do usuário. Nunca existirão dois usuários com o mesmo número. O UID segue as seguintes regras: 0=root; 1-99=contas pré-definidas (ex: bin, sys, mail, games, irc); 100-999=reservados pelo sistema para contas administrativas e de gerenciamento interno; a partir de 1000=usuários convencionais. No caso acima, "gdm" é um usuário administrativo, mas "paje" é um usuário normal.
4- GID (Group ID). Número identificado do grupo primário do usuário. Um usuário pode estar associado a vários grupos, mas tem apenas um grupo denominado "primário". Quando o usuário cria um arquivo novo, por exemplo, este arquivo fica registrado como pertencente a este usuário seu criador e ao grupo ao qual ele está associado como grupo primário no momento de criação do arquivo.
5- Uma série de informações separadas por vírgulas (que nem sempre são cadastradas!), como o nome real do usuário, telefone, número da sala, etc.
6- O caminho completo (absoluto) do diretório do usuário.
7- O shell que será executado cada vez que este usuário fizer login. Em geral é /bin/bash (para usuários comuns), mas pode ser outro shell ou mesmo /bin/false, caso o usuário não seja autorizado a fazer login.
Não foi tão difĩcil entender estes campos, foi??
- Várias Maneiras de Listar Usuários
Verificando se um usuário existe mesmo, e sabendo suas informações:
grep gdm /etc/passwd
gdm:x:105:112:Gnome Display Manager:/var/lib/gdm:/bin/false
Verificando todos os usuários convencionais (que, supostamente, possuem um diretório no /home):
grep /home/ /etc/passwd
Mostrando uma listagem simples, contendo somente o nome dos usuários, sem as demais informações da linha:
grep /home/ /etc/passwd | cut -d: -f1
O comando "cut" usado no filtro "|" recorta o resultado do comando grep. Os parâmetros significam: "-d:"=delimitador (indica que será fornecida uma informação para delimitar o resultado), "-f1"=indica que deverá ser mostrado apenas o primeiro campo (field 1).
É claro que este comando todo pode ser armazenado em um shell script ou em uma aliases. Adicionalmente, gostaria de encorajá-lo a modificar o comando acima e personalizá-lo conforme deseje!! Sinta-se à vontade!!
- Entendendo o /etc/group
Analogamente ao /etc/passwd, o /etc/group contém uma linha para cada grupo, onde as informações específicas do grupo são separadas pelo caracter ":" (dois pontos). Exemplo de trecho do arquivo:
video:x:44:paje,fulano,beltrano
1 :2: 3 :4
1- Nome do grupo;
2- Senha do grupo. Analogamente ao /etc/passwd, a senha é substituída pelo caracter "x" para ser armazenada em local seguro. Em muitos sistemas, a administração de grupos é feita exclusiva e diretamente pelo root, sem necessidades de senhas para os grupos.
3- GID (Group ID);
4- Lista de usuários que estão associados a este grupo, separados por vírgulas. Esta lista pode estar vazia, indicando que não há usuários associados ao grupo.
Bom, pessoal, espero que este artigo tenha ajudado... lembrem-se de que, aconteça o que acontecer, o mais importante é que COMENTEM!!
17 comentários:
Excelente! Muito bom! Explêndido!Parabéns e muito obrigado.
Beleza, Silvio!! Obrigado!!
Uma outra dica:
Você pode construir ferramentas realmente poderosas se associar os comandos varridos neste tutorial com o comando "xargs". Há aqui no Pajé um tutorial mostrando detalhadamente como o "xargs" funciona:
Aplicando Comandos a vários Arquivos Recursivamente. Boa sorte!!!
Excelente !!!!
Obrigado pelo feedback, amigo!! Espero que o pajeonline continue sendo proveitoso!!
Beleza...
Ótimo, mas e o script?!
Preciso fazer algo semelhando mas, qndo adicionar o usuario no sistema quero criar automaticamente a public_html.
att.
Olá Mauricio,
Exatamente de qual script vc está falando?? Criar o public_html é apenas criar esta pasta no diretório do usuário e pode ser feito com um comando como:
mkdir /home/usuario/public_html
Claro, para que o Apache leia este diretório, ele precisa ser instruído para tal.
Aproveite e leia este artigo do Pajé:
Configurando o Apache para Ler Páginas Pessoais dos Usuários
Excelente, me ajudou muito!!!
Obrigado mesmo! Continue sempre postanto!
Obrigado, Xavier!!! Fico feliz de ter podido te ajudar!! Volte sempre ao Pajé!!
muito bom ! parabéns
Obrigado, Elvis! Espero que o pajeonline continue ajudando a você e a todos os que nos visitam!
Excelente
Muito obrigado.
Muito grato, Cristiano! Volte sempre ao pajeonline!
Abraços!
Bom dia!
Eu gostaria de criar um arquivo na minha \home e copiar para dentro deste arquivo todos os usuários como GID ou UID maior que 1000, alguém sabe como devo fazer?
Isso precisa ser feito via shell script. Você deve ler o arquivo com os usuários linha a linha e verificar o GID/UID de cada um. Se for maior que 1000, daí o script copia a linha toda para o arquivo novo. Para fazer coisas assim, escolha a tecnologia que lhe for mais conveniente. Algumas pessoas gostam de fazer em shell mesmo, rodando um script. Outras pessoas, fazem em Python. Não existe um comando único para este procedimento, mas, com os conhecimentos de uma linguagem de programação, é possível fazer isso tranquilamente. Se for fazem em shell script, dê uma olhada nos tutoriais da linguagem, especialmente o operador "for" e o comando "cut".
Boa sorte!
Espetacular, me ajudou nos meus estudos
Postar um comentário