「Su」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(1版 をインポートしました)
(他言語へのリンクを追加)
 
(5人の利用者による、間の10版が非表示)
1行目: 1行目:
 
[[Category:セキュリティ]]
 
[[Category:セキュリティ]]
  +
[[Category:コマンド]]
 
{{DISPLAYTITLE:su}}
 
{{DISPLAYTITLE:su}}
 
[[en:su]]
 
[[en:su]]
[[es:su]]
+
[[es:Su]]
[[fr:su]]
+
[[fa:su]]
  +
[[fr:Su]]
  +
[[ru:Su]]
  +
[[zh-hans:Su]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|ユーザーとグループ}}
 
{{Related|ユーザーとグループ}}
{{Related2|sudo|sudo}}
+
{{Related|sudo}}
 
{{Related articles end}}
 
{{Related articles end}}
   
12行目: 16行目:
   
 
== インストール ==
 
== インストール ==
  +
su は {{Pkg|util-linux}} パッケージに入っています。util-linux は {{Grp|base}} グループの一部として Arch ではデフォルトでインストールされます。
 
  +
su は {{Pkg|util-linux}} パッケージに入っています。
   
 
== 使用方法 ==
 
== 使用方法 ==
  +
 
他のユーザーのログインとして、su になりたいユーザー名を入力します:
 
他のユーザーのログインとして、su になりたいユーザー名を入力します:
   
# su user_name
+
$ su ''username''
   
使用したいユーザーのパスワードを求めるプロンプトが表示されます。
+
デフォルトでは、通常のユーザーとて実行すると、なりたいユーザーのパスワードを求めるプロンプトが表示されます。root として ''su'' を実行する場合、パスワードは必要ありません
   
ユーザー名を入力しかった場合、su は root ユーザーだと認識し、root ユーザーのパスワードを要求します。
+
ユーザー名が渡され場合、''su'' は root ユーザーを想定し、要求されるパスワードは root のパスワードになります。
   
  +
詳細については、{{man|1|su}} を参照してください。
== セキュリティ ==
 
セキュリティの観点から、おそらく su の代わりに [[sudo|sudo]] を設定して使うほうがベターと言えます。sudo システムは、ターゲットユーザー(あなたが使おうとしているユーザーアカウント)のパスワードではなく、あなた自身のパスワードを要求します(設定によっては全くパスワードを使いません)。ユーザー間でパスワードを共有する必要がないため、ユーザーからの root 権限へのアクセス(もしくはその他のアカウントへのアクセス)を止めなくてはならない場合、root パスワードを変更しなくてもよいのです。あなた以外のユーザーにとっては不自由でしょうが、あなたはユーザーの sudo を無効にするだけになります。
 
   
  +
== ヒントとテクニック ==
ユーザーが root のシェルを使えるように sudo を設定している場合、{{ic|sudo -s}} や {{ic|sudo -i}} で、{{ic|su}} や {{ic|su -}} と同じことができます、それぞれ、root パスワードではなくユーザーのパスワードを使います(もしくはパスワードを使わない)。同様に、john のシェルを実行することが許可されているなら、{{ic|sudo -u john -i}} が {{ic|su - john}} と同じになります。
 
   
== Tips and tricks ==
 
 
=== ログインシェル ===
 
=== ログインシェル ===
su はデフォルトで、現在のディレクトリとユーザーの環境変数を維持します(新しいユーザーのそれにはスイッチしません)。
 
   
  +
su のデフォルトの動作は、(新しいユーザーの環境変数に切り替えるのではなく) 現在のディレクトリ内にとどまり、元のユーザーの環境変数を維持することです。
重要な対照的考察事項:
 
  +
  +
次の重要な対照的な考慮事項に注意してください。
   
 
* 管理者のシェルアカウントを使うよりも、標準的なユーザーのシェルアカウントを使う方が都合の良い場合があります。特に、ユーザーの問題を解決するとき、そのユーザーアカウントにログインして問題を再現・デバッグするのが一番効果的かもしれません。
 
