Skip to content

Linux リテラシ2006 - 第2回 Linux の基礎知識と基本コマンド2

This content is not available in your language yet.

第2回となる今回も前回の続きで基本的なコマンドの説明です。今回はファイルの操作とアクセス権限を司るコマンドを扱います。

コマンドの説明をする前に、今回新たに加わるLinuxの概念について説明します。

スーパーユーザ(root)はシステム内における絶対的な管理者で、全てのファイルに対して変更や作成、追加、削除など、どんな操作でも許可されているユーザです。これに対し一般ユーザは他の一般ユーザ、もしくはスーパーユーザの許可がない場合、自分の所有するファイルやディレクトリ以外は操作できません。

スーパーユーザの方が制限なく操作をできて便利ではないか?と思われるでしょうが、スーパーユーザはその権力が大き過ぎるので、システム上重要なファイルやディレクトリも削除することができてしまいます。そうしないために普段は一般ユーザで作業をし、スーパーユーザの権限が必要な時のみスーパーユーザにログインをします。

Linux では複数のユーザの集合をグループという単位で管理します。全てのユーザは一つ以上のグループに所属しており、通常ユーザ名と同じ名前のグループに所属しています。後述のアクセス権を設定する際、グループ単位でアクセス権を指定することが可能です。

wget [オプション] URL
Terminal window
$ wget http://rat.cis.k.hosei.ac.jp/article/rat/linuxliteracy/2006/commands2/hoge.tar.gz

ダウンロードできたか確認しましょう。

Terminal window
$ ls
hoge.tar.gz

~.tarという形式のファイルはファイルやディレクトリをまとめて、ひとつの.tarファイルにしたものです。
~.gzという形式のファイルは1つのファイルやディレクトリを圧縮したものです。

tar [オプション] ファイル名

:-f:解凍するファイル名を指定する。
:-v:処理状況を表示する。
:-x:展開する。
:-z:gzip形式のものを解凍する。(tar.gzの形式の場合、使用します)

hoge.tar.gzという圧縮されたファイルを解凍する

Section titled “hoge.tar.gzという圧縮されたファイルを解凍する”
Terminal window
$ tar -zxvf hoge.tar.gz
foo.zip

lsコマンドで解凍ができたか確認します。

Terminal window
$ ls
foo.zip hoge.tar.gz
unzip [オプション] ファイル名

foo.zipというzipファイルを解凍する

Section titled “foo.zipというzipファイルを解凍する”
Terminal window
$ unzip foo.zip
Archive: foo.zip
creating: foo/
creating: foo/access/
creating: foo/dest/
inflating: foo/road
inflating: foo/long

lsコマンドで解凍ができたか確認します。

Terminal window
$ ls
foo foo.zip hoge.tar.gz
find [ディレクトリ名/ファイル名] [expression]

:-group グループ名:指定したグループ名のファイルを検索します。
:-name 文字列:指定した文字列のファイル名を検索します。
:-type ファイルタイプ:指定したファイルタイプを検索します。
ファイルタイプは、ディレクトリ:“d”、通常ファイル:“f”、など
:-user ユーザー名:指定した所有ユーザ名のファイルを検索します。

カレントディレクトリ以下でファイル名がlongのファイルを検索する

Section titled “カレントディレクトリ以下でファイル名がlongのファイルを検索する”
Terminal window
$ find -name long
./foo/long

fooディレクトリ以下のファイルタイプがディレクトリのファイルを検索する

Section titled “fooディレクトリ以下のファイルタイプがディレクトリのファイルを検索する”
Terminal window
$ find foo -type d
foo
foo/access
foo/dest
cat [オプション] ファイル名 [ファイル名...]

:-n:行番号を表示する。

Terminal window
$ cat road
「道」
この道を行けば
どうなるものか
危ぶむなかれ
危ぶめば道はなし
踏み出せば
その一足が道となり
その一足が道となる
迷わず行けよ
行けばわかるさ
一休宗純

roadの内容を行番号を付きで出力する

Section titled “roadの内容を行番号を付きで出力する”
Terminal window
$ cat -n road
1
2
3 「道」
4
5 この道を行けば
6 どうなるものか
7
8 危ぶむなかれ
9 危ぶめば道はなし
10
11 踏み出せば
12 その一足が道となり
13 その一足が道となる
14
15 迷わず行けよ
16 行けばわかるさ
17
18 一休宗純
less [オプション] ファイル名

:-N:行番号を表示する

longというファイルをわかりやすく見る

Section titled “longというファイルをわかりやすく見る”
Terminal window
$ less long
名前
man - オンラインマニュアルページを整形し表示する。
manpath - ユーザー個々のマニュアルページの検索パスを manpath - ユーザー個々のマニュアルページの検索パスを決める。
書式
man [-adfhktwW] [-m system] [-p string] [-C config_file] [-M path] [-P
pager] [-S section_list] [section] name ...
説明
man はオンライン・マニュアル・ページを整形し表示する。このバージョンの
man コマンドでは環境変数 MANPATH と (MAN)PAGER を設定できる。これによ
り、個人的なマニュアルページを設定したり、整形したページを表示するプロ
グラムを好きに選べる。 section を指定すると、 man はマニュアルのそのセ
クションのみ探す。またコマンドライン・オプションや環境変数で、それぞれ
のセクションを検索する順序や、ソース・ファイルに対してどんなプリプロセ
ッサを用いるかを指定したりすることができる。 name に / が含まれてい る
とき man コマンドはまずファイル名として扱う。したがって man ./foo.5 ま
たは man /cd/foo/bar.1.gz とさえできる。

