홈 디렉토리가 작성되지 않음


80

우분투의 시스템 관리를 이해하려고합니다. 예를 들어 다음을 사용하여 더미 사용자를 만듭니다.

sudo useradd -d /home/linda linda

passwd암호를 만들 수 있습니다. 다음을 사용하여 항목이 작성되었는지 확인합니다.cat /etc/passwd

linda:x:1004:1004::/home/linda:/bin/sh

그러나, 나는 때를 su - linda, 내가 도착

No directory, logging in with HOME=/

실제로 홈 디렉토리가 작성되지 않았습니다. 내가 무엇을 놓치고 있습니까?

감사.

답변:


87

man useradd 상태 :

useradd is a low level utility for adding users. On Debian,
administrators should usually use adduser(8) instead.

참고 low level utility

사용자를 추가하려면 adduser대신 사용하십시오. 더 높은 수준의 유틸리티입니다.


또한 -d옵션을 살펴보십시오 .

   -d, --home HOME_DIR
       The new user will be created using HOME_DIR as the value for the
       user's login directory. The default is to append the LOGIN name to
       BASE_DIR and use that as the login directory name. The directory
       HOME_DIR does not have to exist but will not be created if it is
       missing.

The directory will not be created if it is missing.

일반적으로 떨어져 유지 useradd, 사용하는 adduser대신.


2
OP의 수비에서 "데비안에서"를 읽을 때 우분투 배포판과 반대로 데비안에서 의미한다고 생각했습니다. 나는 우분투가 데비안을 기반으로한다는 것을 알고 있지만 구별이 이루어지고 있다고 생각했습니다.
Keith Bennett

1
나는 사용 adduser했지만 여전히 생성 된 홈 디렉토리에는 파일 만 포함되어 있습니다 examples.desktop. Ubuntu에서 데스크탑, 다운로드 등의 기본 폴더를 만들려면 어떻게해야합니까? (나는 ssh를 통해 로그인 함)
mcExchange

안녕, 늦게 응답 죄송 합니다만 추측하지만 그 폴더는 첫 번째 GUI 로그인시 자동으로 생성됩니다. ) 그냥 사람들은 여전히 여기에 착륙 거라고 생각
derHugo

adduser누군가가 /etc/login.defs의 CREATE_HOME을 "no"로 변경 한 경우 디렉토리를 작성하지 않습니다. -m플래그로 이를 대체 할 수 있습니다 .
Noumenon

31

홈 디렉토리를 작성하여 간단히 해결할 수 있습니다.

mkdir /home/linda
chown linda:linda /home/linda

다시 로그인을 시도하면 작동합니다.


13

man useradd따라 -d /home/linda옵션이 없으면 디렉토리를 만들지 않습니다 /home/linda. 따라서 수동으로 작성해야합니다. 이렇게하려면 터미널에서 다음 명령을 실행하십시오.

sudo -i                            #to get root privileges
mkdir /home/linda                  #to create the directory /home/linda
cp -rT /etc/skel /home/linda         #to populate /home/linda with default files and folders
chown -R linda:linda /home/linda   #to change the owner of /home/linda to user linda

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


7

/etc/defaults/useradd기본값을 변경하려면 살펴보십시오 . 사용하다:

useradd -m -d /home/joe -s /bin/bash.


"man useradd에 따라 -d / home / linda 옵션은 / home / linda 디렉토리를 만들지 않습니다."아니요, 해결책이 아닙니다.
astrojuanlu

useradd 매뉴얼 페이지에 따르면 -m 플래그는 다음과 같습니다. -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. useradd will create the home directory unless CREATE_HOME in /etc/login.defs is set to no.@astrojuanlu
Myles

5

/etc/pam.d/common-session처음 로그인 할 때 사용자의 홈 디렉토리가 작성되도록 수정할 수도 있습니다. 해당 파일에 다음 행을 추가하십시오.

...
session required pam_mkhomedir.so

