ファイルシステムは、権限と属性を使用して、システムプロセスがファイルやディレクトリに対して持つことができる
権限の表示
lsコマンドの-l
オプションを使用して、ディレクトリの内容に設定された権限(またはファイルモード)を表示します。
$ls-l/path/to/directory
, Taking an example value of drwxrwxrwx+
, the meaning of each character is explained in the following tables:
d |
rwx |
rwx |
rwx |
+ |
The file type, technically not part of its permissions. See info ls -n "What information is listed" for an explanation of the possible values., |
所有者がファイルに対して持っているアクセス許可(以下で説明します)。 | グループがファイルに対して持っているアクセス許可(以下で説明します)。 | 他のすべてのユーザーがファイルに対して持っている権限(以下で説明します。 | 代替アクセス方法がファイルに適用されるかどうかを指定する単一の文字。 この文字がスペースの場合、代替アクセス方法はありません。 . 文字は、セキュリティコンテキストを持つファイルを示しますが、他の代替アクセス方法は示しません。, 代替アクセスメソッドの他の組み合わせを持つファイルは、たとえばアクセス制御リストの場合、+ 文字でマークされます。, |
三つの許可トライアド(上記の例ではrwx
)のそれぞれは、次の文字で構成できます。
文字 | ファイルに対する効果 | ディレクトリに対する効果 | |
---|---|---|---|
読み取り許可(最初の文字) | - |
ファイルを読み取ることができません。, | ディレクトリの内容を表示することはできません。 |
r |
ファイルを読み込むことができます。 | ディレクトリの内容を表示することができます。 | |
書き込み許可(第二文字) | - |
ファイルを変更できません。 | ディレクトリの内容を変更することはできません。 |
w |
ファイルは変更できます。, | ディレクトリの内容を変更することができます(新しいファイルまたはフォルダの作成;既存のファイルまたはフォルダの名前を変更または削除)。execute権限も設定する必要があります。それ以外の場合は、この権限は無効です。 | |
実行権限(第三文字) | - |
ファイルを実行できません。 | cdではディレクトリにアクセスできません。 |
x |
ファイルを実行できます。,実際には、パス内のいずれかのフォルダにx ビットが設定されていない場合、最終的なファイルまたはフォルダにはその権限に関係なくアクセスできません。詳細についてはpath_resolution(7)を参照してください。, |
||
s |
ユーザートライアドで見つかった場合はsetuidビット、グループトライアドで見つかった場合はsetgidビット、他のトライアドでは見つからない。x が設定されていることも意味する。 |
||
S |
s と同じですが、x は設定されていません。, |
||
t |
The sticky bit; it can only be found in the others triad; it also implies that x is set. |
||
T |
Same as t , but x is not set; rare on regular files, and useless on folders. |
See info Coreutils -n "Mode Structure"
and chmod(1) for more details.,ヒント:パスに沿って権限を表示できますnamei -l path
。
例
明確にするためにいくつかの例を見てみましょう:
drwx------ 6 archie users 4096 Jul 5 17:37 Documents
ArchieはDocumentsディレクトリへのフルアクセス権を持っています。 そのリストをファイルの名前の変更、削除ファイルに書類を問わずファイルにアクセス権を表します。 ファイルにアクセスする彼の能力は、ファイルの許可に依存します。
dr-x------ 6 archie users 4096 Jul 5 17:37 Documents
アーチーは、ファイルの作成、名前の変更、削除ができないことを除いて、フルアクセス権を持っています。, そのリストのファイル(ファイルの場合は許可を与)にアクセスは、既存のファイルを提出する。
d-wx------ 6 archie users 4096 Jul 5 17:37 Documents
Archieはドキュメントで’ls’を実行できませんが、既存のファイルの名前を知っていれば、リスト、名前の変更、削除、または(ファイルの許可が与えられている場合)それにアクセスできます。 また、新しいファイルを作成することもできます。
d--x------ 6 archie users 4096 Jul 5 17:37 Documents
Archieは(ファイルの許可が彼に権限を与える場合)、彼が知っているドキュメント内のそれらのファイルにアクセスすることができます。 既存のファイルを一覧表示したり、作成、名前変更、削除したりすることはできません。,
ディレクトリのパーミッションについて詳しく説明していますが、個々のファイルのパーミッションとは何の関係もありません。 新しいファイルを作成すると、変更されるディレクトリになります。 そのため、ディレクトリへの書き込み権限が必要です。p>
-rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
ここでは、最初の文字がd
しかし-
ではないことがわかります。 だから我々はそれがディレクトリではなくファイルであること, 次に、所有者の権限はrw-
であるため、所有者は読み書きできますが実行できません。 しかし、x
権限はテキスト/データファイルであり、Gedit、EMACS、またはRのようなソフトウェアなどのテキストエディタによって読み取られるためには必要ではなく、それ自身の実行可能ファイルではありません(pythonプログラミングコードのようなものが含まれていれば、それは非常にうまくいくかもしれません)。, グループの権限はr--
に設定されているため、グループはファイルを読み取ることはできますが、書き込み/編集はできません。 私たちは、同じ権限が他のすべての人にも適用されることがわかります。
パーミッションの変更
chmodは、ファイルまたはディレクトリのパーミッション(またはアクセスモード)を変更できるLinuxおよびその他のUnixライクオペレーティングシステムのコマンドです。
テキストメソッド
ファイルのアクセス許可またはアクセスモードを変更するには、端末でchmodコマンドを使用します。, 以下はコマンドの一般的な構造です。
chmod who=permissions filename
ここで、who
は文字の範囲の任意であり、それぞれが誰が許可を与えられているかを示します。 それらは次のとおりです。
-
u
:ファイルを所有するユーザー。 -
g
:ファイルが属するユーザーグループ。 -
o
:他のユーザー、つまり他のすべてのユーザー。 -
a
:上記のすべて。ugo
と入力する代わりにこれを使用してください。,権限は、#閲覧権限(r
,w
およびx
)で説明されているものと同じです。次に、このコマンドを使用していくつかの例を見てみましょう。,
前:
drwxr-xr-x 6 archie users 4096 Jul 5 17:37 Documents
$ chmod g= Documents$ chmod o= Documents
後:
drwx------ 6 archie users 4096 Jul 6 17:32 Documents
ここでは、アクセス許可を拒否したいので、アクセス許可を拒否しないでください。アクセス許可が入力される
=
の後に任意の文字を入れます。 これで、所有者の権限のみがrwx
であり、他のすべての権限は-
であることがわかります。,これを元に戻すことができます:
前:
drwx------ 6 archie users 4096 Jul 6 17:32 Documents
$ chmod g=rx Documents$ chmod o=rx Documents
後:
drwxr-xr-x 6 archie users 4096 Jul 6 17:32 Documents
次の例では、グループおよび他のユーザーに読み取りおよび実行権限を付与するので、権限の文字(
r
およびx
)=
の後に、スペースなしで。これを単純化して、同じコマンドeに複数の
who
文字を入れることができます。,g:$ chmod go=rx Documents
注:who
文字または許可文字をchmod
コマンド:chmod go=rx file
またはchmod og=xr file
それはすべて同じです。,foobar
ファイルを変更して、読み取りと書き込み権限を持ち、グループ内の仲間のユーザーusers
foobar
に取り組んでいる同僚かもしれないfoobar
、読み取りと書き込みもできますが、他のユーザーは読み取りと書き込みしかできません。前:
-rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod g=rw foobar
後:
-rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
これは最初の例とまったく同じですが、ディレクトリではなくファイルで、書き込み権限を付与します(すべての権限を付与する例を与えるように)。,
Text method shortcuts
chmodコマンドでは、
+
または-
の代わりに=
を使用して、既存のセットからアクセス権 これは、基本的に権限を書き直す上記のコマンドとは異なります(例えば、権限をr--
からrw-
に変更するには、r
だけでなく、w
=
の後に=
を含める必要がありますコマンド呼び出し。, あなたが逃した場合r
、それは奪うだろうr
彼らはで書き換えられているとして許可=
。+
および-
を使用すると、現在のアクセス許可セットを追加または削除することでこれを回避できます)。,>前:-rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod a-w foobar
後:
-r--r--r-- 1 archie users 5120 Jun 27 08:28 foobar
別のショートカットは特別な
X
モード:これは実際のファイルモードではありませんが、-R
ディレクトリに対してのみ実行可能ビットを設定し、通常のファイルに対しては変更されないままにするオプション:$ chmod -R a+rX ./data/
権限のコピー
chmodに対して、所有者と言うあるクラスから権限をコピーし、それらの同じ権限をグループまたはすべてに与えることができます。, これを行うには、
r
、w
、またはx
=
の後に別のwho文字を入れます。 例えば:前:
-rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod g=u foobar
後:
-rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
このコマンドは、基本的に”グループ(
g=
)の権限を変更し、所有するユーザー(=u
)。 権限のセットをコピーしたり、新しい権限を付与したりすることはできません。,:$ chmod g=wu foobar
その場合、chmodはエラーをスローします。
数値メソッド
chmodは数値を使用して権限を設定することもできます。
numbersを使用すると、setuid、setgid、およびstickyビットだけでなく、すべての所有者、グループ、およびその他の権限を同時に編集できる別の方法です。 コードのこの基本的な構造は次のとおりです。
$ chmod xxx filename
ここで、
xxx
は3桁の数字で、各桁は0から7までの何でもかまいません。, 最初の桁は所有者の権限に適用され、第二の桁はグループの権限に適用され、第三の桁は他のすべての権限に適用されます。この数値表記では、値
r
、w
、およびx
には独自の数値があります。r=4w=2x=1
3桁の数値を考え出すには、所有者、グループ、およびその他すべてのアクセス許可を考慮する必要があります。その後、それらの値を合計します。, グループと他のすべての人に読み取りと実行権限を持たせたい場合は、次のような数値を考え出します。
- Owner:
rwx
=4+2+1=7 - グループ:
r-x
=4+0+1=5 - その他:
r-x
=4+0+1=5
$ chmod 755 filename
これは、次の使用と同等です。
$ chmod u=rwx filename$ chmod go=rx filename
ファイルまたはディレクトリの既存の権限を数値形式で表示するには、stat(1)コマンドを使用します。
$ stat -c %a filename
%aオプションは数値形式で出力を指定します。,
ほとんどのフォルダとディレクトリは
755
所有者への読み書きと実行を許可するが、他のすべての人への書き込みを拒否し、ファイルは通常644
所有者の読み書きを許可するが、他のすべての人に読み書きを許可する。x
実行不可能なファイルに対するアクセス許可の欠如についての最後の注意を参照してください:ここでは同じことです。, 前:-rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod 664 foobar
後:
-rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
これが実行可能ファイルであった場合、番号は
-rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
これが実行可能ファイルであった場合、番号は
-rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
これが実行可能ファイルであった場合、番号は
これが実行可能ファイルであった場合、番号はiv id=””iv id=””iv id=””iv id=””所有者とグループに実行可能なアクセス許可を付与する場合。 あるいは、誰もが読み取り権限のみを持つようにしたい場合、番号は
444
ます。,r
を4、w
を2、x
を1として扱うことは、おそらくchmod xxx filename
を使用するための数値を計算する最も簡単な方法ですが、バイナリメソッドもありますが、各アクセス許可にバイナリ番号があり、それが順番に数値に変換されます。 それはもう少し複雑ですが、完全性のためにここに含まれています。,この権限セットを考えてみましょう。
-rwxr-xr--
付与された各権限の下に1を置き、付与されていないすべての権限に対して0を置くと、結果は次のようになります。
-rwxrwxr-x 111111101
これらの二進数を変換することができます。
000=0 100=4001=1 101=5010=2 110=6011=3 111=7
これらのバイナリ番号を変換することができます。
000=0 100=4001=1 101=5010=2 110=6011=3 111=7
したがって、上記は775になります。
グループから書き込み可能なアクセス許可を削除したいと考えています。
-rwxr-xr-x 111101101
したがって、値は755になり、
chmod 755 filename
書き込み可能なアクセス, あなたはあなたが使用する方法に関係なく、同じ三桁の番号を得ることに気づくでしょう。 テキストまたは数字を使用するかどうかは、個人の好みと入力速度に依存します。 ディレクトリまたはファイルをデフォルトの権限に復元したい場合、たとえば所有者への読み取りおよび書き込み(および実行)権限があり、他のすべてのユーザーへの書き込み権限を拒否する場合は、chmod 755/644 filename
を使用する方が速いかもしれません。 ただし、権限を標準外のものに変更する場合は、textメソッドを数値に変換しようとするのではなく、textメソッドを使用する方が簡単で迅速になり、間違, Chmodを使用する必要がある場合にのみ、いずれかの方法の速度に実際の大きな違いはないと主張することができます。numericメソッドを使用して、
setuid
、setgid
、およびsticky
ビットを四桁で設定することもできます。setuid=4setgid=2sticky=1
たとえば、
chmod 2777 filename
は、すべての人に読み取り/書き込み/実行可能ビットを設定し、setgid
ビットを有効にします。Bulk chmod
通常、ディレクトリとファイルは同じ権限を持つべきではありません。, ディレクトリツリーを一括変更する必要がある場合は、findを使用して、どちらか一方を選択的に変更します。
ディレクトリのみを755にchmodする:
$ find directory -type d -exec chmod 755 {} +
ファイルのみを644にchmodする:
$ find directory -type f -exec chmod 644 {} +
所有権の変更
chownはファイルまたはディレクトリの所有者
バックアップデータ用にGPartedで新しいパーティションを作成する次の例を考えてみましょう。 Gpartedはこのとのことですから、すべての所属するルートによるデフォルトです。, これは皆さんはきっと、こう思ってい付き合いを書きデータの取付け仕切り、アクセス権は拒否された正規ユーザー
brw-rw---- 1 root disk 8, 9 Jul 6 16:02 sda9drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup
デバイスを見ることができるように
/dev
マウント場所(/media/Backup
)と同様に、rootが所有しています。, マウント場所の所有者を変更するには、次の操作を行います。Before:
drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup
# chown archie /media/Backup
After:
drwxr-xr-x 5 archie root 4096 Jul 6 16:01 Backup
これで、パーティションは新しい所有者archieによってパーミッションを変更することなく、パーミッションにデータを書き込むことができます(所有者トライアドがすでに権限)。メモ:
-
chown
は常にsetuidビットとsetgidビットをクリアします。 - root以外のユーザーは
chown
を使用して、自分が所有するファイルを別のユーザーに”譲り渡す”ことはできません。,
アクセス制御リスト
アクセス制御リストは、任意のユーザーまたはグループの権限を任意のファイルに設定できるようにすることにより、ファイルシステムに対する追加の、より柔軟な権限メカニズムを提供します。
Umask
umaskユーティリティは、新しく作成されたファイルのファイル許可ビットの初期値を決定するファイル作成モードマスクを制御するために,
ファイル属性
ユーザーとグループの読み取り、書き込み、および実行権限を制御するファイルモードビットとは別に、いくつかのファイルシステム このセクションでは、これらの属性の一部とその使用方法について説明します。警告:デフォルトでは、cp、rsync、およびその他の同様のプログラムによってファイル属性は保持されません。,
chattrおよびlsattr
ext2およびext3ファイルシステムの場合、e2fsprogsパッケージには、それぞれファイルの属性をリストおよび変更するプログラムlsattrおよびchattrが含まれています。,/li>
- Owner:
-
u
:削除不可能 -
A
:atime更新なし -
C
:書き込み時にコピーなし -
D
:同期ディレクトリ更新 -
S
:同期updates -
T
:ディレクトリ階層のトップ
たとえば、あるファイルに不変ビットを設定する場合は、次のコマンドを使用します。
# chattr +i /path/to/file
ファイルの属性を削除するには、+
から-
ます。,
拡張属性
Xattr(7)から:”拡張属性は、ファイルとディレクトリに永続的に関連付けられた名前:値のペアです”。 セキュリティ、システム、信頼済み、およびユーザーの四つの拡張属性クラス
拡張属性は、機能を設定するためにも使用されます。
ユーザー拡張属性
ユーザー拡張属性は、ファイルに関する任意の情報を格納するために使用することができます。, To create one:
$ setfattr -n user.checksum -v "3baf9ebce4c664ca8d9e5f6314fb47fb" foo.txt
Use getfattr to display extended attributes:
$ getfattr -d foo.txt
# file: foo.txtuser.,3de557528">--preserve=mode,ownership,timestamps,xattr
mv
preserves by default1 tar
--xattrs
for creation and extractionbsdtar
-p
for extractionrsync --xattrs
- mv silently discards extended attributes when the target file system does not support them.,
テキストエディタで拡張属性を保持するには、rename(2)を使用する代わりに、保存時にファイルを切り捨てるように設定する必要があります。
Tips and tricks
ルートを保持
--preserve-root
フラグを使用して、chmod
が/
に再帰的に作用するのを防ぎます。 これにより、例えば、実行可能ビットがシステム全体で削除され、システムが壊れるのを防ぐことができます。 このフラグを毎回使用するには、エイリアス内で設定します。 も参照。,も参照してください
- wikipedia:Chattr
- Linuxファイル権限の混乱
- Linuxファイル権限の混乱パート2
- wikipedia:拡張ファイル属性#Linux
- 拡張属性:良い、悪い、悪い。
- Linuxでのファイルのバックアップと復元のアクセス許可
- “chmod-R777/”はなぜ破壊的ですか?