現在、CentOSサーバーにログインしています。ホームディレクトリを/home/myuserName/
から/var/www/html/
に変更したいと思います。
私は以下のコマンドを試しました:
> Sudo usermod -d /var/www/html myuserName
しかし、これは私にエラーを与えます:
usermod: user myUserName is currently logged in
短い答え:できません。
長い答え:
HOME
dirは/etc/passwd
の6番目のフィールドに設定されます。ログイン時に読み込まれ、シェルはこのホームディレクトリで開始されます。
Joeのホームディレクトリを変更する適切な方法は次のとおりです。
usermod -d /new/home joe
を使用して、後続のセッションのホームディレクトリを変更します。セッションを実行したら、次の2つのことを行う必要があります。
$HOME
を編集します(すべてのアクティブセッションで繰り返されます)。Sudo vipw
を使用して、次のセッションのためにホームディレクトリを編集しますまた、/var/www/html
の権限/所有権に問題がある可能性があることに注意してください
変更しようとしているユーザーでログインしている場合、usermodコマンドは機能しません。
Usermodのマニュアルページからそれは言う:
警告usermodでは、ログインしているユーザーの名前を変更することはできません。ユーザーの数値ユーザーIDが変更されている場合、このコマンドの実行中は、指定されたユーザーがプロセスを実行していないことを確認する必要があります。 crontabファイルの所有者は手動で変更する必要があります。 atジョブの所有者は手動で変更する必要があります。 NISサーバーでNISに関連する変更を行う必要があります。
別のユーザーでログインして、コマンドを再実行してください。
それが不可能な場合は、手動で/ etc/passwdファイルを編集できます(これは実際にはusermodコマンドが行っていることです)。これを行う場合は、誤って何か愚かなことをした場合に備えて、必ずファイルをバックアップしてください。
現在ログインしているユーザーのホームディレクトリを変更するには、/etc/passwd
ファイルを編集する必要があります。
/etc/passwd
をSudo vipw
で編集し、ユーザーのホームディレクトリを変更します。
vipw
はデータの破損を防ぐためにロックを設定するため、vim
または他のエディター以外のvipw
を強くお勧めします。
解決したいことに応じて、いくつかの可能な回避策:
オプション1. HOME=/var/www/html
を.bashrcに追加します
オプション2. /home/myusername
の名前を変更してから、目的のディレクトリへのシンボリックリンクを作成します。
mv /home/myusername /home/myusername-old
ln -s /var/www/html /home/myusername