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.


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.


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.


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.

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?


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.