linuxの基礎知識---権限


アクセス権
一、ファイルの基本権限
権限とは,ユーザがファイルにアクセスする能力であり,ファイルの基本権限にはr(読み取り),write(書き込み),x(実行可能)が含まれる.
ls-ld fileでファイルの権限プロパティを表示するには、次の手順に従います.
    drwxr-xr-x 4 root root 4096 Jul  3 21:29 file
drwxr-xr-x:説明ファイルタイプ、よくあるファイルタイプは:dディレクトリファイル、lリンクファイル、c線形デバイスファイル、bブロックデバイスファイル、s sorketファイル、-一般ファイル、pパイプファイル
drwxr-xr-x:このファイル(ディレクトリ)はプライマリユーザー権限です
drwxr-xr-x:このファイル(ディレクトリ)はグループユーザー権限に属します
drwxr-xr-x:このファイル(ディレクトリ)の他のユーザー権限
    
1)ディレクトリおよびファイルに対する権限の具体的な意味は次のとおりです.
目次:
r:lsコマンドでディレクトリ内のファイルリストを表示できます(ls-lパラメータでも中身は表示できません)
w:ディレクトリでファイルを作成および削除できます
x:このディレクトリにcdでき、ls-lを使用してこのファイルのメタデータ情報を表示できます.
ファイル:
r:ファイルの内容を表示できる
w:ファイルの内容を変更可能
x:このファイルをスクリプトとして実行できます.
2)ユーザーがファイルにアクセスする際の権限モデル:
if(プログラムを実行する所有者=このプログラムがファイルにアクセスしている所有者)
所有者としての権限でファイルにアクセスします.
Else if(プログラムを実行するグループ=このプログラムがファイルにアクセスしているグループ)
グループに属する権限でファイルにアクセスします.
    else
他のユーザーとしてアクセスします.
3)一般的なファイル権限管理コマンド
chmodファイル権限の変更
Usage:chmod[オプション]...モード[,モード]...ファイル...
または:chmod[オプション]...8進モードファイル...
または:chmod[オプション]...--reference=リファレンスファイル...
操作オブジェクト
アクセス権の設定
権限値

uファイル属主権限g同グループユーザ権限oその他のユーザ権限aすべてのユーザ(以上の3種類を含む)
+権限の追加-権限の取り消し=一意の設定権限
r-->4w-->2x-->1
1、修正/tmp/testファイルの所有者の権限はrwx、所有グループの権限はr-x、その他のユーザー権限r-xchmod 755/tmp/testまたは:chmod u=rwx、go=r-x/tmp/test 2、1問題に基づいて、所有者、所有グループ、その他のユーザーはx権限chmod a-x/tmp/testまたは者:chmod u-x、g-x、o-x/tmp/testまたは:chmod 644/tmp/tes 3、変更/tmp/test 1ディレクトリファイルの所有者の権限はrwx、所有グループの権限はr-x、その他のユーザ権限r-x、および所在ディレクトリの下のすべてのファイルがこの権限chmod-R 755/tmp/test 1または:chmod-R u=rwx、go=r-x/tmp/test 14であり、問題1に基づいて、所有グループの権限はrwxchmod 775/tmp/testまたは:chmod g+w/tmp/test 5、/tmp/testの権限を基準として、/tmp/test 2ファイルの権限を彼と同じようにchmod--reference=/tmp/test/tmp/test 2
         ,                    。
    
    umask:        ,               。
         ,          777-umask_value;      ,         666-umask_value.
[root@server test]# umask 
0022
[centos@server test]$ umask 
0002
[centos@server test]$ id centos
uid=500(centos) gid=500(centos) groups=500(centos),600(magedu)
[mandriva@server ~]$ umask 
0022
[mandriva@server ~]$ id
uid=4400(mandriva) gid=3302(linux) groups=3302(linux),2201(gentoo),3300(distro),3301(peguin)

管理者と一般ユーザーのマスクは一般的に異なります.グループとプライマリ・ユーザー名が同じ場合、新しく作成されたファイルまたはディレクトリのマスク値は0002です.グループとプライマリ・ユーザー名が異なる場合、新しく作成したファイルまたはディレクトリのマスク値は、管理者ユーザーのマスク値と同じ0022です.
二、特殊権限
特殊な権限はsuid,sgid,stickyの3つです.特殊な権限を導入するのは、ファイルをよりよく管理するため、または特定の特使の場合のニーズを実現するためです.以下、3つの特殊な権限の意味について説明します.
特殊な権限
具体的な意味

