Utwórz domyślny katalog domowy dla istniejącego użytkownika w terminalu

150

Jak mam to zrobic? Utworzyłem użytkownika bez katalogu domowego i teraz chcę go utworzyć. Nie tylko folder o nazwie new_user, chcę domyślny katalog domowy ze wszystkimi jego folderami i ukrytymi plikami itp.

Jo Rijo
źródło
Gdy użytkownik się zaloguje, te podkatalogi (dokumenty, pliki do pobrania itp.) Zostaną automatycznie utworzone. Chociaż szukam sposobów na „symulację” jego logowania przez terminal.
Alaa Ali,
@Alaa su new_user: D
Radu Rădeanu
1
@ RaduRădeanu tak, już próbowałem, próbowałem, sudo -i -u new_userale to nie działa. Myślę, że musimy „symulować logowanie X” ... nie wiem, jak to zrobić.
Alaa Ali,
2
logowanie nie tworzy podkatalogów w domu.
Jo Rijo,

Odpowiedzi:

230

Użyj następujących poleceń (jako root lub z sudo, jeśli nie root):

mkhomedir_helper username

Aby to zadziałało, folder /home/usernamenie może istnieć.

W przypadku folderów związanych z X (pulpit, pliki do pobrania itp.) Konieczne będzie zalogowanie się w środowisku graficznym; będą generowane automatycznie przy pierwszym logowaniu.

kavadias
źródło
1
Prosty i użyteczny. W ten sposób możesz również mieć pewność, że nowo utworzony katalog domowy jest zgodny z zasadami systemu, nie znając ich ani nie majstrując przy tym ręcznie.
gerlos
To poprawna odpowiedź, przynajmniej mi się udało na Ubuntu 14.04.2 LTS.
Christian Wilkie
1
Musiałem mieć swoją nazwę użytkownika w / etc / passwd zanim to zadziałało dla mnie.
user79878,
3
Proste .. po prostu działa (tm). Powinna być zaakceptowana odpowiedź
Newtopian
Nie zapomnij sprawdzić uprawnień do katalogu za pomocą ls -l /home. Odkryłem, że nowy katalog jest czytelny dla wszystkich innych użytkowników, więc usunąłem te uprawnienia za pomocą chmod go-r-x /home/username.
Don Kirkby
33

Podkatalogi (dokumenty, pliki do pobrania itp.) Są tworzone automatycznie, gdy użytkownik po raz pierwszy loguje się za pośrednictwem GNOME, pod warunkiem, że katalog domowy jest utworzony z odpowiednimi uprawnieniami. Oto demonstracja:

alaa @ aa-lu: ~ $ sudo useradd testinguser
 alaa @ aa-lu: ~ $ sudo passwd testinguser
Wpisz nowe hasło UNIX:
Wpisz ponownie nowe hasło UNIX:
passwd: hasło zaktualizowane pomyślnie
alaa @ aa-lu: ~ $ sudo ls -l / home
razem 20
drwxr-xr-x 55 alaa alaa 4096 22 sierpnia 22:00 alaa
drwx ------ 2 root root 16384 5 czerwca 09:46 utracony + znaleziony
alaa @ aa-lu: ~ $ sudo mkdir / home / testinguser
 alaa @ aa-lu: ~ $ sudo chown testinguser: testinguser / home / testinguser
 alaa @ aa-lu: ~ $ ls -l / home
razem 24
drwxr-xr-x 55 alaa alaa 4096 22 sierpnia 22:00 alaa
drwx ------ 2 root root 16384 5 czerwca 09:46 utracony + znaleziony
drwxr-xr-x 2 testinguser testinguser 4096 23 sierpnia 10:03 testinguser
alaa @ aa-lu: ~ $ ls -l / home / testinguser /
łącznie 0
alaa @ aa-lu: ~ $

Możesz sprawdzić, czy katalog domowy użytkownika jest poprawnie ustawiony, sprawdzając wpis w /etc/passwd. Domyślnie powinieneś zobaczyć katalog domowy ustawiony na /home/testinguser:

alaa @ aa-lu: ~ $ grep testinguser / etc / passwd
testinguser: x: 1001: 1001 :: / home / testinguser : / bin / sh

Jeśli nie widzisz /home/testingusertam katalogu domowego , musisz wykonać polecenie, sudo usermod -d /home/testinguser testinguseraby go zaktualizować, chociaż nie powinieneś używać tego polecenia, ponieważ powinno ono być ustawione domyślnie (zgodnie ze useraddstronami podręcznika).

Następnie wylogowałem się z mojego konta i zalogowałem ponownie testinguser, a tutaj automatycznie tworzone są podkatalogi:

alaa @ aa-lu: ~ $ ls -l / home / testinguser /
razem 36
drwxr-xr-x 2 testinguser testinguser 4096 23 sierpnia 10:05 Desktop
drwxr-xr-x 2 testinguser testinguser 4096 23 sierpnia 10:05 Dokumenty
drwxr-xr-x 2 testinguser testinguser 4096 23 sierpnia 10:05 Pliki do pobrania
drwxr-xr-x 2 testinguser testinguser 4096 23 sierpnia 10:05 Muzyka
drwxr-xr-x 2 testinguser testinguser 4096 23 sierpnia 10:07 Zdjęcia
drwxr-xr-x 2 testinguser testinguser 4096 23 sierpnia 10:05 Publiczny
drwxr-xr-x 2 testinguser testinguser 4096 23 sierpnia 10:05 Szablony
drwxr-xr-x 2 testinguser testinguser 4096 23 sierpnia 10:05 Filmy

Nie musiałem kopiować zawartości /etc/skel.

Jeśli to możliwe, czy możesz spróbować wykonać następujące kroki, tworząc kolejnego nowego użytkownika? Po zakończeniu możesz usunąć tego nowego użytkownika do sudo deluser testinguser && sudo rm -r /home/testinguser.

Jeśli to wszystko nie działało z tobą, myślę, że to błąd.

Alaa Ali
źródło
W niektórych sytuacjach, gdy korzystasz useradd, domyślny katalog domowy nowego użytkownika nie jest automatycznie ustawiony na /home/username. Więc najpierw musisz być tego pewien.
Radu Rădeanu
Czy możesz podać przykład takich sytuacji =)? Ze stron podręcznika useradd: „useradd użyje katalogu podstawowego określonego przez zmienną HOME w /etc/default/useraddlub /homedomyślnie”. Zmienna HOME w /etc/default/useraddnie jest domyślnie zdefiniowana, więc useradd zawsze będzie używał /home. Tak czy inaczej, zmienię odpowiedź i przesunę część, by sprawdzić /etc/passwd.
Alaa Ali
Przykład tutaj . Kolejny przykład: usuwasz użytkownika, ale nie usuwasz jego katalogów i plików; a następnie ponownie dodajesz użytkownika o tej samej nazwie. I jest ich wiele i nie ma błędów :)
Radu Rădeanu
Jeśli nie masz /bin/shw linii użytkownika /etc/passwd, musisz dodać powłokę dla tego użytkownika, na przykład domyślną powłokę zusermod -s /bin/sh testuser
rubo77
Nie wszystkie systemy mają GNOME i sugerowanie, że ktoś powinien usunąć i ponownie dodać użytkownika po prostu w celu utworzenia katalogu domowego, to zła rada.
ntwrkguru
12

AKTUALIZACJA: Rozwiązanie jest zepsute i dla mnie też nie działa.

Jeśli chcesz utworzyć katalog domowy użytkownika, jeśli nie istnieje, uruchom useraddkomendę z -mflagą. Spowoduje to skopiowanie wszystkich plików z /etc/skelkatalogu.

useradd -m username

Może być konieczne skonfigurowanie ustawień dla twojego systemu. Według strony podręcznika:

  -m, --create-home
    Create the user's home directory if it does not exist. The files and directories
    contained in the skeleton directory (which can be defined with the -k option)
    will be copied to the home directory.

    By default, if this option is not specified and CREATE_HOME is not enabled, no
    home directories are created.

i ponadto wskazuje:

CONFIGURATION

   The following configuration variables in /etc/login.defs change the behavior
   of this tool:

   CREATE_HOME (boolean)
       Indicate if a home directory should be created by default for new users.
rzemieślnik
źródło
8
wygląda na to, że próbuje utworzyć nowego użytkownika, ponieważ mówi mi, że „użytkownik” nowy użytkownik ”już istnieje”.
Jo Rijo,
Testowałem też -mflagę podczas tworzenia nowego użytkownika i nie działała; kopiuje tylko pliki szkieletu.
Alaa Ali
@Jo: A jak to jest niepoprawne, ponieważ zgodnie z początkowym postem użytkownik już istnieje.
crafter
3
Ta odpowiedź nie rozwiązuje problemu. Kopiowanie /etc/skelnie powoduje utworzenia podkatalogów w katalogu domowym. Jest również useradd -mużywany podczas tworzenia nowego użytkownika, a nie wtedy, gdy użytkownik jest już dodany.
Alaa Ali
Zaktualizowałem post, więc ustaw CREATE_HOME na yes w pliku konfiguracyjnym login.defs.
crafter
5

