Vraag maak thuismappen aan na het aanmaken van gebruikers


Ik heb een aantal gebruikers gemaakt met:

$ useradd john

en ik vergat om de parameter te specificeren -m om de hoofddirectory te maken en de skeletbestanden naar elke gebruiker te kopiëren. nu wil ik dat doen, en ik wil niet alle gebruikers recreëren (er moet een gemakkelijkere manier zijn). dus, is er een manier om de gebruikersmappen te maken en de skeletbestanden te kopiëren?

Ik dacht erover om de mappen te maken, ze naar de bijbehorende gebruiker te sturen, alle skeletbestanden te kopiëren en ze naar de betreffende gebruiker te sturen. maar als er een commando is zoals useradd -m dat maakt de gebruiker niet opnieuw aan, maar maak de mappen aan, het zou beter zijn.


57
2017-09-09 14:33


oorsprong


Is dit gebeurd met een grote lijst met gebruikers? - David Rickman
Ik had ongeveer 10 gebruikers met dit probleem. - cd1
Ik kan het niet helpen, maar voel dat Rahul het beste antwoord op jouw vraag heeft. Misschien moet je je geaccepteerde antwoord opnieuw bekijken? - jww


antwoorden:


Dit klinkt misschien als een gek idee, maar als de gebruikers eigenlijk niets doen, zou je kunnen doen:

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

Bewerk vervolgens /tmp/users.list alleen de gewenste gebruikers. Dan doen:


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

Veel op Redhat gebaseerde distributies zullen je echter een nieuwe homedirectory maken wanneer je je voor het eerst aanmeldt, op voorwaarde dat deze is gespecificeerd in / etc / passwd waar de directory zou moeten zijn.

Om dat te testen, doe een "su -" en kijk of het "het juiste ding" doet. Als dat niet het geval is, zal het bovenstaande script heel goed werken, denk ik.


15
2017-09-09 15:02



ja, het werkte, hoewel het nieuwe UID's en GID's creëerde (maar dat was geen probleem). maar ik ben vergeten een back-up te maken van de wachtwoorden van / etc / shadow, nu moeten de gebruikers hun wachtwoorden opnieuw instellen = / - cd1
Als hij ze onlangs heeft gemaakt, kan hij mogelijk het volgende doen: cat / etc / passwd | egrep '^ \: [0-9] {4} \:' | cut -f 1 -d:> /tmp/users.list Dat moet alleen UID van geldige gebruikers en niet van systeemgebruikers halen. - David Rickman
Hoe zit het met wachtwoorden, blijven ze hetzelfde? Ik vrees niet! - math
for i in $(awk -F: '{print $1 }' /etc/passwd) - Rahul Patil
waarom grep gebruiken of knippen met kat en met pijp, waarom niet direct op deze manier? knip -f 1 -d: </ etc / passwd> passwtmp - c4f4t0r


Ook kunt u gebruiken mkhomedir_helper

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

85
2018-05-17 03:59



Dit is het enige antwoord dat de vraag daadwerkelijk beantwoordt zonder een 10-regelscript. - Brendan Byrd
Eenvoudig. Bedankt! - mawaldne
Dit en het pamantwoord zijn de beste hier, bedankt. Knoei nooit met die bestanden met de hand als je het kunt vermijden. - h4unt3r
dka @ dev-04: / $ / sbin / mkhomedir_helper dka dka @ dev-04: / $ cd bash: cd: / home / dka: geen bestand of map - BigDong


U moet de gebruikersmap handmatig aanmaken. Dit vereist drie stappen:

  1. Maak een directory aan in overeenstemming met /etc/passwd, meestal is er al een / home / login-vermelding.
  2. Kopieer de eerste bestanden van / etc / skel
  3. En ten slotte stelt u de juiste rechten in:

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

BTW: ik mis altijd het -m optie voor useradd ook. Ten minste op Debian gebaseerde systemen zouden een adduser opdracht, die ik meer dan useradd aanbeveel. Als je gemist hebt -m optie kan het ook de moeite waard zijn om te overwegen deluser en maak vervolgens de gebruiker opnieuw met de juiste opties.

Bewerken: toegevoegd -r voor het kopiëren van ook mappen.


15
2018-05-12 16:14



