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権限というものがあります。

これはファイル権限を指定するビットにも含まれてます。

これを設定するとファイルの所有者の権限でプログラムが実行されます。

具体的に以下のプログラムで確認してみます

 f:id:simauma1203:20180130182206j:image

 

普通にコンパイルして実行します

 f:id:simauma1203:20180130182218j:image

 

次にsudo chown root:root ./a.out

で持ち主をrootにして

またsudo chmod u+s ./a.out

でset user id権限を付与します

これで実行します

 f:id:simauma1203:20180130182227j:image

 

はい、実効uidが0(root)になりました

 

この仕組みは/usr/bin/chshから/etc/passwdに書き込むために使われています 

 

具体的にはchshというプログラムからset user idを使って自身のユーザーのログインシェルの情報だけ変更できるようになってるらしいです

 

今回は短いですがここまでです

 

次はset user id権限を使った簡易的なメモ帳を使って勉強します