web-dev-qa-db-ja.com

新しく作成されたユーザーアカウントにログインできません

アカウントを新しく作成したアカウントに切り替えようとすると、黒い画面が表示され、正しいパスワードを入力するとメインのログイン画面に戻ります。

以前の既存のアカウントにログインすると、次のようになります。

"System Program Problem Detected"

Details:

Executable path /usr/bin/Xorg

Package: xserver-xorg-core 2:1.11.4-0ubuntu10.1

Details: Crash
... (tons more, but no way to copy paste or save)

Suをしようとしたとき

su -l penner

私は得る:

No directory, logging in with HOME=/

ホームディレクトリを手動で作成しましたが、このエラーは消えますが、それでもログインできません。ユーザーの作成で何か問題が発生したようです。どうすれば修正できますか?

24
penner

useradd でユーザーアカウントを作成した場合は、そのすべてを手動で設定する必要があります。そのため、コマンドラインからユーザーアカウントを作成する場合、代わりにUbuntu(およびDebian、およびその他のDebianベースのシステム)で adduser を使用することをお勧めします。 userdel または deluser でユーザーを削除し、adduserで再作成したい場合があります。そうでなければ...

ホームディレクトリの場所の修正

ユーザーアカウントを保持して問題を修正する場合は、以下を確認する必要があります。

  • ユーザーアカウントが実際に構成されているホームディレクトリの名前
  • 実際に作成したディレクトリの名前

これらはまったく同じでなければなりません。 su -l pennerで表示されるエラーメッセージは、それらが同じではないことを示しています。

ユーザーアカウントが実際に構成されているホームディレクトリを確認するには、次のコマンドを実行します(詳細については man 5 passwd および man grep を参照)。

grep penner /etc/passwd

次のような行が表示されます。

penner:x:1000:1000:Eliah Kagan,,,:/home/penner:/bin/bash

つまり、6番目の:- separatedフィールド(5番目の:の後)にはホームディレクトリが含まれます。 /home/pennerでない場合は、そうである必要があります。ユーザー用に作成したディレクトリが/home/pennerでない場合も、そうである必要があります。 2つのディレクトリが同じで、どちらも/home/pennerでない場合、理論的には動作する可能性がありますが、多くのソフトウェアは、root以外のユーザーのホームディレクトリはすべて/home/pennerであると想定しているため、両方を/home/usernameにする必要があります。

次のコマンドを実行すると、pennerのホームディレクトリを/home/pennerに変更できます。

Sudo usermod -d /home/penner penner
  • 詳細については、 man usermod を参照してください。

ディレクトリであり、ユーザーがアクセスできることを確認する

名前が両方とも/home/pennerの場合(または一度)、ユーザーが自分のホームディレクトリにアクセスできることも確認する必要があります。実行:

ls -ld /home/penner

次のようなものが表示されるはずです(ただし、日付と時刻は異なります)。

drwxr-xr-x 43 penner penner 4096 2012-07-03 06:41 /home/penner

drwxr-xr-xの代わりに、dではなく-で始まるものがある場合は、ディレクトリではなくファイルを作成しました。ファイルを削除し、代わりにディレクトリを作成します。

最初のpennerの代わりに何か他のものがある場合、ユーザーは自分のホームディレクトリを所有していないので、それを所有させます。

Sudo chown penner /home/penner
  • 詳細については、 man chown を参照してください。

drwxr-xr-xの代わりにdの後の次の3文字にダッシュがある場合、ユーザーはそこに完全にアクセスできません。次のように修正します。

Sudo chmod u+rwx /home/penner
  • 詳細については、 man chmod を参照してください。

pennerは、ホームディレクトリを所有している場合、このコマンドを実行できます。したがって、必要に応じて、Sudo -u penner u+rwx /home/pennerとして実行できます)

他のユーザーに全面的な書き込みアクセス権がないようにする

drwxr-xr-xの代わりに、最後の6文字に-sの代わりにwsがある場合、penner以外のユーザーは、pennerのホームディレクトリへの書き込みアクセス権を持っている可能性があります。これは危険です(あなたが本当にあなたが何をしているかを知っていて、この方法でそれを望み、問題にならないように設定していない限り)。修正するには:

Sudo chmod -R go-w /home/penner

その他のデフォルト