Heeft dat: gebruikersnaamh = mijngebruikersnaam; mkdir / home / $ gebruikersnaamh; cp / etc / skel / * /etc/skel/.* / home / $ gebruikersnaamh; chown -R $ usernameh: $ usernameh / home / $ usernameh; chmod -R 755 / home / $ gebruikersnaamh; - Aki
Persoonlijk vind ik de 755 chmod niet leuk, omdat gebruikers hierdoor de eigenschappen van andere gebruikers kunnen bekijken. Ik denk dat elke gebruiker expliciet toegang tot anderen moet verlenen. Zoals public_html heeft op zijn minst nodig x bit-set, zou ik aanraden chmod 0711 op elk huis, public_html en soortgelijke mappen als standaard. - math
gebruik ook cp -r voor skel, anders worden directory's (.ssh) niet gekopieerd. - Aki
Op mijn systeem (Arch Linux op ARM) cp -r /etc/skel/.* recurse terug in / etc / en kopieert alle gegevens hier (/etc/skel/.* overeenkomsten / etc / skel / .. verwacht ik). De oplossing van superuser.com/a/61619/22153 lijkt te werken: cp -r / etc / skel / home / user (/ home / gebruiker moet niet bestaan ​​voordat het commando wordt uitgevoerd) - zpon
Ik veronderstel dat je schelpbolletjes breidt * met . (punt). Zo .. is gekoppeld. Heb ik gelijk? Veel shells schakelen dit standaard uit vanwege dergelijk gedrag. Welke schaal gebruik je? - math


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

Dat zou de truc moeten doen die ik geloof


12
2017-09-09 14:49



het zegt: usermod: no changes. en de map is niet gemaakt. het werkt ook niet met de -m keuze. - cd1
Alright. Ik heb uitgezocht waarom dat niet werkte, dat useradd $ HOME_DIR alleen in / home had gezet, tenzij je anders had aangegeven. Het lijkt nu automatisch in / home / $ USER te worden geplaatst. Een goedkope manier zou kunnen zijn om usermode -d / home / john2 -m john vervolgens usermod -d / home / john -m uit te voeren. - David Rickman
Nevermind dat werkt ook niet. - David Rickman
Nou ja, je hebt tenminste iets nieuws geleerd. - David Rickman
U bent vergeten de inhoud van / etc / skel / + chown recursive voor die nieuwe bestanden te kopiëren. usermode zou niet werken omdat de directory hier is geregistreerd maar niet is gemaakt, usermod zal niets doen. - Aki


Je kunt zoiets gebruiken pam_mkhomedir om te voorkomen dat dit ooit een probleem vormt met gebruikers in de toekomst. pam_mkhomedir is een PAM-module die bij het inloggen automatisch de basismap van een gebruiker aanmaakt als deze niet bestaat, en vult deze met bestanden van / etc / skel (of welke skelmap u ook opgeeft).

Dit is ook een mooi schaalbare aanpak, omdat het dit probleem zal blijven oplossen als je ooit je gebruikersrepository in de toekomst wilt overschakelen naar een directoryservice zoals LDAP.


9
2018-05-12 16:29





In mijn geval was het huisvolume beschadigd en ik besloot om het gewoon opnieuw op te bouwen, omdat er niet veel gegevens bij betrokken zijn, maar ik wil de login-informatie van gebruikers behouden, dus ik heb de homedirectories handmatig opnieuw gemaakt met dit 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

4
2017-10-08 16:45





Als je bewerkt /etc/login.defs bevatten

CREATE_HOME yes

vervolgens worden thuismappen automatisch gemaakt voor toekomstige gebruikers, tenzij u het systeem vertelt niet om dit te doen.

Een andere optie is om PAM te gebruiken voor aanmeldingen en de module pam_mkhomedir te gebruiken om automatisch de homedir te maken bij de eerste aanmelding.


2
2017-12-12 08:28





Login met de gebruiker John en schrijf vanuit een shell:

xdg-user-dirs-update

Dat is het! Gebruik geen sudo of su, je hebt geen root-toegang nodig om wat te maken directories. Vanuit een root-account kunt u het volgende gebruiken:

sudo -u john xdg-user-dirs-update

Op die manier voer je het commando uit als John, dat kan handig zijn als je de fout hebt gemaakt met meer dan één gebruiker.


0
2018-02-07 19:44





Mijn eerste stap na het doen van een useradd is om su - <user>.

Creëert de homedirectory's, kopieert skeletten, enz. - in elk geval op de CentOS 4-box doe ik dat het vaakst.


-1
2017-09-09 14:35