Jeśli utworzyłeś nowego użytkownika za pomocą adduserpolecenia, nie musisz tworzyć katalogu domowego dla nowego użytkownika. Katalog domowy o nazwie z nazwą użytkownika w /homekatalogu, zawierający następujące podkatalogi: Pulpit, Pobieranie, Dokumenty, Muzyka, Zdjęcia, Wideo (i inne), dla nowego użytkownika zostanie utworzony automatycznie.

Jeśli utworzyłeś nowego użytkownika za pomocą useraddpolecenia, uruchom następujące polecenia w terminalu:

sudo -i     #enter your user password when you are asked
gedit /etc/passwd

edytować /etc/passwdplik jako root (jest to najważniejszy krok). Znajdź wiersz z nazwą nowego użytkownika i ustaw dla niego domyślny katalog domowy:

new_username:x:1001:1001::/home/new_username:/bin/sh

W tym wierszu możesz także dodać prawdziwą nazwę dla nowego użytkownika lub ustawić domyślną powłokę. Coś takiego:

new_username:x:1001:1001:Real New Username,,,:/home/new_username:/bin/bash

Uważaj, nie wprowadzaj żadnych innych zmian.

Po zapisaniu pliku, aby wyjść z konta root, uruchom następujące polecenia:

mkdir /home/new_username                                #to create the directory /home/new_username
cp -r /etc/skel/. /home/new_username                    #to copy skeleton files to /home/new_username
chown -R new_username:new_username /home/new_username   #to change the owner of /home/new_username to the new user

Po wykonaniu wszystkich tych czynności folder domowy nowego użytkownika zostanie automatycznie zapełniony po pierwszym zalogowaniu.

Zobacz także: Jak utworzyć folder domowy użytkownika po utworzeniu konta?

Radu Rădeanu
źródło
O ile pamiętam, folder domowy nie jest tworzony automatycznie, musisz go ręcznie utworzyć i zaktualizować wpis użytkownika /etc/passwd(jeśli jeszcze go nie ma). Gdy użytkownik się zaloguje, folder domowy zostanie automatycznie zapełniony tymi podkatalogami. Jednak wszystko to jest załatwione, gdy ktoś dodaje użytkownika adduser, zamiast useradd.
Alaa Ali,
@Alaa Właśnie przetestowałem kilka dni temu i użyłem adduser: folder domowy jest tworzony automatycznie. I rzeczywiście, folder domowy zostanie automatycznie zapełniony po pierwszym zalogowaniu.
Radu Rădeanu,
wydaje się, że nic to nie robi. może wypróbuję skrypt bash z drugiego pytania, ale czy nie mogę po prostu utworzyć folderu w / home / o nazwie nowy_użytkownik, a następnie skopiować do niego zawartość / etc / skel? czy to właśnie robi ten skrypt bash?
Jo Rijo,
@JoRijo Zredagowałem swoją odpowiedź.
Radu Rădeanu
@ RaduRădeanu nie masz na myśli cp /etc/skel/* /home/new_username? Czy jest też powód, dla którego używasz dwóch kolejnych chownpoleceń?
Alaa Ali
3

Wszystko, czego naprawdę potrzebujesz, to folder domowy, aby działał. Jako root

cd /home
cd mkdir username
chown username username
chgrp username username

Logując się po raz pierwszy, należy utworzyć wszystkie niezbędne pliki, które wydają się być tymi:

drwxr-xr-x 16 fotanus fotanus 4096 Jun  4 17:46 .
drwxr-xr-x  9 root    root    4096 Jun  4 17:43 ..
drwx------ 11 fotanus fotanus 4096 Jun  4 17:46 .cache
drwx------ 13 fotanus fotanus 4096 Jun  4 17:46 .config
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Desktop
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Documents
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Downloads
drwx------  3 fotanus fotanus 4096 Jun  4 17:46 .gconf
drwxrwxr-x  2 fotanus fotanus 4096 Jun  4 17:46 .gstreamer-0.10
-rw-------  1 fotanus fotanus  334 Jun  4 17:45 .ICEauthority
drwxr-xr-x  3 fotanus fotanus 4096 Jun  4 17:45 .local
drwx------  4 fotanus fotanus 4096 Jun  4 17:45 .mozilla
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Music
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Pictures
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Public
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Templates
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Videos
-rw-------  1 fotanus fotanus   55 Jun  4 17:45 .Xauthority
-rw-------  1 fotanus fotanus  711 Jun  4 17:45 .xsession-errors
fotanus
źródło