Contents
ファイルの所有者とパーミッション
アクセス権
読み取り | r |
書き込み | w |
実行権 | x |
権限 | ファイルの適用 | ディレクトリに適用 |
---|---|---|
読み | 内容を参照 | 内容を参照 |
書き | 書き込み | ファイルの新規作成、削除、名前変更 |
実行 | ファイルを実行 | ディレクトリのファイルにアクセス、ディレクトリへの移動 |
アクセス権の表記法
所有者 | グループ | その他ユーザ | |
---|---|---|---|
記号表記: | r w x | r – x | r – – |
4 2 1 | 4 – 1 | 4 – – | |
↓ | ↓ | ↓ | |
数値表記: | 7 | 5 | 4 |
chmod
「change mode」
chmod [ オプション ] アクセス権 ファイル名
オプション … -R --recursive 指定した以下にある全ファイルのアクセス権を変更
オプション | 内容 |
-R –r | 指定したディレクトリのファイル全てのアクセス権を変更する |
対象 | 内容 |
u | 所有者 |
g | グループ |
o | その他 |
a | 全ユーザ |
種別 | 内容 |
r | 読み取り |
w | 書込み |
x | 実行 |
s | SUID、SGID |
t | スティッキービット |
SUID、SGID
「Set User ID」、「Set Group ID」
SUID、SGIDは特殊なアクセス権です。
そのファイルを誰が実行しても所有者の権限・グループの権限で実行されることを意味します
SUIDを設定するには、
- chmod 4755 file(3桁のアクセス権に4000を加える)
- chmod u+s file(所有者に「s」という権限を追加します)
SGIDを設定するには、
- chmod 2755 file(3桁のアクセス権に2000を加える)
- chmod g+s file(グループに「s」という権限を追加します)
スティッキービット
自分以外の他のユーザが所有しているファイルを削除出来ないようにするには、スティッキービットをディレクトリに設定します。
- 通常のパーミッションの値に1000を加えた値を設定する
- その他ユーザに「t」という権限を追加する
umask
ファイルやディレクトリ作成時のデフォルトのアクセス権は、umask値で決まります。
- ファイル … 666 – umask値
- ディレクトリ … 777 – umask値
http://www.rivhiro-weather.com/knowledge/?p=168
chown
chown [ オプション ] ユーザ ファイル名/ディレクトリ名
chown [ オプション ] :グループ名 ファイル名/ディレクトリ名
オプション … -R --recursive 指定した以下にある全ファイルの所有者を変更
chgrp
chgrp [ オプション ] グループ ファイル名/ディレクトリ名
オプション … -R --recursive 指定した以下にある全ファイルの所有者を変更
ハードリンクとシンボリックリンク
ファイルの実体に名前を結びつける「ハードリンク」と、 名前に名前を結びつける「シンボリックリンク」の2つがあります。
iノード番号
Linuxではファイルを保存するとユニークな値でiノード番号が割り当てられます。
iノードにはファイルに関する属性情報が格納されています。
ハードリンク
- iノード番号が同じ
- ハードリンクが0になると、実体がはじめて削除されます
- ファイルシステムが異なると作成できない
です - ディレクトリのハードリンクは作成できません
シンボリックリンク
- 別ファイルシステムへのリンク作成が可能
- lsコマンドで確認するとパーミッションの先頭に「l」が表示される
ln
リンクの作成にはlnコマンドを利用します。
ln [-s‥シンボリックリンク] リンク元 リンク先
- ハードリンクは異なるファイルシステムに作成できません。
- ディレクトリのハードリンクは作成できません。
基本的なファイル管理の実行
pwd
カレントディレクトリを表示する
「print working directory(作業ディレクトリを表示する)」
ls コマンド
「list」の略
カレントディレクトリのファイル一覧を表示します。
ls [オプション] [ファイル名、ディレクトリ名]
-a(all) | all、ドット(隠し)ファイルも表示 |
-d(dir) | ディレクトリの情報を表示 |
-R | サブディレクトリの内容も表示 |
-l(long) | 詳細情報を表示 |
-h(MB、KB) | メガバイト、キロバイトの単位で情報を表示 |
-i(i-node) | i-nodeの情報を表示 |
cd
カレントディレクトリをホームディレクトリに変更する
change directory
ホームディレクトリへのパス
cd
cd ~(チルダ展開)
ひとつ前に戻る
cd -
cp コマンド
f | コピー先の既存のファイルやディレクトリが上書き出ない場合、削除してからコピーする |
r、R | ディレクトリを再起的にコピー |
i | 同名のものがある場合、上書きするか問い合わせる |
p | ファイルの属性を保持したままコピー |
mv コマンド
ファイルやディレクトリを移動するときや名前を変えるときに使うコマンド
-f –force | 移動先に同名のファイルやディレクトリがある場合、上書きする |
-i –interactive | 移動先に同名のファイルやディレクトリがある場合、上書きするか問い合わせる |
mkdir コマンド
ディレクトリを作成するにはmkdirコマンドを利用します
-m –mode | 指定したアクセス権でディレクトリを作成 |
-p –parents | 必要な場合親ディレクトリを作成する |
rm コマンド
ファイルやディレクトリを削除できるコマンド。
-f –force | ユーザへの確認なしで削除する |
-i | 削除前にユーザに確認する |
-r、-R –recursive | サブディレクトリを含めディレクトリ全体を再帰的に削除する |
rmdir コマンド
空のディレクトリのみ削除できる
d ディレクトリ名に階層を指定した場合、削除するディレクトリの親ディレクトリを同時に削除するオプションです。
p 複数階層の空ディレクトリを削除する
※(区別)rm -r空ではないディレクトリも削除することができる
touch コマンド
- ファイルのタイムスタンプを更新します
- すでにあるファイルのタイムスタンプだけ更新する
- touch -t MMDDHH mm filename
- 空のファイルを生成します(本来はタイムスタンプを変更するコマンドでしたが、指定したファイルがない場合は新規作成する)
t | アクセス時刻と修正時刻を指定した時刻に変更 |
a | アクセス時刻を変更 |
m | 修正時刻を変更 |
gzip
gzip形式でファイルを圧縮するにはgzipコマンドを利用します。
元ファイルを残して標準出力に出力
-d –decompress | 圧縮ファイルを展開 |
-c –stdout | 標準出力へ出力 |
-k –keep | 圧縮、解凍後に元ファイルを削除しない |
-r –recutsive | ディレクトリ内の全ファイルを圧縮 |
gunzip
gunzipコマンドで展開できます。
bzip2
-d –decompress | 圧縮ファイルを展開 |
-c –stdout | 元ファイルを残して標準出力 |
-k –keep | 圧縮、解凍後に元ファイルを削除しない |
bzip2 [オプション] [ファイル名]
xz
xz [オプション] [ファイル名]
-d –decompress | 圧縮ファイルの展開 |
-k –keep | 圧縮、展開後ファイルを削除しない |
-l –list | 圧縮ファイルの情報を表示する |
xz -dコマンドの代わりにunxzコマンドを使ってもかまいません。
tar
tape archive
複数のファイルをまとめて一つのアーカイブにしたり、アーカイブを展開するときに使うコマンド。
[作成するファイル名][圧縮するディレクトリ名]
c create | アーカイブを作成 |
x extract | アーカイブからファイルを展開 |
t list | アーカイブの内容一覧を表示 |
f filename | アーカイブファイル名を指定 |
z gzip | gzipを通して、圧縮/展開 |
j bzip2 | bzip2を通して、圧縮/展開 |
J xz | xzを通して、圧縮/展開 |
v verbose | 処理の詳細を表示 |
dd
ブロックサイズとコピー回数を指定してファイルを作成できるコマンド。
if=入力ファイル | 入力ファイルを指定 |
of=出力ファイル | 出力ファイルを指定 |
bs= バイト数 | 作成するファイルのブロックサイズを指定 |
count=回数 | 回数分の入力ブロックをコピー |
ファイルの配置と検索
FHS
Filesystem Hierarchy Standard
Linuxの標準的なディレクトリレイアウトを定めた標準かされている仕様
FHSさえ知っていればソフトウェア固有の知識のインプットをを最小限にすることができます。
/dev
デバイスファイルを入れるディレクトリ
/usr/bin
ユーザが一般的に使うコマンドがあります。システムの起動や、緊急時の保守には必須でないものです。
/etc
設定ファイルを入れるディレクトリ
/home
ホームディレクトリを入れるディレクトリ
ユーザが自由に操作できるユーザー名のディレクトリがあります。
man hier
HIER(7) Linux Programmer’s Manual HIER(7)
名前
hier - ファイルシステム階層の説明
説明
典 型的な Linux system には以下のようなディレクトリがある (他にもたくさ
んのディレクトリがあるが):
/ ルートディレクトリ。ここが階層の起点となる。
/bin このディレクトリには、シングルユーザーモードでシステムの起動や修
理を行う際に必要な実行形式ファイルが含まれる。
/boot ブートローダが用いる静的なファイルが含まれている。このディレクト
リにはブートプロセスの間に必要なファイルだけが置かれる。マップイ
ンストーラや設定ファイルは /sbin や /etc に置くべきである。
/dev 物理デバイスを参照しているスペシャルファイルやデバイスファイルの
置き場所。 mknod(1) を参照のこと。
/etc マシン固有の設定ファイルが置かれる場所。X11 のような大規模なソフ
トウェアパッケージでは、 /etc 以下に更にパッケージ単位でサブディ
レクトリが作られることもある。サイト全体に有効な設定ファイルは、
ここではなく /usr/etc に置かれることもある。しかし、プログラムか
らのこれらのファイルの参照先は、常に /etc にす べ き で あ る 。
/usr/etc 以下のファイルに対しては、それらへのリンクを /etc に置
けばよい。
/etc/opt
/opt にインストールされたアドオンアプリケーションが使う、ホス ト
固有の設定ファイルの置き場所。
/etc/sgml
SGML や XML の設定ファイルの置き場所 (なくてもよい)。
/etc/skel
新たにユーザーアカウントを作る際、通常このディレクトリにあるファ
イルがユーザーのホームディレクトリにコピーされる。
/etc/X11
X11 window system の設定ファイルの置き場所 (なくてもよい)。
/home 通常、ユーザーのホームディレクトリが、このディレクトリ直下ないし
サブディレクトリの下に作成される。このディレクトリの構成をどうす
るかは、ローカルマシンの管理者が決めることである。
/lib このディレクトリには、システムの起動時に必要な共有ライブラリや、
ルートファイルシステムでコマンドを実行するのに必要な共有ライブラ
リを置く。
/media このディレクトリには、 CD/DVD ディスクや USB スティックなどの 取
り 外し可能メディア (removable media) 用のマウントポイントが置か
れる。
/mnt このディレクトリは、一時的にマウントするファイルシステム用のマウ
ントポイントである。ディストリビューションによっては、一時的にマ
ウントするファイルシステム用のマウントポイントとして、 /mnt 内に
サブディレクトリが用意されている場合がある。
/opt このディレクトリにはアドオンパッケージの静的なファイルが置かれる
。
/proc このディレクトリは proc ファイルシステムのマウントポイントである
。 proc ファイルシステムは、実行中プロセスやカーネルの情報を提供
する。この疑似ファイルシステムの詳細は、 proc(5) で説明されて い
る。
/root 通常ここが root ユーザのホームディレクトリになる (なくてもよい)
。
/sbin /bin と同様に、このディレクトリにはシステムの起動に必要なコマ ン
ドが含まれる。ただしここには、一般ユーザーは通常実行しないコマン
ドが置かれる。
/tmp このディレクトリには、定期的なジョブによって、またはシステム起動
時に、無条件に削除して構わない一時的なファイルが置かれる。
/usr 通常このディレクトリは、独立したパーティションがマウントされる。
ここには、共有可能で読み込み専用のものだけが含まれ、よっていろい
ろな Linux マシンからマウントできる。
/usr/X11R6
X Window System, Version 11 release 6 (なくてもよい)。
/usr/X11R6/bin
X Window System のバイナリの置き場所。古いディレクトリである
/usr/bin/X11 からここにシンボリックリンクが張られていることが 多
い。
/usr/X11R6/lib
X Window System に関連するデータファイルの置き場所。
/usr/X11R6/lib/X11
こ こ に は X の 動 作 に必要な種々のファイルが含まれている。
/usr/lib/X11 からここにシンボリックリンクが張られていることが 多
い。
/usr/X11R6/include/X11
こ こには X11 Window System を使ったプログラムをコンパイルするた
めに必要なインクルードファイルが含まれている。 /usr/include/X11
からここにシンボリックリンクが張られていることが多い。
/usr/bin
このディレクトリは、実行形式ファイルの主な置き場所である。システ
ムのブートやシステム復旧には必要とされない、一般ユーザーが利用す
るコマンドの多くは、ローカルにインストールされるのでない限り、こ
のディレクトリに置くべきである。
/usr/bin/X11
X11 コマンドの伝統的な置き場所。Linux では、通常 /usr/X11R6/bin
にシンボリックリンクが張られている。
/usr/dict
/usr/share/dict に置き換えられた。
/usr/doc
/usr/share/doc に置き換えられた。
/usr/etc
サイト内部の複数のマシンが共有するような設定ファイルが置かれる。
しかしながら、コマンドはそれらのファイルの参照先を、常に /etc に
すべきだろう。 /etc のファイルからリンクを張って、 /usr/etc の適
切なファイルを指すようにすべきである。
/usr/games
ゲームプログラムや教育用プログラムのバイナリが含まれている (なく
てもよい)。
/usr/include
C コンパイラ用のインクルードファイルが含まれている。
/usr/include/X11
C コンパイラと X Window System 用のインクルードファイルが含まれ
ている。通常これは /usr/inlcude/X11 へのシンボリックリンクになっ
ている。
/usr/include/asm
アセンブラ関数の宣言を行うインクルードファイルが含まれている。こ
のディレクトリは、以前は /usr/src/linux/include/asm へのシンボリ
ックリンクだった。
/usr/include/linux
ここには、システムのリリースのたびごとに変更されうる情報が含まれ
る。ここは以前は /usr/src/linux/include/linux にシンボリックリン
クされており、オペレーティングシステム固有の情報が得られるように
なっていた。
(ここに置くインクルードファイルは、現在の libc およびユーザ空 間
で 正しく動作するものでなければならない。しかし Linux のカーネル
ソースはユーザプログラムといっしょに使うようには設計されていない
し 、 あなたが使っている libc も関知しない。 /usr/include/asm と
/usr/include/linux を適当なカーネルツリーへのリンクにしたりす る
と 、 破 綻 す る の は 目 に 見えている。 Debian ではこうせずに
、libc*-dev package が提供する、安定したカーネルバージョンのヘッ
ダファイルを置いている。)
/usr/include/g++
GNU C++ コンパイラ用のインクルードファイルが含まれている。
/usr/lib
オブジェクトライブラリ (ダイナミックライブラリも含む) と、直接に
は起動されないような実行形式ファイル少々とが置かれる。複雑なプロ
グラムでは、更にサブディレクトリがあるかもしれない。
/usr/lib/X11
X のプログラムに関連するデータファイルと、 X Window System の設
定ファイルの置き場所。 Linux では通常 /usr/X11R6/lib/X11 にシ ン
ボリックリンクが張られている。
/usr/lib/gcc-lib
GNU C コンパイラ gcc(1) 用の実行形式ファイルとインクルードファイ
ルが含まれている。
/usr/lib/groff
GNU groff 文書整形システムのためのファイルが含まれている。
/usr/lib/uucp
uucp(1) のためのファイルが含まれている。
/usr/local
このディレクトリは、サイトローカルなプログラムがインストールされ
る典型的な場所である。
/usr/local/bin
サイトローカルなプログラムが含まれている。
/usr/local/doc
サイトローカルなドキュメントが含まれている。
/usr/local/etc
サイトローカルにインストールされたプログラムの設定ファイルの置き
場所。
/usr/local/games
サイトローカルにインストールされたゲームのバイナリの置き場所。
/usr/local/lib
サイトローカルにインストールされたプログラムの関連ファイルの置き
場所。
/usr/local/include
ローカルな C コンパイラのヘッダファイルの置き場所。
/usr/local/info
サイトローカルにインストールされたプログラムの info ページの置き
場所。
/usr/local/man
サイトローカルにインストールされたプログラムのマニュアルページの
置き場所。
/usr/local/sbin
サイトローカルにインストールされたシステム管理コマンドの置き場所
。
/usr/local/share
同じ OS ならアーキテクチャが異なっても共有できる、ローカルなアプ
リケーションデータの置き場所。
/usr/local/src
サイトローカルにインストールされたソフトウェアのソースコードの置
き場所。
/usr/man
/usr/share/man に置き換えられた。
/usr/sbin
このディレクトリには、システム管理コマンドが含まれる。ここに置か
れるコマンドは、ブートプロセスや /usr のマウント、システムの修理
などに必要なものであってはならない。
/usr/share
このディレクトリには、アプリケーションごとに固有なデータ ( 同 じ
OS ならアーキテクチャが違っていても共有できるもの) がサブディレ
クトリ単位で置かれる。以前には /usr/doc, /usr/lib, /usr/man など
にあった内容が、多くここに置かれている。
/usr/share/dict
スペルチェッカ用の単語リストが含まれる。
/usr/share/doc
インストールされたプログラムのドキュメントの置き場所。
/usr/share/games
/usr/games に置かれたゲーム用の静的なデータファイルの置き場所。
/usr/share/info
info ページが置かれる。
/usr/share/locale
ロケール (locale) 情報が置かれる。
/usr/share/man
マニュアルページ。各ページはセクションに応じたサブディレクトリに
置かれる。
/usr/share/man//man[1-9]
これらのディレクトリには、各ロケールのマニュアルページのソースが
置かれている。すべてのマニュアルページで同じ言語とコードセットを
使用するシステムでは、 は省略されることがある。
/usr/share/misc
同じ OS ならアーキテクチャが違っていても共有できる、雑多なデータ
の置き場所。
/usr/share/nls
母 国語サポート (native language support) 用のメッセージカタログ
の置き場所。
/usr/share/sgml
SGML や XML のファイルの置き場所。
/usr/share/terminfo
terminfo のデータベースが置かれる。
/usr/share/tmac
groff と一緒には配布されていない troff マクロの置き場所。
/usr/share/zoneinfo
タイムゾーン情報のファイルが置かれる。
/usr/src
システム上の色々なコンポーネントのソースファイル (参照用のパッケ
ージも含む) の置き場所。この場所で自分のプロジェクトの作業をして
はいけない。 /usr 以下のファイルはソフトウェアのインストールの時
以外は読み込み専用になっているべきだからである。
/usr/src/linux
かつてはカーネルソースの伝統的な置き場所だった。ディストリビュー
ションによっては、出荷時のデフォルトのカーネルのソースをここに置
いている。自分でカーネルをビルドするときは別の場所を使うほうがい
いだろう。
/usr/tmp
今では用いられなくなった。このディレクトリは /var/tmp へのリンク
にすべきである。このリンクは互換性のためだけにあり、もはや使うべ
きでない。
/var このディレクトリには、スプールファイルやログファイルのような、サ
イズが変化するファイルが置かれる。
/var/adm
このディレクトリは /var/log に置き換えられた。ここは /var/log へ
のシンボリックリンクにすべきである。
/var/backups
歴史的な理由からまだ残っている。
/var/cache
プログラムのためにキャッシュされたデータの置き場所。
/var/catman/cat[1-9] or /var/cache/man/cat[1-9]
これらのディレクトリには、整形済みのマニュアルページが、ページの
セクションに従って置かれている。 (整形済みマニュアルページの利用
は推奨されていない。)
/var/cron
歴史的な理由からまだ残っている。
/var/lib
プログラムの状態に関する情報のうち、可変なものの置き場所。
/var/local
/usr/local 用の可変データの置き場所。
/var/lock
ロックファイルの置き場所。デバイスのロックファイルの命名は、慣習
と して LCK.. とされている。ここで はファイルシ
ステム上でのデバイス名である。利用されているフォーマット は HDU
UUCP のロックファイルのものである。すなわち各ロックファイルには
アスキー 10 進数値文字で表記した PID 10 バイトと、それに続いて改
行文字とが含まれている。
/var/log
種々のログファイルの置き場所。
/var/opt
/opt 用の可変データの置き場所。
/var/mail
ユ ーザのメールボックスの置き場所。 /var/spool/mail を置き換えた
。
/var/msgs
歴史的な理由からまだ残っている。
/var/preserve
歴史的な理由からまだ残っている。
/var/run
実行時の可変ファイルが置かれる。例えばプロセス識別子 (PID) を 保
持するファイルや、ユーザのログイン情報ファイル (utmp) などである
。ここのファイルは、通常システム起動時に削除される。
/var/spool
色々なプログラムのスプールファイル (あるいはキューファイル) の置
き場所。
/var/spool/at
at(1) のジョブスプール。
/var/spool/cron
cron(8) のジョブスプール。
/var/spool/lpd
印刷用のスプールファイルが置かれる。
/var/spool/mail
/var/mail に置き換えられた。
/var/spool/mqueue
キューイングされた送信メールの置き場所。
/var/spool/news
ニュースのスプールディレクトリ。
/var/spool/rwho
rwhod(8) のスプールファイルの置き場所。
/var/spool/smail
メール配送プログラム smail(1) のスプールファイルの置き場所。
/var/spool/uucp
uucp(1) のスプールファイルの置き場所。
/var/tmp
/tmp と似ているが、このディレクトリに置かれる一時的なファイルは
保存期間の制限がない。
/var/yp
NIS のデータベースファイルの置き場所。
準拠
The Filesystem Hierarchy Standard, Version 2.2 .
バグ
こ のリストは網羅的なものではない。個々のシステムでは異なる部分があるか
もしれない。
関連項目
find(1), ln(1), proc(5), mount(8)
The Filesystem Hierarchy Standard
Linux 2001-09-07 HIER(7)
locateコマンド
検索用データベースで高速にファイル名ディレクトリ名の検索を行います。
updatedbコマンド
locateコマンドが利用する検索用のデータベースを更新します。
findコマンドし
指定ディレクトリからファイル、ディレクトリを検索します。
find [検索起点ディレクトリ] [検索式] [アクション]
whichコマンド
環境変数PATHに基づき検索します。
whereisコマンド
指定コマンドのバイナリーファイル、ソースコード、マニュアルファイルの場所を検索します。