「su」を実行できないのはなぜですか?(そして、どうすればいいですか?)


33

発行しようとするたびに、su私はこれを取得します:

$ su  
Password:  
su: Sorry

言うまでもなく、私はで動作する正しい管理者パスワードを入力していますsudo。私が欲しいのはsudo毎回入力する必要がないことです。

回答:


34

MacOS Xでは、rootユーザーはデフォルトで無効になっているため、機能しませsuん。他の人が述べているように、を使用するのが最善sudoです。

ルートユーザーを有効にする必要がある場合は、Appleの技術情報「Mac OS Xで「ルート」ユーザーを有効にして使用する」を参照してください。


13
sudo suそれでも機能するため、実際には無効になっていません。パスワードがありません。
偽の名前

@FakeNameこれは最も陽気なバックドアです!を実行できる場合sudo su、その時点で無効にするポイントはsu何ですか?
コロブキャニオン

3
@KolobCanyon-ポイントは、実際には「無効にするsu」ことではなく、rootログイン防ぐことです。としてのログインを禁止することによりroot、多数の潜在的なセキュリティ問題を防ぎます。できる人を許可しないことsudosu一種愚かなのです。基本的には、su単に現在のユーザーIDを変更し、コマンド(指定されていない場合はシェル)を実行します。user-idがすでに0(ルート)である場合(たとえば、で実行する場合)、実行するsudoことは何もないため、シェルを実行するだけです。を実行することで同様の効果を得ることができますsudo bash
偽の名前

1
@FakeNameまだ混乱しています。rootとしてログインすることと「sudo su」を実行することの違いは何ですか?実質的に同じレベルではないでしょうか?
コロブキャニオン

2
@KolobCanyon-いいえ。基本的に、loginを無効にすると、ログインプロセスに脆弱性がある場合、ハッカーはそれを使用してrootを直接取得できないことを意味します。基本的に、必要なルート侵害を「ログイン侵害」から「ユーザーアカウント+ privescのログイン侵害」に移行します。基本的には、多層防御として行われます。
偽の名前

14

2つのオプションがあります。最初は使用sudo -sすることです-これはスーパーユーザーのアクセスを許可しますが、あなたはまだ「自分」のままです(いわば)ので、~あなたのホームディレクトリのままです。または、を使用してsudo su、Macの実際のrootユーザーとしてシェルを提供できます。


5
Apple Way(tm)はsudo、ルートシェルに切り替えてそこから作業するのではなく、昇格した特権を必要とするコマンドを実行するために使用します。
イアンC.

3
@Ian C.-いいえ、それは実際にはUnixの方法です。Appleは* nixベースでもあるため、単にそれを使用します。
偽の名前

@Fake Name:Appleは、ユーザーにルートシェルを公開したり、公開したりすることはありません。彼らはそのsudo精神を極限まで持っていると言えるでしょう。しかし、何でも:セマンティクス。OS X.のルートシェルを使用しないでください
イアンC.

1
@Ian C-Appleは* nixデザイナーが行う以上のことはしません。Appleはそれについてあまり語りません。どちらの場合も、Linuxのようなものだけがあり、簡単に使用する方法を教えてくれます。それがより広く使用されるようになった場合、それは基本的なアーキテクチャの違いを示していません。
偽の名前

1

たとえば、ファイルを移動する必要がある場合、またはCLIを使用してgitを使用する場合、その場合の最適なソリューションはsudo -sコマンドを使用することです。そのコマンドの後、パスワードを何度も入力し続ける必要はありません。


1

「通常の」ユーザーとしてこれを行うことはできないと思います...

管理者権限を持つ別のユーザーアカウントがある場合は、このアカウントを使用する必要があります

restricted user$ su
Password:(the root password here)
Sorry!

restricted user$ su - (an admin account here)
password:(the admin account password)
$ su - root
Password:(The root password here)
# -> You are root user now

1

最新のソリューション: sudo -u

別の用途として実行するには、を使用しますsudo -u

たとえば、nanoなどのテキストエディタを実行するには、次のようにします

sudo -u someuser nano

…プロンプトが表示されたら、Mac管理者ユーザーのパスワードを入力します。この時点では、パスワードを入力しないようにsudo、ユーザーではなくMac管理者ユーザーを呼び出しsomeuserていsomeuserます。

  • sudo スーパーユーザー特権を使用して何かを実行することを意味します。
  • -u 「この指定されたユーザーとして指定されたコマンドを実行する」ことを意味します。
  • someuser 希望のユーザー名に置き換える必要があります。

スタートアップスクリプトの実行など、特定のユーザーとしての初期ログインをシミュレートするには、を使用します-I

sudo -u someuser -i nano

これは、nanoユーザーとしてsomeuser起動スクリプトを実行した後にのみ、ユーザーとしてアプリを実行します。

実行するコマンドまたはアプリを指定しないことを選択した場合、そのユーザーとして実行されている対話型シェルが取得されます。

sudo -u someuser -i

古い学校: sudo su someuser

別のアプローチでは、suコマンドとを組み合わせて使用​​しsudoます。suこのコマンドは、「スイッチのユーザー」を意味します。

sudo su someuser

または、ユーザーの起動スクリプトの実行を含めるには、ハイフンを追加します。

sudo su - someuser

root ユーザー

rootUnix関連のオペレーティングシステムのユーザーは、何でもできる絶対的な力を持っています。

Appleはroot、macOSでアカウントを無効にし、セキュリティ脆弱性の悪用を回避し、あなたが自分の足で撃つのを防ぐことを選択しました。Appleは、多くの権限を持ち、標準ユーザーアカウントよりも多くの権限を持つが、持っているような絶対的な権限を持たない管理者ユーザーアカウントのアイデアを作成しました。議論については、このAppleサポートノートを参照してください。root

必要であれば、あなたはできる有効rootMacOSの中で、ユーザをして、そのユーザーに切り替え。これは強く推奨されていません。必死の最後の手段としてのみこの道をたどります。


macOSでPostgresデータベースシステムをpostgres実行しているユーザーのコンテキスト内でこれについての説明は、姉妹サイトDBA Stack Exchangeでこの質問を参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.