第2回となる今回も前回の続きで基本的なコマンドの説明です。今回はファイルの操作とアクセス権限を司るコマンドを扱います。
コマンドの説明をする前に、今回新たに加わるLinuxの概念について説明します。
スーパーユーザ(root)はシステム内における絶対的な管理者で、全てのファイルに対して変更や作成、追加、削除など、どんな操作でも許可されているユーザです。これに対し一般ユーザは他の一般ユーザ、もしくはスーパーユーザの許可がない場合、自分の所有するファイルやディレクトリ以外は操作できません。
スーパーユーザの方が制限なく操作をできて便利ではないか?と思われるでしょうが、スーパーユーザはその権力が大き過ぎるので、システム上重要なファイルやディレクトリも削除することができてしまいます。そうしないために普段は一般ユーザで作業をし、スーパーユーザの権限が必要な時のみスーパーユーザにログインをします。
Linux では複数のユーザの集合をグループという単位で管理します。全てのユーザは一つ以上のグループに所属しており、通常ユーザ名と同じ名前のグループに所属しています。後述のアクセス権を設定する際、グループ単位でアクセス権を指定することが可能です。
wget [オプション] URL
$ wget http://rat.cis.k.hosei.ac.jp/article/rat/linuxliteracy/2006/commands2/hoge.tar.gz
ダウンロードできたか確認しましょう。
$ ls hoge.tar.gz
~.tarという形式のファイルはファイルやディレクトリをまとめて、ひとつの.tarファイルにしたものです。
~.gzという形式のファイルは1つのファイルやディレクトリを圧縮したものです。
tar [オプション] ファイル名
$ tar -zxvf hoge.tar.gz foo.zip
lsコマンドで解凍ができたか確認します。
$ ls foo.zip hoge.tar.gz
unzip [オプション] ファイル名
$ unzip foo.zip Archive: foo.zip creating: foo/ creating: foo/access/ creating: foo/dest/ inflating: foo/road inflating: foo/long
lsコマンドで解凍ができたか確認します。
$ ls foo foo.zip hoge.tar.gz
find [ディレクトリ名/ファイル名] [expression]
ファイルタイプは、ディレクトリ:"d"、通常ファイル:"f"、など
$ find -name long ./foo/long
$ find foo -type d foo foo/access foo/dest
cat [オプション] ファイル名 [ファイル名...]
$ cat road 「道」 この道を行けば どうなるものか 危ぶむなかれ 危ぶめば道はなし 踏み出せば その一足が道となり その一足が道となる 迷わず行けよ 行けばわかるさ 一休宗純
$ cat -n road 1 2 3 「道」 4 5 この道を行けば 6 どうなるものか 7 8 危ぶむなかれ 9 危ぶめば道はなし 10 11 踏み出せば 12 その一足が道となり 13 その一足が道となる 14 15 迷わず行けよ 16 行けばわかるさ 17 18 一休宗純
less [オプション] ファイル名
$ 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"で戻ります。
tail [オプション] ファイル名
$ tail -n 7 long バグ -t オプションは troff ライクなプログラムがインストールされている場合の み有効である。 September 12, 1995 man(1)
$ tail -7 long バグ -t オプションは troff ライクなプログラムがインストールされている場合の み有効である。 September 12, 1995 man(1)
cp [オプション] コピー元 コピー先
$ cp road michi
コピーができたかどうか確認しましょう
$ ls access dest long michi road
cp [オプション] コピー元 コピー先
$ cp -r dest access
$ ls access dest
mv [オプション] 移動元 移動先
$ mv dest to
$ ls access long michi road to
rm ファイル名 [オプション]
$ rm michi
rm ディレクトリ名 [オプション]
$ rm to -rf
$ ls access long road
Linuxはディレクトリやファイル単位でアクセス権を細かく定めることができます。アクセス権がどのように設定されているかはls -lのコマンドで確認できます。
$ 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にクローズアップしてみましょう。
このA~Dについて説明します。
Aはこのファイル(またはディレクトリ)のアクセス権を表します。 Bはこのファイルの所有ユーザを表します。 Cはこのファイルの所有グループを表します。 Dはこのファイルの名前です。
今度はAのアクセス権にクローズアップします。
アクセス権はこの図の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"を指定する方法です。
$ chmod a-w access
確認にはls -lコマンドを使います
$ ls -l dr-xr-xr-x 2 foo foo 4096 5月 24 06:11 access
2、各ユーザ権限の"r"、"w"、"x"を3桁の2進数に置き換え、それをユーザごとに足し、3の8進数で表現し、全アクセス権を指定して変更する方法です。
所有ユーザ …2進数で、111=4+2+1=7 所有グループ…2進数で、101=4+0+1=5 他のユーザ …2進数で、100=4+0+0=4 この場合、モードは754となります
$ chmod 764 road
確認します
$ ls -l -rwxrw-r-- 1 foo foo 27 5月 24 06:12 road