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 de 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 do esqueleto?
Pensei em criar os diretórios, apresentando-os ao usuário correspondente, copiando todos os arquivos de esqueleto e apresentando-os ao usuário correspondente. mas se houver um comando como useradd -m
esse não criar o usuário novamente, mas criar os diretórios, seria melhor.
Respostas:
Isso pode parecer uma ideia tola, mas se os usuários não estiverem fazendo nada, você poderá:
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 no Redhat criarão um novo diretório inicial quando você fizer login pela primeira vez, desde que especificado em / etc / passwd onde o diretório deve estar.
Para testar isso, faça um "su -" e veja se faz "a coisa certa". Caso contrário, o script acima funcionará muito bem, eu acho.
fonte
for i in $(awk -F: '{print $1 }' /etc/passwd)
Você também pode usar
mkhomedir_helper
fonte
sudo /sbin/mkhomedir_helper dka
? o/home
diretório pertence aoroot
usuário e, portanto, eu imaginaria que um teria que ser root para criar um subdiretório.Você precisará criar o diretório de usuários manualmente. Isso requer três etapas:
/etc/passwd
, normalmente 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 para useradd também. Pelo menos os sistemas baseados no Debian devem ter umadduser
comando, que eu recomendo sobre o useradd. Se você perdeu a-m
opção, vale a pena considerardeluser
e recriar o usuário com as opções apropriadas.Editar: Adicionado
-r
para copiar também diretórios.fonte
public_html
precisa de pelo menosx
um conjunto de bits, eu recomendariachmod 0711
em cada homepublic_html
e diretórios semelhantes como padrão.cp -r /etc/skel/.*
retorne ao / etc / e copie todos os dados daqui (/etc/skel/.* corresponde a / etc / skel / .. espero). A solução de superuser.com/a/61619/22153 parece funcionar: cp -r / etc / skel / home / user (/ home / user não deve existir antes de executar o comando)*
com.
(ponto). Então..
é correspondido. Estou certo? Muitos shells desativam isso por padrão, devido a esse comportamento. Qual shell você usa?Isso deve fazer o truque que acredito
fonte
usermod: no changes
. e o diretório não é criado. também não funciona com a-m
opçãoVocê pode usar algo como pam_mkhomedir para impedir 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 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á resolvendo esse problema se você mudar o repositório do usuário para um serviço de diretório como LDAP no futuro.
fonte
No meu caso, o volume inicial estava corrompido e eu decidi reconstruí-lo do zero, já que não havia 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:
fonte
Se você editar
/etc/login.defs
para conteros diretórios pessoais serão criados automaticamente para futuros usuários, a menos que você instrua o sistema a 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 logon.
fonte
Meu primeiro passo depois de fazer um
useradd
ésu - <user>
.Cria os diretórios pessoais, copia esqueletos, etc. - pelo menos na caixa do CentOS 4, faço isso com mais frequência.
fonte
Entre com o usuário john e escreva a partir de um shell:
É isso aí! Não use sudo ou su, você não precisa de acesso root para criar alguns diretórios. Em uma conta raiz, você pode usar:
Dessa forma, você executará o comando como john, que poderá ser útil se você cometer um erro com mais de um usuário.
fonte
É exatamente isso que o
mkhomedir_helper $USERNAME
comando faz.fonte
Você pode simplesmente editar / etc / passwd. O segundo ao último campo é o diretório inicial do usuário.
fonte
ou
e leia
;)
fonte