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


34

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ので、なぜ私をロックアウトしますか?


6
chmod -R 777 whatever巨大なセキュリティリスクを引き起こす場合を除き、ほとんど実行しないでください。

1
@BroSlowトップをありがとう。この質問以外にも、どのようにディレクトリへの読み取り/書き込み特権を安全に設定できますか?666
スターカーズ14

1
間違いなく良いですが、あなたがやろうとしていることに依存します。たとえば、本当にすべてのユーザーがすべてにr / wアクセスできる必要がありますか。そうでない場合は、644などの操作を実行できます(自分以外のすべてのユーザー専用に読み取ります)。そして一般的に、再帰chmodを行うときは、意図したファイルのみを変更することに非常に注意します。

1
@broslowあなたは高いですか?666は、1)まだ誰でも書き込み可能であり、同じ程度のセキュリティリスクがあり、2)実行可能ビットを削除します。つまり、そのディレクトリにchdirできなくなります。
シャドゥール14

@Starkersここで私が見ている本当のセキュリティの問題は、なんらかの狂気の理由で、誰でも/var/lib/sudo書き込み可能に設定されているということです。これは起こってはならないことであり、なぜそうなったのかを調べてみるべきです。
シャドゥール14

回答:


49

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

$ sudo passwd root

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

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

$ chmod 777 -R foobs

以下も使用できます。

$ sudo -i

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


4
@Oli質問を編集してを追加することもできますsudo su。これにより、端末での永続的なsu権限も付与されます。
ウェイクアップ14

13
使用しないでくださいsudo su。環境に悪影響を及ぼし、物事が壊れます。代わりにを使用してくださいsudo -i
strugee

20
ルートパスワードを設定しないでください。ルートパスワードを設定しないでください。
wchargin

4
chmod 777はほとんどの場合に不良です(/ tmpで使用されるように、スティッキービットは免除されます)。この答えはセキュリティ上のリスクです。さらに、ルートパスワードの設定はUbuntuの使用方法ではありません。再びセキュリティリスクを招きます。neon_overloadの答えに従ってください。
リンツウィンド14

4
@WCharginなぜルートアカウント/パスワードを持たないことを提案するのですか?私はarchlinuxユーザーとして本当に興味があります。
ロブ14

67

1.なぜrootパスワードがないのか

あなたがいる間ことができ、あなたが持つrootでログインできるようにするスーパーユーザアカウントのパスワードを作成してsu、それの価値が、これは通常のUbuntuで物事を行う方法(または、ますます、だけでなく、他のディストリビューション)ではないことを言及します。Ubuntuは、理由によりデフォルトでルートログインとパスワードを提供しないことを選択しました。代わりに、デフォルトのUbuntuインストールで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パスワードを覚えておく必要はありません。複数のユーザーがいる場合、rootパスワードを変更して新しいパスワードを全員に通知する必要なく、sudo権限を削除するだけでスーパーユーザーのアクセスを取り消すことができます。ユーザーがsudoを使用して実行できるコマンドと、そのユーザーに対して禁止されているコマンドを選択することもできます。最後に、セキュリティ違反がある場合、場合によっては、どのユーザーアカウントが侵害されたかを示すより良い監査証跡を残すことができます。

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

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

sudo su

...これは、rootパスワードなしでも実行できます。これはsudosuコマンドにスーパーユーザー特権が付与されるためです。

同様に、su -ログインシェルの代わりに、sudo su -またはそのショートカットを使用できますsudo -i

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

ただ、明確にするために、あなたがすることができ、あなたが選択した場合は、特にその代わりのものをこの方法で行いたい場合は、rootユーザーにオリの答え@で説明したように、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]それが適切な解決策ではないことはほぼ確実です(そして、前述したように、/ var / lib内のシステムファイルにもそれを行ったという証拠があり、私は他の多くのことを想定しています場所)。

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

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

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


素晴らしい説明..親指.. :)
Saurav Kumar 14

7
私は「はsudo -i」を考えると、rootシェルを取得するための「公式」の方法ではなく、「sudoの秀」である
マックス

3
はい、sudo -iover を使用する必要がありますsudo su
セス14

sudo -i(またはsudo su -)普遍的に優れているわけではありませんが、異なるだけです-これらは、たとえばrootユーザーのファイルまたはファイルを実行するrootユーザーのログイン環境をシミュレートするログインシェルを起動します。これらは、シェル内の環境を、スーパーユーザー特権が発生する対話型シェルよりもルートログインシェルのようにしたい場合に適しています。シェルを使用する場合は、ログインベースのシェルを使用する方がおそらく良いでしょうが、それは重要ではありません。答えのポイントは、Ubuntuは主にスーパーユーザー権限でコマンドを実行するために使用するために設計されているということです。.profile.loginsudo
thomasrutter 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.