sviluppo-web-qa.it

creare home directory dopo aver creato gli utenti

Ho creato alcuni utenti con:

$ useradd john

e ho dimenticato di specificare il parametro -m per creare la home directory e far copiare i file scheletro a ciascun utente. ora voglio farlo e non voglio ricreare tutti gli utenti (deve esserci un modo più semplice). quindi, c'è un modo per creare le directory degli utenti e copiare i file di scheletro?

Ho pensato di creare le directory, copiarle per l'utente corrispondente, copiare tutti i file scheletro e copiarli per l'utente corrispondente. ma se c'è un comando come useradd -m che non crea di nuovo l'utente, ma crea le directory, sarebbe meglio.

72
cd1

Potrebbe sembrare un'idea sciocca, ma se gli utenti non stanno effettivamente facendo nulla, potresti fare:

cat /etc/passwd | cut -f 1 -d : >/tmp/users.list

Quindi modifica /tmp/users.list per contenere solo gli utenti che desideri. Quindi fa:


for i in `cat /tmp/users.list`
do
    userdel $i
    useradd -m $i
done

Tuttavia, molte distribuzioni basate su Redhat creeranno una nuova directory home al primo accesso, a condizione che sia specificata in/etc/passwd dove dovrebbe trovarsi la directory.

Per provarlo, fai un "su -" e vedi se fa "la cosa giusta". In caso contrario, lo script sopra funzionerà abbastanza bene, penso.

17
dotwaffle

Inoltre puoi usare mkhomedir_helper

Usage: /sbin/mkhomedir_helper <username> [<umask> [<skeldir>]]
105
Rahul Patil

Sarà necessario creare manualmente la directory degli utenti. Ciò richiede tre passaggi:

  1. Crea directory in conformità a /etc/passwd, di solito ci sarà già una voce/home/login.
  2. Copia i file iniziali da/etc/skel
  3. E infine impostare le autorizzazioni giuste:

    • mkdir /home/YOU
    • cd /home/YOU
    • cp -r /etc/skel/. .
    • chown -R YOU.YOURGROUP .
    • chmod -R go=u,go-w .
    • chmod go= .

A proposito: mi manca sempre il -m opzione anche per useradd. Almeno i sistemi basati su Debian dovrebbero avere un comando adduser, che consiglio su useradd. Se ti sei perso -m opzione potrebbe anche valere la pena considerare deluser e quindi ricreare l'utente con le opzioni appropriate.

Modifica: aggiunto -r per copiare anche le directory.

18
math
mkdir -p /home/john
chown john:john /home/john
usermod -d /home/john john

Questo dovrebbe fare il trucco, credo

14
David Rickman

Puoi usare qualcosa come pam_mkhomedir per evitare che questo possa mai costituire un problema per gli utenti in futuro. pam_mkhomedir è un modulo PAM che crea automaticamente la home directory di un utente all'accesso se non esiste, e lo popola con i file da/etc/skel (o qualunque altra directory skel specificata).

Questo è anche un approccio ben scalabile perché continuerà a risolvere questo problema se in futuro dovessi passare il repository utente a un servizio di directory come LDAP.

9
jgoldschrafe

Nel mio caso, il volume home è stato danneggiato e ho deciso di ricostruirlo da zero poiché non sono presenti molti dati, ma voglio conservare le informazioni di accesso degli utenti, quindi ho ricreato manualmente le home directory con questo 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

Se modifichi /etc/login.defs contenere

CREATE_HOME yes

allora le home directory verranno create automaticamente per tutti gli utenti futuri, a meno che tu non dica al sistema no di farlo.

Un'altra opzione è utilizzare PAM per gli accessi e utilizzare il modulo pam_mkhomedir per creare automagicamente l'omedir al primo accesso.

2
Jenny D

Il mio primo passo dopo aver fatto un useradd è di su - <user>.

Crea le home directory, copia scheletri, ecc. - Almeno nella casella CentOS 4 lo faccio più frequentemente.

0
warren

Accedi con l'utente john e scrivi da una shell:

xdg-user-dirs-update

Questo è tutto! Non usare Sudo o su, non è necessario l'accesso root per creare alcune directory. Da un account root, puoi usare:

Sudo -u john xdg-user-dirs-update

In questo modo, eseguirai il comando come john, che può essere utile se hai fatto l'errore con più di un utente.