터미널에서 기존 사용자의 기본 홈 디렉토리 생성


150

어떻게해야합니까? 홈 디렉토리가없는 사용자를 작성했으며 이제는 디렉토리를 작성하려고합니다. new_user라는 폴더뿐만 아니라 모든 폴더와 숨겨진 파일 등이있는 기본 홈 디렉토리가 필요합니다.


사용자가 로그인하면 해당 하위 디렉토리 (문서, 다운로드 등)가 자동으로 생성됩니다. 터미널을 통해 자신의 로그인을 "시뮬레이트"하는 방법을 찾고 있지만.
Alaa Ali

@Alaa su new_user: D
Radu Rădeanu

1
@ RaduRădeanu 예, 이미 시도했지만 시도 sudo -i -u new_user했지만 작동하지 않습니다. "X 로그인 시뮬레이션"을해야한다고 생각합니다. 어떻게해야할지 모르겠습니다.
Alaa Ali

2
로그인해도 집에 하위 디렉토리가 생성되지 않습니다.
Jo Rijo

답변:


230

다음을 사용하십시오 (루트로 또는 루트가 아닌 경우 sudo와 함께).

mkhomedir_helper username

이것이 작동 /home/username하려면 폴더 가 존재하지 않아야합니다.

X 관련 폴더 (데스크톱, 다운로드 등)의 경우 그래픽 환경에서 로그인해야합니다. 처음 로그인하면 자동으로 생성됩니다.


1
간단하고 유용합니다. 이렇게하면 새로 생성 된 홈 디렉토리가 시스템 정책이나 수동 땜질에 대한 지식 없이도 시스템 정책을 준수하는지 확인할 수 있습니다.
gerlos

이것은 정답입니다. 적어도 우분투 14.04.2 LTS에서 저에게 효과적이었습니다.
Christian Wilkie 2018 년

1
이것이 나를 위해 작동하기 전에 먼저 / etc / passwd에 내 사용자 이름이 있어야했습니다.
user79878

3
단순 .. 그냥 작동합니다 (tm). 정답이어야합니다
Newtopian

로 디렉토리의 권한을 확인하는 것을 잊지 마십시오 ls -l /home. 다른 모든 사용자가 새 디렉토리를 읽을 수 있음을 발견하여을 (를) 사용하여 해당 권한을 제거했습니다 chmod go-r-x /home/username.
돈 커크비

33

홈 디렉토리가 올바른 권한으로 작성된 경우 사용자가 그놈을 통해 처음 로그인하면 서브 디렉토리 (문서, 다운로드 등)가 자동으로 작성됩니다. 데모는 다음과 같습니다.

alaa @ aa-lu : ~ $ sudo useradd testinguser
 alaa @ aa-lu : ~ $ sudo passwd testinguser
새 UNIX 비밀번호를 입력하십시오.
새 UNIX 비밀번호를 다시 입력하십시오.
passwd : 비밀번호가 성공적으로 업데이트되었습니다
alaa @ aa-lu : ~ $ sudo ls -l / 홈
총 20
drwxr-xr-x 55 alaa alaa 4096 8 월 22 일 22:00 alaa
drwx ------ 2 루트 루트 16384 Jun 5 09:46 lost + found
alaa @ aa-lu : ~ $ sudo mkdir / home / testinguser
 alaa @ aa-lu : ~ $ sudo chown testinguser : testinguser / home / testinguser
 alaa @ aa-lu : ~ $ ls -l / home
총 24
drwxr-xr-x 55 alaa alaa 4096 8 월 22 일 22:00 alaa
drwx ------ 2 루트 루트 16384 Jun 5 09:46 lost + found
drwxr-xr-x 2 testinguser testinguser 4096 8 월 23 일 10:03 testinguser
alaa @ aa-lu : ~ $ ls -l / home / testinguser /
총 0
alaa @ aa-lu : ~ $

의 항목을 확인하여 사용자의 홈 디렉토리가 올바르게 설정되었는지 확인할 수 있습니다 /etc/passwd. 기본적으로 홈 디렉토리는 다음으로 설정되어 있어야합니다 /home/testinguser.

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

홈 디렉토리 /home/testinguser가 표시되지 않으면 명령을 실행하여 sudo usermod -d /home/testinguser testinguser업데이트해야합니다. 그러나이 명령은 기본적으로 설정되어 있어야합니다 ( useradd'맨 페이지 에 따라 ).

그런 다음 내 계정에서 로그 아웃하고로 다시 로그인하면 다음 testinguser과 같이 자동으로 생성 된 하위 디렉토리가 있습니다.

alaa @ aa-lu : ~ $ ls -l / home / testinguser /
총 36
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 데스크탑
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 문서
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 다운로드
drwxr-xr-x 2 testinguser testinguser 4096 8 월 23 일 10:05 음악
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:07 사진
drwxr-xr-x 2 testinguser testinguser 4096 8 월 23 일 10:05 공개
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 템플릿
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 비디오

의 내용을 복사 할 필요가 없었습니다 /etc/skel.

가능하면 다음 단계에 따라 다른 새 사용자를 작성해보십시오. 완료되면에 의해이 새 사용자를 제거 할 수 있습니다 sudo deluser testinguser && sudo rm -r /home/testinguser.

이 모든 것이 당신과 함께 작동하지 않으면, 나는 그것이 버그라고 생각합니다.


경우 useradd에 따라 새 사용자의 기본 홈 디렉토리가 자동으로 설정되지 않습니다 /home/username. 따라서 먼저 ypu는 그것에 대해 확신해야합니다.
Radu Rădeanu

이러한 상황에 대한 예를 들어 주시겠습니까? =)? 맨 페이지에서 useradd: "useradd는에서 HOME 변수로 지정된 기본 디렉토리를 사용 /etc/default/useradd하거나 /home기본적으로 사용합니다." HOME 변수는 /etc/default/useradd기본적으로 정의되어 있지 않으므로 useradd는 항상을 사용 /home합니다. 어쨌든 대답을 편집하고 파트를 이동하여 확인 /etc/passwd합니다.
Alaa Ali

