【初心者でもすぐわかる】SUIDとは?と設定方法

suid
  • このエントリーをはてなブックマークに追加
  • Pocket

SUIDとは「Set User ID」の略で、誰がそのファイルを実行しても、セットされたユーザで実行されるという状態だ。

このページではSUIDのもう少し細かい説明と、使い方についてお伝えした。参考にしていただければと思う。

SUIDとは?

Linuxパーミッションには幾つか特殊なパーミッション属性が存在している。

その一つが「SUID」(Set User ID)だ。

Set User IDとは「誰がそのファイルを実行しても、セットされたユーザで実行される」という状態だ。

例えば、passwdコマンドなどは所有者がrootになっておりSUIDが指定されている。この場合どのユーザがpasswdコマンドを実行しても必ずrootユーザが実行した状態となる。

一般的にSUIDは扱いに注意が必要なものとなっている。SUIDでrootユーザを指定してある場合、なんの認証もなしにroot権限でそのコマンドを実行できてしまうからだ。

所有者がrootでSUIDがセットされているコマンドは言わば例外的、特権的な動きをすることに注意しておこう。そのため無闇にSUIDをセットすることは避けよう。

SUIDを具体的に見てみよう

試しにpasswdコマンドを「ls -l」でパーミッション情報を表示してみよう。普通のパーミッションとは少しだけ異なる情報が記載されるはずだ

$ ls -l /usr/bin/passwd

「r」が読み込み許可のフラグ、「x」が実行許可のフラグとなっている。そのほか「s」というフラグがたっているのが確認できる。

フラグがたっている位置は所有者の権限を設定する位置となっている。所有者権限のところに「s」があるとそれはSUIDを示している。

実行権限のあるSUIDは「s」、実行権限が付与されていないのならば「S」と表記される。

今回所有者はrootなので誰がこのコマンドを実行してもroot権限でこのコマンドが実行されることとなる。

そのため一般ユーザで実行しても、パスワードの設定ファイルにpasswdコマンドを使用して設定を書き換えることが許される。特にこれといった認証は行われない。つまり特権として実行されることとなる。

そのため安易にSUIDを割り振ると意図しない権限の昇格が発生してしまうので、気をつけよう。

試しにSUIDを剥奪してみる。

ではSUIDがないとどうなるのかも実験してみよう。passwdコマンドはクリティカルなコマンドだ。あくまで実験なので自信がない方は実際の操作は控えて、こういう現象がおこるということを確認するだけでいいだろう。

$ su

# chmod 511 /usr/bin/passwd

# exit

$ passwd

passwd

上のようにエラーが発生する。

元に戻す

# chmod 4511 /usr/bin/passwd

SUIDを指定するには?

上の実験でも出てきたが、chmodコマンドでパーミッション数値に4000を足しあわせた数値を指定することでSUIDを指定できる。

# chmod 4511 /usr/bin/passwd

といった具合だ。

剥奪する時は単に4000を引き算すればよい。

もしくは以下の方法でも剥奪や付与が可能となっている。

SUID権限の付与

# chmod u+s /usr/bin/passwd

SUID権限の剥奪

# chmod u-s /usr/bin/passwd

find コマンドでSUIDに設定されている実行ファイルの列挙

$ find / -perm -4000

などとするとSUIDなファイルを列挙してくれる、基本的には実行ファイルに付与される権限なので

$ find /bin -perm -4000

$ find /sbin -perm -4000

$ find /usr/bin -perm -4000

$ find /usr/sbin -perm -4000

などとbinの下などを指定した方が綺麗な結果が反ってくるだろう。

まとめ

このページではSUIDについてお伝えしてきた。

パーミッションを勉強しはじめの頃に設定することはないだろうが、どういった機能かというのと、判別方法は知っておこう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リカレントテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リカレントテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する