ホームディレクトリが作成されていません


80

Ubuntuのシステム管理を理解しようとしています。そのため、例として、次を使用してダミーのユーザーを作成します

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の弁護において、「Debianで」を読んだとき、UbuntuディストリビューションではなくDebianでそれを意味すると考えました。UbuntuはDebian上に構築されていることは承知していますが、区別が行われていると思いました。
キースベネット

1
使用しましadduserたが、作成されたホームディレクトリにはファイルのみが含まれていますexamples.desktop。Ubuntuでデスクトップ、ダウンロードなどのデフォルトのフォルダーを作成するにはどうすればよいですか?(ssh経由でログインしています)
mcExchange

こんにちは、遅い応答と推測のみ申し訳ありませんが、これらのフォルダーは最初のGUIログインで自動的に作成されると思います。人々はまだここに着陸するかもしれないと思った;)
derHugo

adduser誰かが/etc/login.defsのCREATE_HOMEを「no」に変更した場合も、ディレクトリは作成されません。これを-mフラグで上書きできます。
ヌメノン

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を作成しません。」いいえ、これは解決策ではありません。
アストロフアンル

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を使用する必要がある場合は、おそらく-bオプションと-dオプションが必要です!


1

/home/lindalindaをユーザーとして追加する前にが存在しない場合、追加する必要があります--create-home

sudo useradd --create-home linda

1

ホームディレクトリが作成されなかった最も可能性の高い理由は、CREATE_HOME yesin がなかったためです/etc/login.defs

これを修正するには、@ OmPSまたは@RaduRă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****
    

    オプションが指定されていない/etc/adduser.conf場合 、adduserのデフォルトが選択--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_mkhomedirページから、次の行を追加します/etc/pam.d/login

    session  required  pam_mkhomedir.so skel=/etc/skel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.