여기 에 예가 있습니다 . 다른 예 : 사용자를 삭제했지만 그의 디렉토리와 파일은 삭제하지 않았습니다. 그런 다음 같은 이름의 사용자를 다시 추가하십시오. 그리고 많은 버그가 없습니다 :)
Radu Rădeanu

/bin/sh사용자 라인에 없는 경우 해당 사용자 /etc/passwd의 쉘을 추가해야합니다 (예 :usermod -s /bin/sh testuser
rubo77

모든 시스템에 그놈이있는 것은 아니며 누군가 홈 디렉토리를 만들기 위해 사용자를 제거하고 다시 추가하도록 제안하는 것은 좋지 않은 조언입니다.
ntwrkguru

12

업데이트 : 솔루션이 깨졌고 나에게도 효과가 없습니다.

존재하지 않는 경우 사용자의 홈 디렉토리를 작성 useradd하려면 -m플래그 와 함께 명령 을 실행하십시오 . /etc/skel디렉토리의 모든 파일이 복사됩니다 .

useradd -m username

시스템 설정을 구성해야 할 수도 있습니다. 매뉴얼 페이지에 따르면 :

  -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.

그리고 추가 표시 :

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
이것은 "사용자 '새 사용자'가 이미 존재합니다"라고 알려주기 때문에 새 사용자를 만들려고하는 것 같습니다.
Jo Rijo

-m어쨌든 새 사용자를 만들 때 플래그를 테스트 했지만 작동하지 않았습니다. 스켈레톤 파일 만 복사합니다.
Alaa Ali

@ 조 : 초기 게시물에 따르면 사용자가 이미 존재하기 때문에 이것이 어떻게 잘못 되었습니까?
crafter

3
이 답변은 문제를 해결하지 못합니다. 복사 /etc/skel해도 홈 디렉토리에 서브 디렉토리가 작성되지 않습니다. 또한 useradd -m사용자가 이미 추가 된 경우가 아니라 새 사용자를 만들 때 사용됩니다.
Alaa Ali

게시물을 업데이트 했으므로 login.defs 구성 파일에서 CREATE_HOME을 yes로 설정하십시오.
crafter

5

adduser명령으로 새 사용자를 만든 경우 새 사용자 의 홈 디렉토리를 만들 필요가 없습니다. 새 사용자에 /home대한 데스크탑, 다운로드, 문서, 음악, 사진, 비디오 등의 서브 디렉토리가 있는 디렉토리 의 사용자 이름으로 이름이 지정된 홈 디렉토리 가 자동으로 작성됩니다.

useradd명령으로 새 사용자를 작성한 경우 터미널에서 다음 명령을 실행하십시오.

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

/etc/passwd루트로 파일 을 편집하려면 (이것이 가장 중요한 단계입니다). 새 사용자 이름으로 줄을 찾아 다음과 같이 기본 홈 디렉토리를 설정하십시오.

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

이 줄에서 새 사용자의 실제 이름을 추가하거나 기본 쉘을 설정할 수도 있습니다. 이 같은:

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

다른 변경은하지 마십시오.

파일을 저장 한 후 루트 계정에서 나가기 전에 다음 명령을 실행하십시오.

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

이 모든 후에는 처음 로그인 한 후 새 사용자의 홈 폴더가 자동으로 채워집니다.

계정 생성 후 사용자 홈 폴더를 만드는 방법 도 참조하십시오 .


내가 기억하는 한, 홈 폴더는 자동으로 생성되지 않으므로 수동으로 생성하여 사용자 항목을 업데이트 /etc/passwd해야합니다 (아직없는 경우). 사용자가 로그인하면 홈 폴더가 해당 하위 디렉토리로 자동 채워집니다. 그러나이 모든 작업은 누군가 adduser대신을 사용하여 사용자를 추가하는 것입니다 useradd.
Alaa Ali

@Alaa 방금 며칠 전에 테스트 adduser했으며 홈 폴더 자동으로 만들어집니다. 실제로 처음 로그인하면 홈 폴더가 자동으로 채워집니다.
Radu Rădeanu

어쩌면 다른 질문에서 bash 스크립트를 시도해 볼 수 있지만 / home /에 new_user라는 폴더를 만든 다음 / etc / skel의 내용을 복사 할 수 없었습니까? 그 배쉬 스크립트가하는 일입니까?
Jo Rijo

@JoRijo 내 답변을 편집했습니다.
Radu Rădeanu

@ RaduRădeanu은 무슨 뜻 cp /etc/skel/* /home/new_username인가요? 또한 두 개의 연속 chown명령 을 사용하는 이유가 있습니까?
Alaa Ali

3

실제로 필요한 것은 홈 폴더 만 있으면 작동합니다. 루트로서

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

처음으로 로그인하면 필요한 모든 파일이 생성됩니다.

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.