useradd name
で新しいユーザーを作成し、-d -m
を使用してホームディレクトリを作成するのを忘れました。作成して、/ etc/skelの内容をコピーし、すべてを新しいユーザーにchown
ingしました。
ll
などのエイリアスは機能せず、コマンドプロンプトに$
の代わりにname@server ~$
しかありません。また、スクロールホイールを使用すると、コマンドラインでゴミがダンプされます:(
これを修正するにはどうすればよいですか、ユーザーを削除してやり直すのが簡単ですか?
sh
シェルを使用しているため、コマンドプロンプトに$
があります。
name@server
のシェルは、bash
シェルに基づいています。
usermod -s /bin/bash
を使用して、新しく作成されたユーザーのデフォルトのシェルを変更する必要があります。
usermod
を再度使用して、ユーザーのホームディレクトリが存在しない場合は追加します。 usermod -d /home/username
ユーザーの/etc/passwd
にホームディレクトリが指定されていない場合:
mkhomedir_helper <username>
を実行して、ホームディレクトリを作成します。 mkhomedir_helper
は、ユーザーのホームディレクトリを作成し、/etc/skel
の内容もコピーします。
ユーザーが既に/etc/passwd
で指定されたホームディレクトリを持っている場合:
usermod -d /some/directory
経由など、mkhomedir_helper
は機能しません。唯一の方法は、影響を受けるユーザーのホームディレクトリを手動で作成することです。
簡単なbashスクリプトを次に示します。 Sudo
を使用してルートとして実行します。それは任意の数の引数を取り、それぞれがホームディレクトリを必要とするユーザー名です。これにはいくつかの前提があります。ホームディレクトリは/home
にあり、スケルトンディレクトリは/etc/skel
にあるということです。これらはUbuntuのデフォルトです。このスクリプトは、 Gist からダウンロードまたはwget
/curl
できます。
#!/bin/bash
if [ $# -lt 1 ]; then
echo "Syntax: $_ USER[ USER[ ...]]" >&2
exit 1
fi
exit_code=0
for user in "$@"; do
home="/home/$user"
cp -R /etc/skel "$home" && echo $'\e[32m'"Copied skeleton to: $home"$'\e[m' || ( exit_code=$?; echo $'\e[31m'"Failed to create: $home"$'\e[m' ) >&2
chown -R "$user:$user" "$home" && echo $'\e[32m'"Set owner on: $home"$'\e[m' || ( exit_code=$?; echo $'\e[31m'"Failed to set owner on: $home"$'\e[m' ) >&2
done
exit $exit_code
-d -m
を使用するのを忘れた場合、最良かつ迅速なオプションは、実行することです
Sudo mkhomedir_helper username
withは、欠落しているオプションを提供したかのようにホームディレクトリを作成します。
xdg-user-dirs-update
コマンドを見てください。デフォルトのX Windowsディレクトリが作成されます:デスクトップ、ダウンロードなど...
デフォルトのディレクトリを持たないユーザーは、xdg-user-dirs-update --force
を実行してディレクトリを作成できます。ユーザーアカウントの1つに対してこれを行う必要がありました。
xdg-user-dirs-update
コマンドを実行する前に、manページを読むことをお勧めします。 xdg-user-dir
のmanページには、さらにいくつかの詳細が追加されています。
「XDG Base Directory Specification」は、freedesktop.org仕様の一部です。
新しいユーザーのホームディレクトリのデフォルト値を変更するには、次のようにします。
Sudo useradd -D --base-dir /home/new_user
コマンド。 seradd -D [options] from
man useradd
私はちょうどこれに遭遇しました(Ubuntu 12.04)。一時ユーザーを作成し、ユーザーディレクトリをコピーし、それをchownし、最後に一時ユーザーを削除することで解決しました。
Sudo adduser temp
Sudo cp -r /home/temp /home/name
Sudo chown -R name.name /home/name
Sudo deluser temp