ファイルの最初から
コンソールに収まらない場合、↑↓キーを押すと上下にスクロールします。
またコマンドラインにもどるにはmanコマンドと同じように”q”で戻ります。

ファイルの最後の部分を表示する

Section titled “ファイルの最後の部分を表示する”
tail [オプション] ファイル名

:-n 行数 または -行数:行数だけ出力する。

longというファイルの末尾7行を出力する

Section titled “longというファイルの末尾7行を出力する”
Terminal window
$ tail -n 7 long
バグ
-t オプションは troff ライクなプログラムがインストールされている場合の
み有効である。
September 12, 1995 man(1)
Terminal window
$ tail -7 long
バグ
-t オプションは troff ライクなプログラムがインストールされている場合の
み有効である。
September 12, 1995 man(1)
cp [オプション] コピー元 コピー先
Terminal window
$ cp road michi

コピーができたかどうか確認しましょう

Terminal window
$ ls
access dest long michi road
cp [オプション] コピー元 コピー先

:-a:ディレクトリ/ファイルの構成やアクセス権限を保持してコピーする。
:-r:ディレクトリごとコピーする。(所有者以外のユーザ以外が行うと所有者が変わる)

destをディレクトリごとaccessにコピーする

Section titled “destをディレクトリごとaccessにコピーする”
Terminal window
$ cp -r dest access
Terminal window
$ ls access
dest

ファイル(ディレクトリ)を移動する

Section titled “ファイル(ディレクトリ)を移動する”
mv [オプション] 移動元 移動先
Terminal window
$ mv dest to
Terminal window
$ ls
access long michi road to
rm ファイル名 [オプション]

:-f:警告メッセージを表示しない。
:-i:警告メッセージを表示する。

Terminal window
$ rm michi
rm ディレクトリ名 [オプション]

:-r:ディレクトリ内を再帰的に削除する。
:-f:警告メッセージを表示しない。
:-i:警告メッセージを表示する。

Terminal window
$ rm to -rf
Terminal window
$ ls
access long road

Linuxはディレクトリやファイル単位でアクセス権を細かく定めることができます。アクセス権がどのように設定されているかはls -lのコマンドで確認できます。

Terminal window
$ ls -l
drwxrwxr-x 2 foo foo 4096 5月 23 19:53 access
-rw-rw-r-- 1 foo foo 27 5月 23 19:54 road
-rw-rw-r-- 1 foo foo 235 5月 23 11:27 long

ここで、barにクローズアップしてみましょう。

lsal.PNG
このA~Dについて説明します。

Aはこのファイル(またはディレクトリ)のアクセス権を表します。
Bはこのファイルの所有ユーザを表します。
Cはこのファイルの所有グループを表します。
Dはこのファイルの名前です。

今度はAのアクセス権にクローズアップします。

permission2.PNG
アクセス権はこの図の1~4に分けて考えることができます。

1はこのファイルのファイルタイプを表します。(ディレクトリは"d"、ファイルは"-"など)
2は所有ユーザの権限を表します。所有ユーザはコマンドでは"u"と表されます。
3は所有グループの権限を表します。所有グループは"g"と表されます。
4はその他のユーザの権限を表します。その他のユーザは"o"と表されます。
補足として、コマンドで全ユーザを指定する場合は"a"と表されます。

各権限の項目にrwxなどの文字が書かれていますが、これらの文字は各権限毎に何ができるかを表しています。

"r" …読み取り可能(Readable)を表します。
"w" …書き込み可能(Writable)を表します。
"x" …実行可能(eXecutable)を表します。
"-" …これは上記3個のどれかに置き換わり、その権限が与えられていないことを表します。

つまり、先ほどのbarというディレクトリはその他のユーザのみ書き込み権限が与えられてない、ということになります。

アクセス権限のことをパーミッション(permission)とも呼びます。

chmod モード ディレクトリ名/ファイル名

:モード:変更するアクセス権限を表します
アクセス権の変更方法は2通りあります

1、先ほどの”u”や”g”に対して”+“や”-”、”=“で与える(アクセス権”r”や”w”、“x”を指定する方法です。

accessというディレクトリにすべてのユーザの書き込み権限をなくす

Section titled “accessというディレクトリにすべてのユーザの書き込み権限をなくす”
Terminal window
$ chmod a-w access

sub.png
確認にはls -lコマンドを使います

Terminal window
$ ls -l
dr-xr-xr-x 2 foo foo 4096 5月 24 06:11 access

2、各ユーザ権限の”r”、“w”、“x”を3桁の2進数に置き換え、それをユーザごとに足し、3の8進数で表現し、全アクセス権を指定して変更する方法です。
:例:ファイルのアクセス権を-rwxr-xr—に変えたい場合

所有ユーザ …2進数で、111=4+2+1=7
所有グループ…2進数で、101=4+0+1=5
他のユーザ …2進数で、100=4+0+0=4
この場合、モードは754となります

roadというファイルのアクセス権をrwxrw-r—にする

Section titled “roadというファイルのアクセス権をrwxrw-r—にする”
Terminal window
$ chmod 764 road

確認します

Terminal window
$ ls -l
-rwxrw-r-- 1 foo foo 27 5月 24 06:12 road