主題1.02:ファイル・ディレクトリの操作と管理
1.02.1 ファイルの所有者とパーミッション(重要度3)
chmodコマンド
書式
chmod【オプション】モード ファイル/ディレクトリ
概要
パーミッションを変更
主なオプション
-R
→指定したディレクトリ以下のファイル/サブディレクトリもすべて変更する
引数
・モード:設定するパーミッションを指定
・ファイル/ディレクトリ:対象となるファイル/ディレクトリを指定
使用例
chmod ug+r /testdir
→所有者と所有グループに読み取り権限を付与
chmod o-wx 1.txt
→その他のユーザーから書き込みと実行権限を削除
chmod u=r 1.txt
→所有者の権限を読み取りのみにする
chmod 400 1.txt
→オクタルモードでは対象すべてをまとめて設定
パーミッション
r:4:読み取り
w:2:書き込み
x:1:実行
640=所有者に読み取りと書き込み権限があり、所有グループに読み取り権限が、その他のユーザーには権限がない
権限:ファイルに適用した場合:ディレクトリに適用した場合
読み:ファイルの内容を参照(cat,more):ディレクトリ内の内容を参照(ls,find)
書き:ファイルに書き込み(vi):ディレクトリ内にファイルの作成、名前変更や削除(touch,mv,rm)
実行:ファイルを実行:ディレクトリ内のファイルへアクセス、ディレクトリへの移動(cd)
特殊なパーミッション
・SUID
実行ファイルに設定することで、そのプログラムをどのユーザーが実行しても、プログラムの所有ユーザーの権限で実行される
chmod 4755 file
chmod u+s file
・SGID
実行ファイルに設定することで、そのプログラムをどのユーザーが実行しても、プログラムの所有グループの権限で実行される
chmod 2755 file
chmod g+s file
・スティッキービット
ディレクトリに設定することで、そのディレクトリに対して書き込み権限を持つユーザーでも、自分が所有する以外のファイルを削除できなくなる
chmod 1755 dir
chmod o+s dir
chownコマンド
書式
chown【オプション】所有者【:所有グループ】ファイル/ディレクトリ
概要
所有者、所有グループを変更
主なオプション
-R
→指定したディレクトリ以下のファイル/サブディレクトリもすべて変更する
引数
・所有者:対象となるユーザーを指定
・所有グループ:対象となるグループを指定
・ファイル/ディレクトリ:対象となるファイル/ディレクトリを指定
使用例
chown -R testuser .
→カレントディレクトリとディレクトリ内の全ファイルの所有者をtestuserに変更
chown testuser:users 1.txt
→所有者をtestuserに所有グループをusersに変更
chown testuser.users 1.txt
→所有者をtestuserに所有グループをusersに変更(「:」の部分は「.」でも同じ)
chgrpコマンド
書式
chgrp【オプション】所有グループ ファイル/ディレクトリ
概要
所有グループを変更
主なオプション
-R
→指定したディレクトリ以下のファイル/サブディレクトリもすべて変更する
引数
・所有グループ:対象となるグループを指定
・ファイル/ディレクトリ:対象となるファイル/ディレクトリを指定
使用例
chgrp users 1.txt
→所有グループをusersに変更
umaskコマンド
書式
umask【オプション】【マスク値】
概要
マスク値を確認または設定
引数
・マスク値:設定するマスク値を指定。省略すると現在有効なマスク値を表示
使用例
umask
→現在有効なマスク値を表示
umask 022
→マスク値を022に設定
マスク値
・022の場合のファイルのデフォルトのパーミッションは「644(666-022)」になる
・022の場合のディレクトリのデフォルトのパーミッションは「755(777-022)」になる
1.02.2 基本的なファイル管理の実行(重要度3)
lsコマンド
書式
ls【オプション】【ディレクトリ/ファイル】
概要
ディレクトリの内容を参照
主なオプション
-a
→ドットファイルも含めたすべてのディレクトリ/ファイルを表示
-A
→-aと同じ。ただし、カレントディレクトリ「.」と親ディレクトリ「..」は表示しない
-d
→ディレクトリ自身の内容を表示
-h
→ファイルサイズをKB、MBといった単位で表示(-lと併用)
-i
→iノード番号を表示
-l
→パーミッションやタイムスタンプなどの情報も表示
-R
→サブディレクトリも展開して表示
-F
→ファイルの種類を末尾に表示(ディレクトリ:/ シンボリックリンク:@)
引数
・ディレクトリ/ファイル:表示するディレクトリ/ファイルを指定
使用例
ls -lh
→ファイルサイズをわかりやすい単位で表示
ls -ld /
→ルートディレクトリ自身の情報を詳細表示
ls *.txt
→ファイル名の末尾に.txtと付くファイルを表示
ls test?.txt
→testの後に1文字何か付き、末尾に.txtと付くファイルを表示
ls test[12].txt
→test12.txtは対象にならない
ls test[!0-9].txt
→[!0-9]で数字以外が指定されているという意味になる
ls {test,win}?.txt
→testもしくはwinの後に1文字.txtというファイルを指定
ls test{1..5}.txt
→{n..n}で連続値の出力が可能
touchコマンド
書式
touch【オプション】ファイル
概要
ファイルのタイムスタンプを更新/空のファイルを作成
主なオプション
-t 04010715
→指定した日時(4月1日7時15分)にタイムスタンプを更新
-a
→アクセス日時のみ更新
-m
→更新日時のみ更新
使用例
touch testa.txt
→testa.txtというファイルを作成
touch -t 04010715 testa.txt
→testa.txtの更新日時を4月1日7時15分に変更
cpコマンド
書式
cp【オプション】ファイル1 ファイル2/ディレクトリ
概要
ファイルのコピー
主なオプション
-r/-R
→ディレクトリをコピー(指定したディレクトリ配下をすべてコピー)
-f
→上書き時、確認メッセージを非表示にする(削除してからコピーする)
-i
→上書き時、確認メッセージの表示を強制する
-p
→タイムスタンプやパーミッションなどのファイル属性を維持したままコピー(所有者情報を保持できるのはrootユーザーのみ)
-d
→シンボリックリンクをそのままコピー
引数
・ファイル1:コピー元のファイルを指定
・ファイル2/ディレクトリ:コピー先を指定。存在するディレクトリを指定した場合、指定したディレクトリにコピーする。存在しない名前を指定したら、同じ内容のファイルを作成する
使用例
cp testa.txt /tmp
→ファイルをディレクトリにコピー
cp testa.txt testc.txt
→cpで第2引数をディレクトリとして存在しない名前にすると、同じ内容のファイルを作成
cp -r dir1 dir2
→ディレクトリ配下にあるファイルやディレクトリも含めて「dir1」ディレクトリごと、新規で「dir2」ディレクトリという名前でコピー
mvコマンド
書式
mv【オプション】ファイル1 ファイル2/ディレクトリ
概要
ファイルの移動/名前の変更
主なオプション
-f
→上書き時、確認メッセージを非表示にする
-i
→上書き時、確認メッセージの表示を強制する
引数
・ファイル1:移動元のファイルを指定
・ファイル2/ディレクトリ:移動先を指定。存在するディレクトリを指定した場合、指定したディレクトリに移動する。存在しない名前を指定したら、同じ内容のファイルをファイル2で指定した名前で作成する(名前の変更)
使用例
mv testb.txt /tmp
→ファイルをディレクトリに移動
mv testa.txt testd.txt
→mvで第2引数をディレクトリとして存在しない名前にすると、名前の変更
mv -f tmp/* doc
→「tmp」ディレクトリにあるファイルやディレクトリを「doc」ディレクトリに移動
rmコマンド
書式
rm【オプション】ファイル
概要
ファイルの削除
主なオプション
-r/-R
→ディレクトリを削除(指定したディレクトリ配下をすべて削除)
-f
→確認メッセージを非表示にする
-i
→確認メッセージの表示を強制する
使用例
rm testd.txt
→確認メッセージが出るのでyを押すと削除する
rm -rf sampledir
→空のディレクトリでも削除できる(rmdirコマンドだと削除できない)
mkdirコマンド
書式
mkdir【オプション】ディレクトリ
概要
ディレクトリの作成
主なオプション
-p
→親ディレクトリも一緒に作成
-m パーミッション値
→作成するディレクトリのパーミッションを指定
引数
・ディレクトリ:作成するディレクトリを指定
使用例
mkdir sampledir1
→ディレクトリを作成
mkdir -p sampledir2/testdir
→-pオプションを指定すると、複数階層を指定してまとめてディレクトリを作成
rmdirコマンド
書式
rmdir【オプション】ディレクトリ
概要
空のディレクトリの削除
主なオプション
-p
→親ディレクトリも一緒に削除
引数
・ディレクトリ:削除するディレクトリを指定
使用例
rmdir sampledir1
→ディレクトリを削除
rmdir -p sampledir2/testdir
→-pオプションを有効にすると、親ディレクトリも一緒に削除
tarコマンド
書式
tar【オプション】ファイル
概要
ファイルのアーカイブ/展開
主なオプション
c
→アーカイブファイルの作成
x
→アーカイブファイルの展開
t
→アーカイブファイルの内容を参照する
v
→処理したファイルの一覧を表示
f ファイル名
→ファイルの指定
z
→gzipを通して圧縮/展開
j
→bzip2を通して圧縮/展開
J
→xzを通して圧縮/展開
引数
・ファイル:操作するファイルを指定
使用例
tar cvf test.tar test*
→カレントディレクトリに存在するtestと名前の付くファイルをtest.tarというアーカイブファイルとしてまとめる
tar xf ~/test.tar
→カレントディレクトリにアーカイブファイルの内容を展開
tar xvJf test.tar.xz
→アーカイブファイルtest.tar.xzをカレントディレクトリに展開
tar ftvz test.tar.gz
→gzip形式で圧縮したアーカイブファイル「test.tar.gz」の内容を展開せずに表示
gzipコマンド
書式
gzip【オプション】【ファイル名】
概要
gzip形式でファイルを圧縮
主なオプション
-d
→圧縮ファイルを展開
-c
→元ファイルを残して標準出力に出力
-r
→ディレクトリ内のすべてのファイルをそれぞれ圧縮
使用例
gzip -r dir
→dirディレクトリ内のすべてのファイルをそれぞれgzip形式で圧縮
gzip -c configure > configure.gz
→configureファイルをgzip形式でconfigure.gzというファイルに圧縮(圧縮前の元ファイルを残す)
gzip -d configure.gz
gunzip configure.gz
→configure.gzファイルを展開
gzip -cd test.tar.gz | tar ftv –
→gzip形式で圧縮したアーカイブファイル「test.tar.gz」の内容を展開せずに表示(-は標準入力からファイル名を受け取ることを意味する)
bzip2コマンド
書式
bzip2【オプション】【ファイル名】
概要
bzip2形式でファイルを圧縮
主なオプション
-d
→圧縮ファイルを展開
-c
→元ファイルを残して標準出力に出力
使用例
bzip2 -c configure > configure.bz2
→configureファイルをbzip2形式でconfigure.bz2というファイルに圧縮(圧縮前の元ファイルを残す)
bzip2 -d configure.bz2
bunzip2 configure.bz2
→configure.bzファイルを展開
xzコマンド
書式
xz【オプション】処理対象ファイル名
概要
xz形式でファイルを圧縮
主なオプション
-d/ーーdecompress
→圧縮ファイルの展開
-k/ーーkeep
→圧縮、展開処理後に元のファイルを削除しない
-l/ーーlist
→圧縮ファイルの情報を表示する
使用例
xz -k configure
→configureファイルをxz形式でconfigure.xzというファイルに圧縮
xz -d configure.xz
unxz configure.xz
→configure.xzファイルを展開
xz -l configure.xz
→configure.xzファイルの情報を表示
ddコマンド
書式
dd【オプション】if=出力元 of=出力先 bs=サイズ count=数
概要
ddによるアーカイブ処理
引数
・出力元:出力元となるデバイスファイルやアーカイブファイルを指定
・出力先:出力先となるデバイスファイルやアーカイブファイルを指定
・サイズ:1回に読み書きをするブロックサイズの単位
・数:読み書きをする回数
使用例
dd if=/dev/sda1 of=boot.dat
→sda1(/boot用の領域)の内容をboot.datにアーカイブ
dd if=/dev/zero of=testdd.dat bs=1M count=10
→1MBの書き込みを10回実施
fileコマンド
書式
file【オプション】ファイル
概要
ファイルの種類を特定
引数
・ファイル:特定する対象となるファイルを指定
使用例
file test*
→testと付くファイルの種類を特定(ファイルのアクセス時刻[atime]のみが更新)
1.02.3 ハードリンクとシンボリックリンク(重要度2)
lnコマンド
書式
ln【オプション】リンク元 リンク
概要
リンクを作成
主なオプション
-f
→リンク先が存在しても上書きして設定
-s
→シンボリックリンクを作成(既定ではハードリンクを作成)
引数
・リンク元:リンク元となるファイル/ディレクトリを指定
・リンク:作成するリンクを指定
使用例
ln /tmp/root.txt hard.ln
→オプションなしだとハードリンクを作成
ln -s /tmp/root.txt symbol.ln
→シンボリックリンクを作成
ハードリンクの特徴
・ディレクトリのハードリンクは作成できない
・異なるファイルシステム(パーティション)にハードリンクを作成できない
・ハードリンク先のファイルを編集すると、元ファイルも変更される
・元のファイルが削除されてもアクセスができる
・ディスク使用量を節約できる
シンボリックリンクの特徴
・ディレクトリのシンボリックリンクを作成できる
・異なるファイルシステム間でも作成可能
・元のファイルを削除しても、リンクは残る(アクセスするとエラーになる)
・パーミッションの先頭に「l」が表示される
1.02.4 ファイルの配置と検索(重要度2)
FHSで規定されているディレクトリ配置
FHS(ファイルシステム階層標準)の説明
・ディストリビューションに依存しない、Linuxの標準的なディレクトリの構造を定めた規格のこと
・ユーザーがインストールしたプログラムの配置場所などを推測しやすくするためのもの
/usr/の主なサブディレクトリ
/usr/:ユーザーが共有するファイルを格納。インストールされたアプリケーションなどが格納
/usr/bin/:システムの起動には必須ではない、一般ユーザー用のコマンド
/usr/sbin/:システムの起動には必須ではない、システムの管理用のコマンド
/usr/lib/:/usr/bin、usr/sbinに格納されるコマンドが必要とする共有ライブラリ
/usr/local/:ホスト固有で使用するプログラムや設定ファイル(個人作成など)
/usr/local/bin/:プログラムを格納する
/usr/local/etc/:設定ファイルを格納する
/usr/src/:ソースファイル
/usr/share/doc/:プログラムが提供するドキュメント
/usr/share/man/:オンラインマニュアル(manコマンド用)
findコマンド
書式
find【検索ディレクトリ】【オプション】【条件式】【アクション】
概要
多様な条件でファイルを検索
引数
・検索ディレクトリ:検索対象となるディレクトリを指定(未指定だとカレントディレクトリ以下を指定)
・条件式:検索条件を指定
主なオプション
-maxdepth 階層数
→指定した階層まで検索
-mindepth 階層数
→指定した階層から下を検索
主な条件式
-name 名前
→ファイルやディレクトリ名で検索
-atime 日数
→最終アクセス日で検索
-mtime 日数
→最終更新日で検索
-user ユーザー名
→所有者名で検索
-perm パーミッション
→パーミッション値で検索
-size サイズ
→ファイルサイズで検索
-type 種類
→ファイルの種類で検索( f:通常ファイル d:ディレクトリ l:シンボリックリンク)
主なアクション
-ls
→検索結果の属性情報も表示
-print
→検索結果を改行で区切って表示(省略可能)
-print0
→検索結果をNULL文字(¥0)で区切って表示
-exec コマンド {} \;
→検索結果に対して指定したコマンドを実行。{}の部分に検索結果となるファイル名が入る
使用例
find /etc -maxdepth 1 -name “*hosts*” -ls
→/etc/ディレクトリ直下(maxdepthで指定)のhostsと付くファイルを属性情報も含めて表示
find /testdir -perm 0400 -exec rm {} \;
→指定したパーミッションのファイルを削除
xargsコマンド
書式
xargs【オプション】コマンド
概要
標準入力に送られてきた対象に対して、コマンドを実行
引数
・コマンド:実行するコマンドを指定
使用例
find /testdir -user root | xargs rm
→所有者がrootのファイルを検索して削除
find /testdir -type f | xargs echo
→/tmp/以下の通常ファイルをまとめて表示
locateコマンド
書式
locate【オプション】名前
概要
ファイル名データベースに基づいてファイルを検索
引数
・名前:検索する名前を指定
使用例
locate host
→パスの中にhostという文字が含まれるものを検索
updatedbコマンド
書式
updatedb【オプション】
概要
locateコマンド用のファイル名データベースを作成
設定ファイル
/etc/updatedb.conf
whichコマンド
書式
which【オプション】名前
概要
$PATHに登録されているディレクトリからコマンドの実行ファイルを検索
引数
・名前:検索する名前を指定
使用例
which passwd
→passwdコマンドの実行ファイルのパスを確認
ls -l `which passwd
`
→passwdコマンドの実行ファイルの属性を表示
typeコマンド
書式
type【オプション】名前
概要
指定した名前の種別(コマンド、エイリアスなど)とパスを表示
主なオプション
-t
→種別だけ出力
引数
・名前:検索する名前を指定
使用例
type passwd
→passwdコマンドの実行ファイルを検索
type -t if
→ifキーワードの種別を確認
whereisコマンド
書式
whereis【オプション】名前
概要
指定したコマンド、マニュアル、ソースのファイルを検索
引数
・名前:検索する名前を指定
使用例
whereis passwd
→passwdコマンドの実行ファイルやマニュアルファイルを検索