이 기능은 시스템이 사용자가 컴퓨터 외부에서 관리되는 네트워크 (예 : LDAP)에있는 경우 특히 유용합니다.


5

사용 -m대신에 -d디렉토리가 생성됩니다, 그래서 :

sudo useradd -m linda

또한 linda일반 사용자 인 경우 /bin/bash기본 사용자로 사용하기 를 원할 수 있습니다 shell.

sudo useradd -m linda -s /bin/bash


3

아래 항목을 추가 /etc/login.defs하고 저장하십시오.

CREATE_HOME yes

이제 사용자 계정을 만드십시오. 홈 디렉토리가 생성됩니다.


그것은 나를 위해 일했다. 다양한 종류의 Linux에서 사용자를 원격으로 추가 / 관리하는 기본 스크립트가 필요했습니다. 이 변경 후 내 코드는 모든 서버에서 동일한 결과를 생성합니다. 감사.
sdkks

1

사용하십시오 adduser.

DESCRIPTION

 adduser  and  addgroup  add users and groups to the system according to
   command    line    options    and    configuration    information    in
   /etc/adduser.conf.   They  are  friendlier  front ends to the low level
   tools like useradd, groupadd and usermod programs, by default  choosing
   Debian  policy conformant UID and GID values, creating a home directory
   with skeletal configuration, running a custom script,  and  other  fea
   tures.  adduser and addgroup can be run in one of five modes:

useradd모든 옵션을 직접 추가해야합니다. 권한 및 기타 사항 포함 adduser정상적인 기본값을 기반으로하며 홈 디렉토리 자체를 추가합니다.

adduser를 사용해야하는 경우 -d 옵션과 함께 -b 옵션이 필요할 것입니다!


1

경우 /home/linda사용자로 린다를 추가하기 전에 존재하지 않는, 당신은 또한 추가해야합니다 --create-home.

sudo useradd --create-home linda

1

홈 디렉토리를 만들지 않은 가장 큰 이유는 CREATE_HOME yesin 이 없기 때문 입니다 /etc/login.defs.

@OmPS 또는 @Radu Rădeanu가 제안한 내용에 따라이 문제를 해결할 수 있습니다.

그러나 아래 명령 중 하나를 사용하여 앞으로이 문제를 극복하는 많은 방법이 있습니다.

  • 에 의한 결과 sudo adduser linda

    Adding user 'linda'
    Adding new group 'linda' (1001) ...
    Adding new user 'linda' (1001) with group 'linda' ...
    Creating home directory '/home/linda' ...
    Copying files from '/etc/skel' ...
    ****Password confirmation****
    ****Name prompt****

    adduser 명령의 기본값은 선택하는 /etc/adduser.conf경우 --home옵션이 지정되지 않았습니다. 또한 /etc/skel내용을 복사합니다 .

  • adduser와 함께 사용 --home

    sudo adduser --home /home/linda

사용자 홈 디렉토리가 지정한 사용자 이름과 다른 경우이를 원할 수 있다는 점을 제외하면 이전 옵션과 동일합니다.

  • useradd명령 할 기본 디렉토리를 지정하십시오 .

    sudo useradd -b /home
  • login.defs 사용 : /etc/login.defs다음 행을 수정 하고 추가하십시오 sudo useradd.

    CREATE_HOME   yes

참고 : 할 경우 man login.defs현재

섀도 암호 제품군에서 제공하던 기능 중 대부분은 이제 PAM에서 처리합니다. 따라서 /etc/login.defs는 더 이상 passwd (1)에서 사용되지 않거나 login (1) 및 su (1)에서 사용되지 않습니다. 대신 해당 PAM 구성 파일을 참조하십시오.

  • pam_mkhomedir PAM 모듈을 사용하십시오. man pam_mkhomedirpage에서 아래 행을 다음에 추가하십시오 /etc/pam.d/login.

    session  required  pam_mkhomedir.so skel=/etc/skel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.