* 管理者のシェルアカウントを使うよりも、標準的なユーザーのシェルアカウントを使う方が都合の良い場合があります。特に、ユーザーの問題を解決するとき、そのユーザーアカウントにログインして問題を再現・デバッグするのが一番効果的かもしれません。
38行目: 43行目:
 
* しかし、多くの場合、一般ユーザーのシェルから root ユーザーが作業を行う(そのアカウントの環境変数を使う)ことは望ましくなく、また危険でもあります。不注意に一般ユーザーのシェルアカウントを使っていると、プログラムのインストールなどのシステム作業が root アカウントとは違う結果を生むことがあります。例えば、インストールされたプログラムが、偶然にも一般ユーザーにシステムにダメージを与える権限や、データへの許されざるアクセス権を与えてしまう可能性があるのです。
 
* しかし、多くの場合、一般ユーザーのシェルから root ユーザーが作業を行う(そのアカウントの環境変数を使う)ことは望ましくなく、また危険でもあります。不注意に一般ユーザーのシェルアカウントを使っていると、プログラムのインストールなどのシステム作業が root アカウントとは違う結果を生むことがあります。例えば、インストールされたプログラムが、偶然にも一般ユーザーにシステムにダメージを与える権限や、データへの許されざるアクセス権を与えてしまう可能性があるのです。
   
よって、管理者ユーザーは(さらに他のユーザーも)、su を使う時(su を使うこともできるだけ避けましょう)はいつも su コマンドにスペースとハイフンを加えるべきです。ハイフンにはつの意味があります:
+
よって、管理者ユーザーは(さらに他のユーザーも)、su を使う時(su を使うこともできるだけ避けましょう)はいつも su コマンドに {{ic|-l}}/{{ic|--login}} オプションを加えるべきです。オプションには2つの意味があります:
 
# そのユーザーに''ログイン''する際に現在のディレクトリから、新しいユーザーのホームディレクトリ(root ユーザーの場合、{{ic|/root}})に移動します
 
# そのユーザーに''ログイン''する際に現在のディレクトリから、新しいユーザーのホームディレクトリ(root ユーザーの場合、{{ic|/root}})に移動します
# 環境変数を {{ic|~/.bashrc}} によって指定された、新しいユーザーのものに変更します。つまり、su にハイフンをつけると、現在のディレクトリと環境変数が新しいユーザーが(現在のセッションではなく)新しいセッションにログインしたときと同じようになるということです。
+
# 環境変数を {{ic|~/.bashrc}} によって指定された、新しいユーザーのものに変更します。つまり、su に {{ic|-l}}/{{ic|--login}} オプションをつけると、現在のディレクトリと環境変数が新しいユーザーが(現在のセッションではなく)新しいセッションにログインしたときと同じようになるということです。
   
管理者は su を使う時は次のようにべきです:
+
したがって、管理者は通常、次のように su を使る必要があります:
$ su -
+
$ su -l
   
 
ユーザーネームとして root を付け加えても同じ結果になります:
 
ユーザーネームとして root を付け加えても同じ結果になります:
$ su - root
+
$ su -l root
   
 
また、他のユーザーでも同じことができます (例: archie という名前のユーザー):
 
また、他のユーザーでも同じことができます (例: archie という名前のユーザー):
# su - archie
+
# su -l archie
   
 
{{ic|~/.bashrc}} に次のようにエイリアスを追加してもいいでしょう:
 
{{ic|~/.bashrc}} に次のようにエイリアスを追加してもいいでしょう:
   
alias su="su -"
+
alias su="su -l"
  +
  +
{{Tip|{{ic|su -l}}/{{ic|su --login}} ではなく、{{ic|su -}} でログイン シェルを取得するために ''su'' が使用されている場合があります。{{ic|-}} オプションは解析の制限に遭遇する可能性があるため、この簡略表記は推奨されません。{{man|1|su|DESCRIPTION}} を参照してください。}}
   
 
=== su と wheel ===
 
=== su と wheel ===
  +
BSD の su はデフォルトで root を使うことができるのが "wheel" [[ユーザーとグループ|グループ]]のユーザーだけになっています。これは GNU su のデフォルトとは違いますが、PAM を使うことで BSD と同じようにできます。{{ic|/etc/pam.d/su}} にある次の行をアンコメントしてください:
 
  +
