ユーザーのデフォルトのホームディレクトリを変更するコマンド


203

Linux / Unixのユーザーのホームディレクトリ(既存の有効なユーザーのデフォルトのログインシェルを変更するchshに似たもの)を/etc/passwdファイルに触れずに変更する簡単なシェルコマンドがあるかどうかを知りたいです。ありがとう


なぜ/etc/passwdファイルに触れたくないのですか?あなたがする必要があります!
Basile Starynkevitch 2013

11
stackoverflow.com/questions/20071714/…はusermod -d /home/userxx /home/useryyLinuxのデフォルトのログインディレクトリを/ home / useryyに変更するには
Ibrahim

2
デフォルトのホームディレクトリについて尋ねるのはなぜですか?特定の既存のユーザー、または将来追加されるすべてのユーザーのホームディレクトリを変更しますか?デフォルトのログインシェルをchsh変更せず、特定のユーザーのログインシェルのみを変更することに注意してください... 特定のユーザーのを変更するには、次のように編集しますHOME/etc/passwd
Basile Starynkevitch

回答:


351

他の答えに関するイブラヒムのコメントは、既存のユーザーのホームディレクトリを変更する正しい方法です。

ユーザーのホームディレクトリを変更します。

usermod -d /newhome/username username

usermod既存のユーザーを編集するコマンドです。
-d(の省略形--home)は、ユーザーのホームディレクトリを変更します。

ユーザーのホームディレクトリを変更します+ユーザーの現在のディレクトリの内容を移動します。

usermod -m -d /newhome/username username

-m(の省略形--move-home)は、ユーザーの現在のディレクトリから新しいディレクトリにコンテンツを移動します。


1
コンテンツを移動するだけでなく、フォルダ全体を移動する=元のフォルダ(/home/username通常)が削除されるように見えます。
Betlista 2017

2
@STWこれは可逆的なタスクですか?一度実行してからパラメータを反転すると、ホームディレクトリは以前とまったく同じになりますか?
DanGordon 2018年

1
@DanGordonは、/newhome/username引数に何を入力しても、ユーザーのホームディレクトリになります。それが何であるかわかっている場合は、以前のホームディレクトリに戻すことができますが、「元に戻す」オプションはありません。
STW 2018年

3
2番目のコマンドのオプションの順序が間違っています。usermod -m -d /newhome/username username動作します。
Snozzlebert、

@Dominikありがとう-OS(Mac対Linux対BSDなど)に基づいて異なる可能性がありますが、もちろん間違っている可能性もあります
STW

28

Linuxから、新しいユーザーの追加中にデフォルトのユーザーホームディレクトリを変更します

テキストエディタを使用してこのファイルを開くだけで、次のように入力します。

vi /etc/default/useradd

HOME変数で定義されたデフォルトのホームディレクトリ。次のような行を見つけます。

HOME=/home

と置換する:

HOME=/iscsi/user

ファイルを保存して閉じます。これで、通常のuseraddコマンドを使用してユーザーを追加できます。

# useradd vivek
# passwd vivek

ユーザー情報を確認します。

# finger vivek

82
usermod -m -d /path/to/new/login/home/dir user 既存のユーザーホームディレクトリを、まだ存在しない場合に作成される新しいログインディレクトリに変更します。オプション-mは、現在のホームディレクトリの内容を新しいホームディレクトリに移動します
Ibrahim Quraish

23

受け入れられた回答は、初期ユーザーフォルダの内容がそれを使用して移動されないため、誤りです。それを修正するために別の答えを追加します。

sudo usermod -d /newhome/username -m username

ユーザー名でフォルダーを作成する必要はありません。これにより、ファイルが初期ユーザーフォルダーから/ newhome / usernameフォルダーに移動します。


4

他の読者がadduserコマンドに関する情報を探す場合。

編集する /etc/adduser.conf

DHOME変数を設定


0

これはいくつかのアプリケーションを壊すことがわかりました、それを行うためのより良い方法は

symlinkに加えて、最近のディストリビューションおよびファイルシステムでは、rootとしてbind-mountを使用することもできます。

mkdir /home/username 
mount --bind --verbose /extra-home/username /home/username

これは、シンボリックリンク(apache、ftpdなど)を介したパスを回避するように構成されているデーモンを介して、/ homeディレクトリからサブディレクトリへのアクセスを許可する場合に役立ちます。

もちろん、再起動時にバインドすることを覚えておく必要があります(またはinitスクリプト)。

initスクリプトの例/etc/fstab

/extra-home/username /home/username none defaults,bind 0 0

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