12日目 ユーザID
おはようございます
実はユーザIDに入る前にファイルの権限について軽く勉強しました。
先にそれをまとめたものを書いておきます。
きたないです
open()の第二引数に0_CREATフラグが指定されると作成されるファイルの権限を定義するためのフラグが必要となります
これは第三引数にかきます
S_IRUSR、S_IWUSR、S_IXUSRとかがあります。USRのところをGRP、OTHに置き換えればグループやその他(全員)に対して権限を与えられます。
権限はls -l で確認できます
ファイルの権限を追加(削除)したいときは
chmod ugo-wx ファイル名
と言うふうにします。この場合、User,Group,OtherからWriteとeXcutableの権限を削除(追加なら+ってやる)という意味です。
あとset user id権限というものがあります。
これはファイル権限を指定するビットにも含まれてます。
これを設定するとファイルの所有者の権限でプログラムが実行されます。
具体的に以下のプログラムで確認してみます
普通にコンパイルして実行します
次にsudo chown root:root ./a.out
で持ち主をrootにして
またsudo chmod u+s ./a.out
でset user id権限を付与します
これで実行します
はい、実効uidが0(root)になりました
この仕組みは/usr/bin/chshから/etc/passwdに書き込むために使われています
具体的にはchshというプログラムからset user idを使って自身のユーザーのログインシェルの情報だけ変更できるようになってるらしいです
今回は短いですがここまでです
次はset user id権限を使った簡易的なメモ帳を使って勉強します