## ユーザーを切り替えたり、一時的にrootになったりする方法
お知らせ
mediumに私の最新の投稿がすべて掲載されています。
## この記事で扱うコマンド
id # 現在ログインしているユーザーのユーザー名を表示します。
su # 別のユーザーとしてログインしているときに、別のユーザーに(s)witchすることができます。
sudo # xxxxxxxxxxxxx
## suでrootユーザーになる
linuxでは、rootユーザーとして直接ログインすることは避けたほうがいいでしょう。 それは、セキュリティ上の問題が発生したり、何かを壊してしまう可能性が高くなるからです。
そのため、ベストな方法は、常に通常のユーザーとしてログインすることです。
su – root # これで、root ユーザーに切り替えることができます。
password # suコマンドは、切り替え先のユーザーのパスワードを要求します。
注意していただきたいのは、suコマンドは切り替え先のユーザーのパスワードを知っている場合にのみ使用できるということです。
login:
password:
id
su – # ここでのようにユーザー名を省略すると、デフォルトでは、suはあなたがrootを意味すると仮定します。
password
id
su – Tom
id # Tomのパスワードを入力する必要がなかったことに注意してください。
## 前のユーザーに切り替える
上の例では、John-=>root-=>Tomと切り替えました。 これにより、現在のシェルは2セッション分の深さになりました。
id
exit # これはあなたを1つのステップにバックアップします。
上記のようにする代わりに、次のようにすることもできます:
su – John # この場合、3つのセッションに分かれます。John-=>root-=>Tom-=>John
# 可能であれば、3レベルより深くならないようにするのが良い習慣です。
## ‘su -‘ の “-” の意味は?
最初のパラメーターの “-” は、ユーザーが直接ログインしたかのように su に指示します。
この「-」は、基本的には、新しいセッションを新たに開始することを意味し、前のセッションからの「お荷物」を持ち込まないことを意味します。
testvar=12345 # ここでは、新しい変数を作成しました。
export testvar # これは、すべてのセッションで変数が使用可能になるように設定します。
su Tom # “-“が省略されているので、キャリーオーバーが許可されます。
password
echo testvar # variable exists in the new session.
exit
su – Tom # “-“が指定されているので、可能な限り直接のログインに近い形にするために、キャリーオーバーをブロックします。
echo testvar # “fresh “セッションではこの変数は存在しないので、ブランクを返します。
su – Tom -c ‘echo “Hello and Goodbye Tom”
または、セミコロンを使って複数のコマンドを一行にまとめることもできます。
su – Tom -c ‘id ; echo “Hello and Goodbye Tom”
## sudoを使って、非管理者でもルートレベルにアクセスできるようにする
Linuxでは、すべての管理者レベルのコマンドやタスクは、ルートユーザーにしか実行できません。 そのため、同僚に実行してもらいたい特定の管理者レベルの作業がある場合、root のパスワードを教えてあげるのが一つの方法です。
このジレンマを回避する方法は、sudo ユーティリティを使用することです。
例えば、rootだけがマシンをシャットダウンすることができます。
shutdown # これはマシンをシャットダウンします。
<code=>
もし、rootユーザーがTomに「shutdown」コマンドを使用するためのsudo権限を与えたとします。
sudo {command}
上に示したように、sudo を開始するための構文は、sudo の後に実行するコマンドを記述します。
sudo shutdown # これは成功し、マシンはシャットダウンしました。
<password=> # suと同様に、パスワードを入力しなければなりません。 しかし、suとは異なり、実際には現在のユーザーのパスワードを入力します。
# ユーザーはすでにそのユーザーとしてログインしているので、これは少しやりすぎです。 幸いなことに、この <l-anchor=>sudo password<l=> プロンプトは無効にすることができます。
セキュリティ上の理由から、ユーザーが sudo の特権を乱用した場合に備えて、sudo に関連するすべての活動のログが記録されます。
root ユーザーは、<l=> sudo の特権を設定し、割り当てる必要があります<l=>。
## suとsudoの主な違い(管理者コマンドの実行)
結論から言うと、メインユーザーとして管理者レベルのコマンドを実行する場合の主な違いは以下の通りです。
2. su を使うには root のパスワードを知っている必要がありますが、sudo ではその必要はありません。
3. su ではどんな管理者コマンドでも実行できますが、sudo では sudo の設定ファイルで許可された管理者コマンドしか実行できません。
##便利な情報
ルートユーザーは「スーパーユーザー」と呼ばれることがあります。
「id」の代わりに「whoami」と呼ばれることもあります。
ルートユーザーの場合、プロンプトユーザーは「#」で終わるのに対し、それ以外の人の場合は「$」で終わるという慣習があります。
idコマンドは、ユーザー名やグループ名だけでなく、それに対応するid番号も表示します。 ユーザー名やグループ名だけでなく、そのユーザーやグループに対応するid番号も表示されます。
id {username}
idコマンドは、/etc/passwdと/etc/groupから情報を取得します
## 関連項目
sudo権限の設定と割り当て
r