他の変更が必要になる場合があります。 Ubuntuのデフォルトでは(つまり、adduserまたはグラフィカルツールを使用してユーザーアカウントを作成した場合)

  1. ホームディレクトリには、所有するユーザーだけでなく、すべてのユーザーに対する読み取りおよび書き込み権限があります。 ユーザーは、ホームディレクトリ全体またはその中の任意のファイルとサブディレクトリに対して、これを変更できます。ただし、このデフォルトが必要で、drwxr-xr-xに2番目と3番目のrxがない場合は、次を実行します。

    Sudo chmod 755 /home/penner
    

    pennerは、ホームディレクトリを所有している場合、このコマンドを実行できます。したがって、必要に応じて、Sudo -u penner chmod 755 /home/pennerとして実行できます)

  2. 各ユーザーには、ユーザーと同じ名前の独自のグループがあり、これがユーザーのプライマリグループです。彼らのホームディレクトリはこのグループが所有しています。これが、drwxr-xr-x 43 penner penner 4096 2012-07-03 06:41 /home/pennerの2番目のpennerの意味です。自分が何をしているのかわかっている場合は、このデフォルトを壊してもかまいません。ただし、別のことをするつもりがない場合は、pennerがこのように設定されていることを確認する必要があります。ユーザーまたはユーザーのホームディレクトリのグループ所有者のプライマリグループIDがセキュリティ上の問題につながる可能性があるためです。

    groups pennerを実行します。 (詳細については man groups を参照してください。)次のようなものが表示されるはずです。

    penner : penner adm dialout cdrom plugdev lpadmin sambashare
    

    それほど似ていなくても心配しないでください。私はすぐにそれを取得します。代わりに、:の後の最初のWordを見てください。それがユーザーのプライマリグループの名前です。 pennerにしたい場合は、それを確認してください。そうでない場合は、変更します。

    Sudo usermod -g penner penner
    

    グループpennerが存在しないというエラーが表示された場合は、このコマンドで作成する必要があります(その後、上記のコマンドを再度実行します)。

    Sudo addgroup penner
    
    • 詳細については、 man addgroup を参照してください。 (必要に応じて、代わりに groupadd コマンドを使用してグループを作成できます。)
  3. groups pennerを実行したときに、私のpenner : penner adm dialout cdrom plugdev lpadmin sambashareよりもかなり短いグループのリストを取得した可能性があります。デスクトップユーザーの場合、admdialoutcdromplugdevlpadmin、およびsambashareは、デスクトップユーザーが通常持つべき機能を提供します。したがって、特に理由がない限り、pennerはこれらのグループに含まれている必要があります。ただし、これらはnotプライマリグループであるため、設定が異なります。 pennerがこれらのグループのいずれにも含まれておらず、pennerをすべてのグループに含める場合は、次のコマンドを実行します。

    Sudo usermod -a -G adm,dialout,plugdev,lpadmin,sambashare penner
    

    興味のある方のために、これらのグループの意味は次のとおりです。

    (出典: Privileges 、Ubuntuドキュメントwiki内)

ユーザーを管理者にする

pennerを管理者にしたくない場合は、おそらく他に何もする必要はありません。 pennergroups pennerを持つ管理者であるかどうかを確認できます。 adminSudoもリストされていない場合、pennerは管理者ではありません。

pennerを管理者にしたい場合は、これらのグループのいずれかにpennerを追加します。 (両方が存在する場合は、両方にpennerを追加することもできます。)これら2つのコマンドを別々に実行することで、どちらかが成功すると、pennerを管理者に設定できます。

Sudo usermod -a -G admin penner
Sudo usermod -a -G Sudo penner
  • 2つのグループがある理由は、Ubuntu 12.04 LTSより前は、管理者がadminグループに属していたためです。 Ubuntu 12.04 LTS以降、管理者はSudoグループに属します。ただし、12.04 LTSシステムが以前のリリースからアップグレードされた場合(およびこれは、Ubuntu 11.10以前からアップグレードされた12.10など、それ以降のUbuntuリリースに適用されるはずです)、後方互換性のために、管理者は両方のメンバーですSudoおよびadmin。一般に、これらのグループのいずれかが管理能力を付与しない場合、それは単に存在しないため、上記の2つのコマンドを(別々に、Sudo usermod -a -G admin,Sudo pennerとしてではなく)実行することは、一般的にpennerを管理者にする安全で効果的な方法です。
30
Eliah Kagan

これは主に、ユーザーのホームディレクトリを作成せずにユーザーを作成するときに発生します。これは、ユーザーを作成するときにこのコマンドを使用することで解決できます

useradd -m the_username

-mフラグは、ユーザーのホームディレクトリを作成するものです。ユーザーを作成したら、そのユーザーのホームディレクトリが存在するかどうかを確認してください。

ls /home

そのユーザー名がリストに表示されている場合、最後に行うことは、そのユーザーにパスワードを割り当てることです

passwd the_username

そのユーザー名とパスワードでログインできるようになりました

0
macleash