J'ai créé des utilisateurs avec:
$ useradd john
et j'ai oublié de spécifier le paramètre -m
pour créer le répertoire personnel et faire copier les fichiers squelettes à chaque utilisateur. maintenant je veux le faire, et je ne veux pas recréer tous les utilisateurs (il doit y avoir un moyen plus simple). alors, existe-t-il un moyen de créer les répertoires utilisateur et de copier les fichiers squelettes?
J'ai pensé à créer les répertoires, à les montrer à l'utilisateur correspondant, à copier tous les fichiers squelettes et à les montrer à l'utilisateur correspondant. mais s'il y a une commande comme useradd -m
cela ne crée pas à nouveau l'utilisateur, mais crée les répertoires, ce serait mieux.
Cela peut sembler une idée stupide, mais si les utilisateurs ne font rien, vous pouvez faire:
cat /etc/passwd | cut -f 1 -d : >/tmp/users.list
Modifiez ensuite /tmp/users.list pour ne contenir que les utilisateurs souhaités. Alors fais:
for i in `cat /tmp/users.list`
do
userdel $i
useradd -m $i
done
Cependant, de nombreuses distributions basées sur Redhat vous créeront un nouveau répertoire personnel lors de votre première connexion, à condition qu'il soit spécifié dans/etc/passwd où le répertoire devrait être.
Pour tester cela, faites un "su -" et voyez si cela fait "la bonne chose". Si ce n'est pas le cas, le script ci-dessus fonctionnera très bien, je pense.
Vous pouvez également utiliser mkhomedir_helper
Usage: /sbin/mkhomedir_helper <username> [<umask> [<skeldir>]]
Vous devrez créer le répertoire des utilisateurs manuellement. Cela nécessite trois étapes:
/etc/passwd
, il y aura généralement déjà une entrée/home/login.Et enfin définissez les bonnes autorisations:
mkdir /home/YOU
cd /home/YOU
cp -r /etc/skel/. .
chown -R YOU.YOURGROUP .
chmod -R go=u,go-w .
chmod go= .
BTW: Je manque toujours le -m
option pour useradd également. Au moins les systèmes basés sur Debian devraient avoir une commande adduser
, que je recommande plutôt que useradd. Si vous avez manqué -m
option, il peut également être utile d'envisager de deluser
, puis de recréer l'utilisateur avec les options appropriées.
Modifier: ajouté -r
pour copier également les répertoires.
mkdir -p /home/john
chown john:john /home/john
usermod -d /home/john john
Cela devrait faire l'affaire je crois
Vous pouvez utiliser quelque chose comme pam_mkhomedir pour éviter que cela ne soit un problème avec les utilisateurs à l'avenir. pam_mkhomedir est un module PAM qui crée automatiquement le répertoire personnel d'un utilisateur à la connexion s'il n'existe pas, et le remplit avec des fichiers de/etc/skel (ou du répertoire skel que vous spécifiez).
Il s'agit également d'une approche parfaitement évolutive, car elle continuera à résoudre ce problème si vous basculez à l'avenir votre référentiel d'utilisateurs vers un service d'annuaire comme LDAP.
Dans mon cas, le volume d'accueil était corrompu et j'ai décidé de le reconstruire à partir de zéro car il n'y avait pas beaucoup de données impliquées, mais je veux conserver les informations de connexion des utilisateurs, j'ai donc recréé les répertoires personnels manuellement avec ce script:
#!/bin/bash
cat /etc/passwd | while IFS=: read n x i g c d r
do
# my system has uid started at 1000, but has nfsnobody at 65534:
if [[ "$i" -ge 1000 && "$i" -le 65000 && ! -x "$d" ]]
then
cp -av /etc/skel "$d"
chown -R "$i:$g" "$d"
# may needed in SELinux system:
restorecon -R "$d"
# add your chmod as your need:
chmod -R o-rw "$d"
fi
done
Si vous modifiez /etc/login.defs
contenir
CREATE_HOME yes
alors les répertoires personnels seront automatiquement créés pour tous les futurs utilisateurs, à moins que vous ne demandiez au système pas de le faire.
Une autre option consiste à utiliser PAM pour les connexions et à utiliser le module pam_mkhomedir pour créer automatiquement le homedir lors de la première connexion.
Ma première étape après avoir fait un useradd
est de su - <user>
.
Crée les répertoires personnels, copie les squelettes, etc. - au moins sur la boîte CentOS 4, je le fais le plus souvent.
Connectez-vous avec l'utilisateur john et écrivez à partir d'un shell:
xdg-user-dirs-update
C'est ça! N'utilisez pas Sudo ou su, vous n'avez pas besoin d'un accès root pour créer des répertoires. À partir d'un compte root, vous pouvez utiliser:
Sudo -u john xdg-user-dirs-update
De cette façon, vous exécuterez la commande en tant que john, ce qui peut être utile si vous avez fait l'erreur avec plus d'un utilisateur.