web-dev-qa-db-ja.com

アカウント作成後にユーザーのホームフォルダーを作成する方法

useradd nameで新しいユーザーを作成し、-d -mを使用してホームディレクトリを作成するのを忘れました。作成して、/ etc/skelの内容をコピーし、すべてを新しいユーザーにchowningしました。

llなどのエイリアスは機能せず、コマンドプロンプトに$の代わりにname@server ~$しかありません。また、スクロールホイールを使用すると、コマンドラインでゴミがダンプされます:(

これを修正するにはどうすればよいですか、ユーザーを削除してやり直すのが簡単ですか?

62
mortona42

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は機能しません。唯一の方法は、影響を受けるユーザーのホームディレクトリを手動で作成することです。

57
iridescent

簡単な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
6
Zenexer

-d -mを使用するのを忘れた場合、最良かつ迅速なオプションは、実行することです

Sudo mkhomedir_helper username

withは、欠落しているオプションを提供したかのようにホームディレクトリを作成します。

5
David

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仕様の一部です。

5
user483623

新しいユーザーのホームディレクトリのデフォルト値を変更するには、次のようにします。

Sudo useradd -D --base-dir /home/new_user

コマンド。 seradd -D [options] from

man useradd 
4
numand

私はちょうどこれに遭遇しました(Ubuntu 12.04)。一時ユーザーを作成し、ユーザーディレクトリをコピーし、それをchownし、最後に一時ユーザーを削除することで解決しました。

Sudo adduser temp
Sudo cp -r /home/temp /home/name
Sudo chown -R name.name /home/name
Sudo deluser temp
1