Eu criei alguns usuários com:
$ useradd john
e esqueci de especificar o parâmetro -m
para criar o diretório inicial e ter os arquivos esqueleto copiados para cada usuário. agora eu quero fazer isso e não quero recriar todos os usuários (deve haver uma maneira mais fácil). então, existe alguma maneira de criar os diretórios do usuário e copiar os arquivos esqueleto?
Pensei em criar os diretórios, mostrá-los ao usuário correspondente, copiar todos os arquivos esqueleto e enviá-los ao usuário correspondente. mas se houver um comando assim useradd -m
não cria o usuário novamente, mas cria os diretórios, seria melhor.
Também você pode usar
mkhomedir_helper
Você precisará criar o diretório de usuários manualmente. Isso requer três etapas:
/etc/passwd
, geralmente já haverá uma entrada /home/login.E, finalmente, defina as permissões corretas:
mkdir /home/YOU
cd /home/YOU
cp -r /etc/skel/. .
chown -R YOU.YOURGROUP .
chmod -R go=u,go-w .
chmod go= .
BTW: Eu sempre sinto falta da
-m
opção de useradd também. Pelo menos os sistemas baseados em Debian devem ter umadduser
comando, que eu recomendo sobre useradd. Se você perdeu-m
a opção, também pode valer a pena considerardeluser
e recriar o usuário com as opções adequadas.Editar: Adicionado
-r
para copiar também diretórios.Isso pode parecer uma ideia boba, mas se os usuários não estiverem realmente fazendo nada, você pode fazer:
cat /etc/passwd | cut -f 1 -d : >/tmp/users.list
Em seguida, edite /tmp/users.list para conter apenas os usuários que você deseja. Então faça:
No entanto, muitas distribuições baseadas em Redhat criarão um novo diretório inicial quando você efetuar o primeiro login, desde que seja especificado em /etc/passwd onde o diretório deve estar.
Para testar isso, faça um "su -" e veja se ele faz "a coisa certa". Se isso não acontecer, o script acima funcionará muito bem, eu acho.
Isso deve fazer o truque que eu acredito
Você pode usar algo como pam_mkhomedir para evitar que isso seja um problema com qualquer usuário no futuro. pam_mkhomedir é um módulo PAM que cria automaticamente o diretório inicial de um usuário no login, se ele não existir, e o preenche com arquivos de /etc/skel (ou qualquer diretório skel que você especificar).
Essa também é uma abordagem bem escalável porque continuará a resolver esse problema se você mudar seu repositório de usuário para um serviço de diretório como o LDAP no futuro.
No meu caso, o volume inicial estava corrompido e decidi reconstruí-lo do zero, pois não há muitos dados envolvidos, mas quero manter as informações de login dos usuários, então recriei os diretórios pessoais manualmente com este script:
Se você editar
/etc/login.defs
para conterentão os diretórios pessoais serão criados automaticamente para qualquer usuário futuro, a menos que você diga ao sistema para não fazê-lo.
Outra opção é usar o PAM para logins e usar o módulo pam_mkhomedir para criar automaticamente o homedir no primeiro login.
Faça login com o usuário john e escreva a partir de um shell:
É isso! Não use sudo ou su, você não precisa de acesso root para criar alguns diretórios. De uma conta root, você pode usar:
Dessa forma, você executará o comando como john, que pode ser útil caso você tenha cometido o erro com mais de um usuário.
Meu primeiro passo depois de fazer um
useradd
ésu - <user>
.Cria os diretórios pessoais, copia esqueletos, etc - pelo menos na caixa CentOS 4 eu faço isso com mais frequência.
Isso é exatamente o que o
mkhomedir_helper $USERNAME
comando faz.