linuxファイルシステムファイル権限


1.ファイル操作コマンド:
mkdir-----------
rmdir-----------
chmod------------
2.ファイル権限:
二、SUIDとSGIDの詳細な解析
Set UID
sとt権限が作成されるのは、一般ユーザが何らかのプログラムを実行する際に、そのプログラム所有者の権限を一時的に持つことができるようにするためである.例えば、アカウントとパスワードの保存ファイルは、実際には/etc/passwdと/etc/shadowであることがわかります.一方、/etc/shadowファイルの権限は「-r------」です.その所有者はrootです.この権限ではrootだけが「強制」して格納でき、他の人は見ることもできません.
しかし,筆者がdmtsaiという一般的なアイデンティティユーザを用いて自分のパスワードを更新する場合に限って,/usr/bin/passwdプログラムを用いているが,自分のパスワードを更新することができる.すなわち、dmtsaiという一般的なアイデンティティユーザは、/etc/shadowパスワードファイルにアクセスすることができる.どうしてそんなことができるの?/etc/shadowはdmtsaiにアクセスできる権限がないのに.これはs権限の助けがあるからです.s権限がuserのxにある場合、すなわち-r-s-x--xのように、Set UIDと呼ばれ、SUIDと略称され、このUIDはUserのIDを表し、Userはこのプログラム(/usr/bin/passwd)の所有者(root)を表す.では、dmtsaiユーザが/usr/bin/passwdを実行すると、ファイル所有者rootの権限が「一時的に」得られることがわかります.
SUIDは「バイナリファイル(binary file)」にのみ使用できます.SUIDはプログラムが実行中にファイル所有者の権限を持つため、バイナリファイルにのみ使用でき、バッチファイル(shellスクリプト)には使用できません.shellスクリプトは、多くのバイナリ実行ファイルを呼び出して実行するだけです.したがってSUIDの権限部分は、shellスクリプト自体ではなく、shellスクリプトが呼び出されたプログラム設定によって異なります.もちろん、SUIDはディレクトリに対して無効です.この点は特に注意しなければならない.
Set GID
さらに,sの権限がユーザグループである場合,Set GID,略称SGIDとなる.SGIDは2つの側面で使用できる.
ファイル:SGIDがバイナリファイルに設定されている場合、ユーザが誰であるかにかかわらず、プログラムが実行されると、その有効なユーザグループ(effective group)がプログラムのユーザグループ所有者(group id)になります.
≪ディレクトリ|Directory|ldap≫:SGIDがAディレクトリに設定されている場合、そのAディレクトリ内に作成されたファイルまたはディレクトリのユーザー・グループは、そのAディレクトリのユーザー・グループとなります.
一般的にSGIDは特定のマルチチームのプロジェクト開発に多く用いられ,システムでは少ない.
Sticky Bit
このSticky Bitは現在ディレクトリのみ有効であり、ファイルには効果がありません.Sbitのディレクトリに対する役割は、「Sbitを有するディレクトリの下で、ユーザがそのディレクトリの下にwおよびx権限を有する場合、ユーザがそのディレクトリの下でファイルまたはディレクトリを確立する場合、ファイル所有者とrootのみが削除する権利がある」ということである.言い換えれば、Aディレクトリの下にgroupまたはotherの項目があり、w権限がある場合、これは、甲ユーザーがそのディレクトリ内の誰が作成したディレクトリまたはファイルに対しても「削除/名前変更/移動」などの操作を行うことができることを示す.ただし、AディレクトリにSticky bitの権限が付与されている場合、甲は自分が作成したファイルやディレクトリに対してのみ削除/名前変更/移動などの操作を行うことができます.
例えば、/tmp自体の権限は「drwxrwxrwt」であり、このような権限の内容の下で、誰もが/tmp内でファイルを追加、変更することができるが、そのファイル/ディレクトリの作成者とrootだけが自分のディレクトリまたはファイルを削除することができる.この特性も重要です.簡単なテストを行うことができます.
1.rootでシステムにログインし、/tmpにアクセスします.
2.touch test、およびtest権限の変更は777となる.
3.一般ユーザーでログインし、/tmpに入ります.
4.testファイルを削除してみます.
SUID/SGID/Sticky Bitの詳細については、11章で再度お話ししますが、現在は、簡単な概念があればいいと思います.
SUID/SGID/SBIT権限設定
先にSUIDとSGIDの機能を紹介しましたが、SUIDとSGIDの権限を持つようにファイルを開くにはどうすればいいのでしょうか.これには、数値を使用して権限を変更する必要があります.数字を使って権限を変更する方法が「3つの数字」の組み合わせであることが分かるはずですが、この3つの数字の前に1つの数字を加えると、一番前の数字がこれらの属性を表します(注:通常chmod xyz filenameを使ってfilenameの属性を設定する場合は、SUID、SGID、Sticky bitがないと仮定します).
4はSUID
2はSGID
1はSticky bit
ファイルのプロパティを「-rwsr-xr-x」に変更するとします.sはユーザー権限にあるためSUIDなので、元の755までに4を追加します.つまり、「chmod 4755 filename」を使用して設定します.また、大きなSと大きなTの発生もあります.以下の例を参考に(注意:以下の例は練習にすぎないので、筆者は同じファイルで設定しますが、SUIDはディレクトリではなく、SBITはファイルではないことを知っておく必要があります)
[root@linux ~]# cd /tmp
[root@linux tmp]# touch test
[root@linux tmp]# chmod 4755 test; ls -l test
-rwsr-xr-x 1 root root 0 Jul 20 11:27 test
[root@linux tmp]# chmod 6755 test; ls -l test
-rwsr-sr-x 1 root root 0 Jul 20 11:27 test
[root@linux tmp]# chmod 1755 test; ls -l test
-rwxr-xr-t 1 root root 0 Jul 20 11:27 test
[root@linux tmp]# chmod 7666 test; ls -l test
-rwSrwSrwT 1 root root 0 Jul 20 11:27 test

この例は特に注意しなければならない.どうして大文字のSとTが現れますか?全部小文字じゃないですか.
sもtもxパラメータに取って代わるので、私たちは
# 7666.すなわち,user,groupおよびothersにはxという実行可能なフラグはない.
#(666のため).したがって、S、Tは「空」を表す.
#SUIDは、「このファイルは実行時にファイル所有者の権限を持っている」という意味ですが、ファイル
#所有者は実行できません.どこからの権限が他の人に使われていますか?もちろん空です
 
i:変更不可権限例:chattr u+i filenameではfilenameファイルは変更不可であり、誰でも変更が必要な場合はi権限を先に削除する必要がある場合はchattr-i filenameでよい.ファイルにi権限用lsattr filenameが設定されているかどうかを確認します.
a:権限を追加するだけで、ログシステムに便利です.この権限はターゲットファイルを追加するしかなく、削除できません.また、エディタで追加できません.chattr+aを使用して追加権限を設定できます.
 
linuxでファイルへのアクセス権をより柔軟に制御したい場合は、アクセス制御リスト(ACLs)を使用するのが良い方法です.ACLsでは、アクセス権の制御を単一のコンビネーションユーザーに正確に行うことができます.
ACLを使用すると、tune 2 fs、getfacl、setfaclのコマンドが表示されます.