BSD の su はデフォルトで root を使うことができるのが "wheel" [[ユーザーとグループ|グループ]]のユーザーだけになっています。これは GNU su のデフォルトとは違いますが、[[PAM]] を使うことで BSD と同じようにできます。{{ic|/etc/pam.d/su}} と {{ic|/etc/pam.d/su-l}} にある次の行をアンコメントしてください:
   
 
auth required pam_wheel.so use_uid
 
auth required pam_wheel.so use_uid

2023年1月11日 (水) 03:53時点における最新版

関連記事

su コマンド (substitute user) はシステム上の他のユーザーになりかわるために使われます、一般的にそのユーザーとは root です。su を使うことでユーザーを変えるためにログイン/ログアウトする手間を省くことができます。つまり、あなたのセッション内で一種の"サブセッション"を使って他のユーザーとしてログインし、その後あなたのセッションに戻ることになります。

インストール

su は util-linux パッケージに入っています。

使用方法

他のユーザーのログインとして、su になりたいユーザー名を入力します:

$ su username

デフォルトでは、通常のユーザーとして実行すると、なりたいユーザーのパスワードを求めるプロンプトが表示されます。root として su を実行する場合、パスワードは必要ありません。

ユーザー名が渡されない場合、su は root ユーザーを想定し、要求されるパスワードは root のパスワードになります。

詳細については、su(1) を参照してください。

ヒントとテクニック

ログインシェル

su のデフォルトの動作は、(新しいユーザーの環境変数に切り替えるのではなく) 現在のディレクトリ内にとどまり、元のユーザーの環境変数を維持することです。

次の重要な対照的な考慮事項に注意してください。

  • 管理者のシェルアカウントを使うよりも、標準的なユーザーのシェルアカウントを使う方が都合の良い場合があります。特に、ユーザーの問題を解決するとき、そのユーザーアカウントにログインして問題を再現・デバッグするのが一番効果的かもしれません。
  • しかし、多くの場合、一般ユーザーのシェルから root ユーザーが作業を行う(そのアカウントの環境変数を使う)ことは望ましくなく、また危険でもあります。不注意に一般ユーザーのシェルアカウントを使っていると、プログラムのインストールなどのシステム作業が root アカウントとは違う結果を生むことがあります。例えば、インストールされたプログラムが、偶然にも一般ユーザーにシステムにダメージを与える権限や、データへの許されざるアクセス権を与えてしまう可能性があるのです。

よって、管理者ユーザーは(さらに他のユーザーも)、su を使う時(su を使うこともできるだけ避けましょう)はいつも su コマンドに -l/--login オプションを加えるべきです。オプションには2つの意味があります:

  1. そのユーザーにログインする際に現在のディレクトリから、新しいユーザーのホームディレクトリ(root ユーザーの場合、/root)に移動します
  2. 環境変数を ~/.bashrc によって指定された、新しいユーザーのものに変更します。つまり、su に -l/--login オプションをつけると、現在のディレクトリと環境変数が新しいユーザーが(現在のセッションではなく)新しいセッションにログインしたときと同じようになるということです。

したがって、管理者は通常、次のように su を使用する必要があります:

$ su -l

ユーザーネームとして root を付け加えても同じ結果になります:

$ su -l root

また、他のユーザーでも同じことができます (例: archie という名前のユーザー):

# su -l archie

~/.bashrc に次のようにエイリアスを追加してもいいでしょう:

alias su="su -l"
ヒント: su -l/su --login ではなく、su - でログイン シェルを取得するために su が使用されている場合があります。- オプションは解析の制限に遭遇する可能性があるため、この簡略表記は推奨されません。su(1) § DESCRIPTION を参照してください。

su と wheel

BSD の su はデフォルトで root を使うことができるのが "wheel" グループのユーザーだけになっています。これは GNU su のデフォルトとは違いますが、PAM を使うことで BSD と同じようにできます。/etc/pam.d/su/etc/pam.d/su-l にある次の行をアンコメントしてください:

auth required pam_wheel.so use_uid