suid
設定の前提:ファイル所有者はx権限を持っています.この設定は一般的にコマンドに対して設定されています.この特殊な権限を設定した後、このコマンドを実行するのは発起者プロセスのユーザーが実行するのではなく、サブコマンドファイルの所有者が実行します.chmod u+s/path/to/somefile
最も典型的な例はpasswdというコマンドです.一般ユーザーも自分のパスワードを変更することができ、実際には/etc/shadowファイルにパスワード情報を書き込むことができますが、このファイルには権限がありません.これがsuidの役割で、普通のユーザーはパスワードを設定する時、実際にはpasswdコマンドの属主ユーザーrootアイデンティティで実行します
sgid
設定の前提:ファイルのグループにx権限があります.この設定は一般的にディレクトリを設定します.この権限を設定した後、このディレクトリの下で確立されたファイルのグループはすべてこのディレクトリのグループと同じです.chmod g+s/path/to/somefile
例えば、ある会社がプロジェクトを開発するとき、一人一人が書いたコードファイルを同じグループに帰属し、みんなが閲覧しやすいようにする必要があります.
stiky
設定前提:ファイルにx権限がある他の設定は、ユーザーが自分で作成できるファイルchmod o+t/path/to/somefileとして機能します.
たとえば、前の例では、誰もが他の人がアップロードしたコードを削除することができます.これは私たちが見たくないので、stikyビットを設定した後、誰もが自分のファイルしか削除できません.
練習:
1、一般ユーザーに/tmp/catを使って管理者がアクセスできるファイルを表示させる.
[root@server ~]#cp `which cat` /tmp/cat
[root@server ~]#chmod u+s /tmp/cat
[root@server ~]#su - centos
[centos@server ~]#/tmp/cat /etc/shadow #    /etc/shadow   

2、新規ディレクトリ/project/testを作成し、一般ユーザーhadoopとopenstackがこのディレクトリに対してファイルを作成できるようにし、作成したファイルのグループはこのディレクトリのグループに属し、ユーザー自身のグループではなく、他の人のファイルを削除できないことを要求する.
[root@server ~]#mkdir -p /project/test
[root@server ~]#chmod g+s /project/test
[root@server ~]#chmod o+t /project/test

三、ACL(Access Control List)メカニズム
このような場合:ある会社の財務諸表は、一般的に、財務部門の社員Aが作成した財務諸表本人が読み書きでき、グループ(財務部門の社員)に属してA社員の財務諸表を見ることができ、他の人はA社員の財務諸表を変更または見る権限がない.では、会社のCEOとして、あるいは頭として、この財務表を見る権限もないのではないでしょうか.明らかにこれは私たちの要求に合わないので、ACLメカニズムの出現はこのような問題を解決しました.
facl(File Access Control List):ファイルアクセス制御リスト.その主な役割は、ファイルの元の所有者、グループ、その他、特殊な権限と衝突しない特定の一般ユーザーに独自の権限を設定させるメカニズムです.ファイルの既存の権限に基づいて、一部のユーザーに対して設定された拡張権限に相当します.
ファイルACLのプロパティを表示および設定するコマンドは、getfaclとsetfaclです.具体的な一般的な使い方は次のとおりです.
getfacl
getfalファイル名
getfacl/etc/passwdビュー/etc/passwdファイルのaclプロパティ
setfacl
setfacl{-m|-x}ターゲット:MODE FILE...
centosユーザー対/etc/fstableのacl属性setfacl-m u:centos:rw-/etc/fstable設定centosグループ対/etc/fstableのacl属性setfacl-x g:centos/etc/fstablefile 2ファイルfile 1ファイルのacl権限getfacl file 1|setfacl--set-file=-file 2ファイル参照
注:aclメカニズムは、ファイルシステムの作成時に追加されたプロパティです.ファイルシステムの作成時にこのプロパティが追加されていない場合は、ここではaclメカニズムは使用できません.
    
aclメカニズムに参加した後、ユーザーがファイルにアクセスするときの権限モデル:(偽言語表示)
if(実行プログラムの所有者=このプログラムがファイルにアクセスしている所有者|実行プログラムの所有者にaclメカニズムがある)
所有者としての権限でファイルにアクセスします.(プログラムを実行する所有者=このプログラムがファイルにアクセスしている所有者)
ユーザーレベルのfacl(プログラムを実行する所有者はaclメカニズムがある);
Else if(プログラムを実行するグループ=このプログラムがファイルにアクセスしているグループ|プログラムを実行するグループにaclメカニズムがある)
グループに属する権限でファイルにアクセスします(プログラムを実行するグループ=このプログラムがファイルにアクセスしているグループ).
ユーザーレベルのfacl(プログラムを実行するグループにaclメカニズムがある);
        else
他のユーザーとしてアクセスします.
導入開始の問題を解決するには、次の手順に従います.
#   A     Alex,    FinaDept。       boss
[root@server ~]# mkdir -p /test/FinaDept/
[root@server ~]# chown .FinaDept /test/FinaDept/
[root@server ~]# chmod 3777 /test/FinaDept/

#Alex        
[Alex@server FinaDept]$ touch fina.txt 
[Alex@server FinaDept]$ ll
total 0
-rw-r----- 1 Alex FinaDept 0 Jul 12 00:41 fina.txt

#boss      acl    
[boss@server FinaDept]$ cat fina.txt 
cat: fina.txt: Permission denied

#  acl  
[Alex@server FinaDept]$ setfacl -m u:boss:r-- fina.txt 
[Alex@server FinaDept]$ getfacl fina.txt 
# file: fina.txt
# owner: Alex
# group: FinaDept
user::rw-
user:boss:r--
group::r--
mask::rw-
other::---
##boss      ,    
[boss@server FinaDept]$ cat fina.txt 
a:123
b:1234
[boss@server FinaDept]$ echo "c:234" >> fina.txt
-bash: fina.txt: Permission denied