web-dev-qa-db-ja.com

「su」のパスワードがないのはなぜですか? 「須藤」の問題

GUIを使用してUbuntuをインストールし、パスワードとすべてを入力しました。私はこのプロセスを複雑に覚えていません。ただし、心配なのは、次のパスワードがわからないことです。

$ su
Password: <the only password I've ever created on this machine>
su: Authentication failure

どうしたらいいか分からない。私は困っていませんが、ここで何が起こっているのかを知りたいだけです。ディレクトリから自分自身をロックアウトすることもできます。

starkers@ubuntu:~/Desktop$ mkdir foobs
starkers@ubuntu:~/Desktop$ Sudo chmod 777 -R foobs
Sudo: /var/lib/Sudo writable by non-owner (040777), should be mode 0700
[Sudo] password for starkers: <the only password I've ever created on this machine> 
starkers@ubuntu:~/Desktop$ cd foobs
bash: cd: foobs: Permission denied

私は少し混乱しています。このようにロックアウトするにはどうすればよいですか?ここでは、Sudoが重要なコマンドだと思います。しかし、foobsファイルをchmod経由で開くことができるように開いているので、なぜ私をロックアウトするのですか?

34
Starkers

デフォルトでは、スーパーユーザー(root)アカウントは無効になっており、パスワードはありません。次のコマンドを実行して作成できます:

$ Sudo passwd root

その後、このパスワードを使用してsuを実行することにより、rootとしてログインできます。

chmodに関しては、正しいコマンドは次のとおりです。

$ chmod 777 -R foobs

以下も使用できます。

$ Sudo -i

パスワードを使用してrootとしてログインするには(上記のようにrootパスワードを作成せずに)。

49
Oli

1. rootパスワードがない理由

canスーパーユーザーアカウントのパスワードを作成して、suでrootとしてログインできるようにしますが、これは「Ubuntu」のやり方ではないことに注意してください。 Ubuntuは、理由により、デフォルトでルートログインとパスワードを指定するためにnotを選択しました。代わりに、デフォルトのUbuntuインストールはSudoを使用します。

Sudoは、スーパーユーザーの職務を遂行するために、ルートパスワードをユーザーに提供する代替手段です。デフォルトのUbuntuインストールでは、OSをインストールした人にはデフォルトで「Sudo」権限が付与されます。

「Sudo」権限を持つユーザーは、コマンドの前にSudoを追加することにより、「スーパーユーザーとして」何かを実行できます。たとえば、apt-get dist-upgradeをスーパーユーザーとして実行するには、次を使用できます。

Sudo apt-get dist-upgrade

このSudoの使い方は、WebでUbuntuに関するチュートリアルを読むところならどこでも見ることができます。これを行う代わりになります。

su
apt-get dist-upgrade
exit

Sudoを使用する場合、Sudoアクセスを許可するユーザーを事前に選択します。彼らは自分のパスワードを使用するため、ルートパスワードを覚えておく必要はありません。複数のユーザーがいる場合、rootパスワードを変更したり、全員に新しいパスワードを通知したりすることなく、Sudo権限を削除するだけでスーパーユーザーのアクセスを取り消すことができます。ユーザーがSudoを使用して実行できるコマンドと、そのユーザーに対して禁止されているコマンドを選択することもできます。最後に、セキュリティ違反がある場合、場合によっては、どのユーザーアカウントが侵害されたかを示すより良い監査証跡を残すことができます。

Sudoを使用すると、スーパーユーザー特権で単一のコマンドを簡単に実行できます。 suを使用すると、exitまたはlogoutを使用して終了する必要があるスーパーユーザーシェルに永続的にドロップします。これは、ログアウトしてから再びログインするよりも便利だからといって、必要以上に長くスーパーユーザーシェルにとどまる人につながる可能性があります。

Sudoでは、次のコマンドで永続的な(インタラクティブな)スーパーユーザーシェルを開くことができます。

Sudo su

... Sudosuコマンドにスーパーユーザー特権を与えるため、これはルートパスワードなしでも実行できます。

同様に、ログインシェルのsu -の代わりに、Sudo su -またはSudo -iを使用できます。

ただし、その場合は、すべてのコマンドのスーパーユーザーとして行動していることに注意する必要があります。誤ってシステムに何らかの損傷を引き起こす可能性を減らすために、スーパーユーザーとして必要以上に長く留まらないようにすることは良いセキュリティ原則です(これがないと、ユーザーが所有するファイルにのみ損傷を与えることができます)。

明確にするために、canを選択した場合、@ Oliの答えで説明されているように、rootユーザーにログインを許可するパスワードを与えます。代わりにSudoを優先するUbuntuの慣習についてお知らせし、代替案があることをお知らせしました。


2. chmod 777 -Rコマンドの問題

また、質問には2番目の部分があります。コマンドSudo chmod 777 -R foobsの問題です。

まず、次の警告は、マシンの潜在的に深刻なセキュリティ問題を示しています。

Sudo: /var/lib/Sudo writable by non-owner (040777), should be mode 0700

これは、ある段階で/var/lib/Sudoを誰でも書き込み可能に設定したことを意味します。 Sudo chmod 777 -R /などのコマンドを使用して、何らかの段階でこれを実行したと思います。残念ながら、これを行うことにより、おそらくシステム全体のすべてのファイルのアクセス権がほぼ無効になります。これが、権限が誰でも書き込み可能に変更された唯一の重要なシステムファイルになるとは考えられません。本質的に、これで簡単にハッキングできるシステムができたので、それを元に戻す簡単な方法は再インストールすることだけです。

次に、使用していたコマンド:

Sudo chmod 777 -R foobs

ホームディレクトリ内のファイルを操作する場合、この場合は~/Desktopで、Sudoを使用する必要はありません。ホームディレクトリに作成するすべてのファイルは、とにかく変更可能である必要があります(そうでない場合、何か面白いことが起こっています)。

また、再帰的に、または膨大な数のファイルに対して行うなど、ファイルのアクセス許可を一括して変更した場合の結果を十分に認識する必要があります。この場合、ファイルのアクセス許可を慎重に設定して、誰でも書き込み可能に変更します。他のユーザー、またはマシン上のバグのあるサーバーソフトウェアは、これらのファイルとディレクトリをすべて簡単に上書きできる可能性があります。

chmod 777 -R [dir]notであることはほぼ確実です。あなたが解決しようとしていたどんな問題に対しても適切な解決策です(上で述べたように、/ var/libも、他の多くの場所を想定しています)。

いくつかの基本的な経験則:

  • ホームディレクトリやデスクトップなどで自分のファイルをいじっているだけなら、Sudoやスーパーユーザーの権利を使う必要はないはずです。もしそうなら、それはあなたが何か間違ったことをしているという警告サインです。

  • パッケージが所有するシステムファイルを手動で変更しないでください。例外:/etcの設定を変更するなど、それらのパッケージで文書化された方法で具体的に行っている場合を除きます。これは、ファイル許可の変更にも適用されます。チュートリアルまたは問題の修正を試みる際にSudoまたはスーパーユーザーの権利が必要であり、それが/ etc /の構成の単なる変更ではない場合、それは何か間違ったことをしているという警告サインです。

67
thomasrutter