ターミナルで既存のユーザーのデフォルトのホームディレクトリを作成します


151

どうすればいいですか?ホームディレクトリなしでユーザーを作成しましたが、ここで作成したいと思います。new_userという名前のフォルダーだけでなく、すべてのフォルダーと隠しファイルなどを含むデフォルトのホームディレクトリが必要です。


ユーザーがログインすると、これらのサブディレクトリ(ドキュメント、ダウンロードなど)が自動的に作成されます。私は端末から彼のログインを「シミュレート」する方法を探していますが。
アラアアリ

@Alaa su new_user:D
ラドゥラデアヌ

1
@RaduRădeanuええ、私はすでにそれを試しました、また試しましたsudo -i -u new_userが、うまくいきません。「Xログインをシミュレートする」必要があると思います...その方法がわかりません。
アラアアリ

2
ログインしても、ホームにサブディレクトリは作成されません。
ジョーRijo

回答:


231

以下を使用します(rootとして、またはrootでない場合はsudoを使用):

mkhomedir_helper username

これが機能するには、フォルダー/home/usernameが存在していてはなりません。

X関連のフォルダー(デスクトップ、ダウンロードなど)の場合、グラフィック環境でログインする必要があります。最初にログインしたときに自動的に生成されます。


1
シンプルで便利。このようにして、新しく作成されたホームディレクトリがシステムポリシーに準拠していることを確認できます。これは、それらのホームディレクトリを手動で変更したり知ることはありません。
ゲルロス

これは正解です。少なくとも、Ubuntu 14.04.2 LTSでうまくいきました。
クリスチャンウィルキー

1
これが機能する前に、まずユーザー名を/ etc / passwdに設定する必要がありました。
user79878

3
シンプル..うまくいく(tm)。受け入れられる答えである必要があります
ニュートピア

でディレクトリの権限を確認することを忘れないでくださいls -l /home。新しいディレクトリは他のすべてのユーザーが読み取り可能であることがわかったため、でこれらの権限を削除しましたchmod go-r-x /home/username
ドンカークビー

33

サブディレクトリ(ドキュメント、ダウンロードなど)は、ユーザーが最初にGNOME経由でログインしたときに自動的に作成されます。ただし、ホームディレクトリが正しい権限で作成されている場合に限ります。デモは次のとおりです。

alaa @ aa-lu:〜$ sudo useradd testinguser
 alaa @ aa-lu:〜$ sudo passwd testinguser
新しいUNIXパスワードを入力します。
新しいUNIXパスワードを再入力します。
passwd:パスワードは正常に更新されました
alaa @ aa-lu:〜$ sudo ls -l / home
合計20
drwxr-xr-x 55 alaa alaa 4096 Aug 22 22:00 alaa
drwx ------ 2ルートルート16384 6月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 Aug 22 22:00 alaa
drwx ------ 2ルートルート16384 6月5日09:46 lost + found
drwxr-xr-x 2 testinguser testinguser 4096 Aug 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「manpages」に従って)使用する必要はありません。

次に、アカウントからログアウトし、で再度ログインし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 Aug 23 10:05音楽
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:07写真
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Public
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がそれについて確認する必要があります。
ラドゥラデアヌ

これらの状況の例を教えてください=)?のmanページからuseradd:「useraddは/etc/default/useradd、または/homeデフォルトでHOME変数で指定されたベースディレクトリを使用します」。のHOME変数/etc/default/useraddはデフォルトでは定義されていないため、useraddは常にを使用します/home。とにかく、回答を編集し、確認のために部品を移動/etc/passwdします。
アラアアリ

ここに例を示します。別の例:ユーザーを削除しますが、ユーザーのディレクトリとファイルは削除しませんでした。その後、同じ名前のユーザーを再度追加します。そして、多くがあり、バグはありません:)
ラドゥRădeanu13年

/bin/shユーザー行にない場合は、そのユーザー/etc/passwd用のシェルを追加する必要があります。たとえば、デフォルトのシェルにusermod -s /bin/sh testuser
rubo77 14年

すべてのシステムにGNOMEがあるわけではなく、単にホームディレクトリを作成するためにユーザーを削除して再度追加するように誰かに提案するのは悪いアドバイスです。
ntwrkguru

12

更新:ソリューションが壊れており、私にとっても機能していません。

ユーザーのホームディレクトリが存在しない場合に作成する場合useraddは、-mフラグを指定してコマンドを実行します。これにより、/etc/skelディレクトリからすべてのファイルがコピーされます。

useradd -m username

システムの設定を構成する必要がある場合があります。manページによると:

  -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
「ユーザー 'new-user'は既に存在します」と表示されるため、これは新しいユーザーを作成しようとするようです。
ジョーリホ

-mとにかく新しいユーザーを作成するときにフラグもテストしましたが、機能しませんでした。スケルトンファイルのみをコピーします。
アラアアリ

@Jo:最初の投稿によると、ユーザーはすでに存在しているため、これはどのように間違っていますか。
クラフター

3
この答えは問題を解決しません。コピー/etc/skelしても、ホームディレクトリにサブディレクトリは作成されません。また、useradd -mユーザーが既に追加されているときではなく、新しいユーザーを作成するときに使用されます。
アラアアリ

投稿を更新したので、login.defs構成ファイルでCREATE_HOMEをyesに設定します。
クラフター

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私は数日前にテストしたばかりでadduser、ホームフォルダー自動的に作成されました。実際、最初のログイン後にホームフォルダーが自動的に設定されます。
ラドゥラデアヌ

他の質問のbashスクリプトを試してみますが、new_userというフォルダーを/ home /に作成して、/ etc / skelの内容をコピーすることはできませんか?それはそのbashスクリプトが何をするのですか?
ジョーリホ

@JoRijo回答を編集しました。
ラドゥラディアナヌ

@RaduRădeanuじゃないcp /etc/skel/* /home/new_username?また、2つの連続したchownコマンドを使用する理由はありますか?
アラーアリ

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.