ファイル・ディレクトリのアクセス権限

 パーミッション
アクセス権限の事
 所有者・グループ
所有者 =作成したアカウント
グループ=作成したアカウントのプライマリグループ
 パーミッションの記号
記号 数値 対応する権限
r 4 読み込み可能
w 2 書き込み可能
x 1 実行可能
- 0 権限なし
 アクセス権の変更 - chmod
シンボルモードと数値モードの2つのモードがある。
シンボルモードではアクセス権の追加、削除、指定ができる。 数値モードは指定したアクセス権へ固定する事しかできない。
グループに実行権限を与える

$ ls -l

-rw-rw-r-- 1 vagrant vagrant 0 3月 21 23:42 2017 test.txt

$ chmod g+x test.txt

$ ls -l

-rw-rwxr-- 1 vagrant vagrant 0 3月 21 23:42 2017 test.txt

SUID(Set User ID) - 特殊なアクセス権
通常、実行ファイルを実行すると、そのファイルを実行したユーザーの権限で実行されるが、
SUIDが設定されたファイルでは、その実行ファイルの所有者のアカウント権限で実行される。
※セキュリティ上の理由でスクリプトにsetuidは使用できない。
パーミッションの所有者の実行権が「s」となっている。passwdコマンドはroot権限で実行される。

$ ls -l /usr/bin/passwd

-rwsr-xr-x. 1 root root 30768 2月 22 20:48 2012 /usr/bin/passwd

 スティッキービット(Sticky Bit) - 特殊なアクセス権
スティッキービットが設定されたディレクトリでは、すべてのユーザーが
ファイル・ディレクトリを書き込めるが、所有者だけ(rootは除く)しか削除できなくる。
スティッキービットの確認。パーミッションのその他の実行権が「t」となっている。

$ ls -ld /tmp

drwxrwxrwt. 3 root root 4096 3月 25 14:11 2017 /tmp

スティッキービットを設定

# mkdir /sticky

# chmod 1777 /sticky

# logout

$ touch /sticky/test.txt

$ ls -l /sticky

-rw-rw-r-- 1 vagrant vagrant 0 3月 25 19:27 2017 test.txt

 デフォルトのアクセス権 - umask
新規にファイルや、ディレクトリを作成したときのアクセス権を設定。
/etc/bashrcの中にumaskの値をユーザーに割り当てる為の記述がある。
ファイルと、ディレクトリでは計算の仕方が異る。
umask値 ディレクトリのデフォルトアクセス権 ファイルのデフォルトアクセス権
0 rwx rw-
1 rw- rw-
2 r-x r--
現在のumask値を確認

$ umask

0002

$ umask -S シンボルモードで確認

u=rwx,g=rwx,o=rx

$ touch test.txt

$ mkdir test

$ ls -l

drwxrwxr-x 2 vagrant vagrant 4096 3月 25 19:53 2017 test

-rw-rw-r-- 1 vagrant vagrant 0 3月 25 19:53 2017 test.txt

ディスク管理

パーティション - fdisk
ハードディスクは、内部の領域を論理的に複数の領域(パーティション)に区切る事ができ、
それぞれをひとつのハードディスクとして利用する事ができる。

パーティションの確認。

IDEディスクであれば/dev/hd[a-h]という名前のデバイス名、

SCSIディスクや、SATAディスクであれば/dev/sd[a-p]という名前になる。

# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda1 477M 57M 396M 13% /boot ディスク1のデバイス名は、/dev/sda

 

# fdisk -l /dev/sda fdisk -l にデバイス名をわたす

ディスク /dev/sda: 10.5 GB, 10485760000 バイト

 

デバイス ブート 始点 終点 ブロック Id システム

/dev/sda1 * 1 64 512000 83 Linux パーティション1のデバイス名が/dev/sda1

ファイルシステム - mkfs
ファイルシステムにはいくつか種類(ext2,ext3,ext4)があり、使用しているファイルシステムによって、
1ファイルの最大サイズ、ファイル名の文字数、圧縮などさまざまな機能の違いがある。ハードディスク
を利用する際は、最低限なんらかのファイルシステムをパーティション上に作成する必要がある。
ファイルシステムの確認

$ df -T

Filesystem Type 1K-blocks Used Available Use% Mounted on

/dev/sda1 ext4 487652 57550 404502 13% /boot

 

ext4の特徴

ボリュームサイズは最大1EB。ファイルサイズは最大16TB

認識できる日付範囲が1901年12月14日から2514年4月25日

タイムスタンプがナノ秒をサポート。ext3よりレスポンスが良い

マウント - mount
接続した記憶装置を、ツリー状のディレクトリ構造のどこかのディレクトリとして登録する事をいう。
ハードディスク、DVDドライブ等を利用するためにも/ディレクトリ配下のどこかへ必ずマウントする必要がある。
ext4でマウントされているファイルシステムのリストを表示

$ mount -t ext4

/dev/mapper/VolGroup-lv_root on / type ext4 (rw)

/dev/sda1 on /boot type ext4 (rw)

パーティションやデバイスをどのようにファイルシステムにマウントするかを記述した設定ファイル

$ cat /etc/fstab

/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1

UUID=7c4fdf62-70a0-4e4c-8e2f-816d1871c8f9 /boot ext4 defaults 1 2

/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0

UUID
機器を管理・識別ためのユニークID。
UUIDの確認

$ sudo blkid

/dev/sda1: UUID="7c4fdf62-70a0-4e4c-8e2f-816d1871c8f9" TYPE="ext4"

/dev/sda2: UUID="hTIxaE-XcZT-GoSQ-sIy7-jD2T-vHZE-MvgwTM" TYPE="LVM2_member"

/dev/mapper/VolGroup-lv_root: UUID="65f03bc0-09ae-431a-bf08-189ed7e49f45" TYPE="ext4"

/dev/mapper/VolGroup-lv_swap: UUID="02d0154f-6841-49f0-8096-54cfd5668052" TYPE="swap"

アンマウント - umount
マウント(mount)されたハードディスクを解除する
アンマウント対象のファイルシステム上のファイルがオープンされていて
umountできない時の対処 - いまファイルを開いている人を確認する手順

ファイルを開いておく

$ vi test.txt

 

1.ファイルシステムを確認

$ df -h

Filesystem            Size Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root

                      8.1G 1.2G 6.5G   16% /

tmpfs                 309M    0 309M    0% /dev/shm

/dev/sda1             477M  57M 396M   13% /boot

 

2. デバイスファイルを使用しているユーザーやプログラムを調べる

$ fuser -vm /dev/mapper/VolGroup-lv_root

                     USER     PID ACCESS COMMAND

/dev/mapper/VolGroup-lv_root:

                     vagrant 1345 .rce. bash

                     vagrant 1443 .rce. bash

                     vagrant 1500 Frce. vi vagrantユーザがviでファイルをオープンしている

 

3 PIDからそのプロセスがどのファイルを使っているか調べる事ができる

$ lsof -p 1500

COMMAND PID     USER  FD TYPE DEVICE SIZE/OFF   NODE NAME

vi      1500 vagrant cwd  DIR  253,0     4096 134108 /home/vagrant

vi      1500 vagrant rtd  DIR  253,0     4096      2 /

vi      1500 vagrant txt  REG  253,0   907248 130496 /bin/vi

vi      1500 vagrant mem  REG  253,0    65928 130395 /lib64/libnss_files-2.12.so

vi      1500 vagrant mem  REG  253,0 99158576 267401 /usr/lib/locale/locale-archive

vi      1500 vagrant mem  REG  253,0    18712 130426 /lib64/libattr.so.1.1.0

vi      1500 vagrant mem  REG  253,0    19536 130385 /lib64/libdl-2.12.so

vi      1500 vagrant mem  REG  253,0  1920936 130379 /lib64/libc-2.12.so

vi      1500 vagrant mem  REG  253,0    31280 130442 /lib64/libacl.so.1.1.0

vi      1500 vagrant mem  REG  253,0   132408 130422 /lib64/libtinfo.so.5.7

vi      1500 vagrant mem  REG  253,0   122040 130448 /lib64/libselinux.so.1

vi      1500 vagrant mem  REG  253,0   154664 134118 /lib64/ld-2.12.so

vi      1500 vagrant  0u  CHR  136,1      0t0      4 /dev/pts/1

vi      1500 vagrant  1u  CHR  136,1      0t0      4 /dev/pts/1

vi      1500 vagrant  2u  CHR  136,1      0t0      4 /dev/pts/1

vi      1500 vagrant  4u  REG  253,0    12288 130412 /home/vagrant/.test.txt.swp オープンしているファイル

スワップ領域
メイン・メモリー(実メモリー)を使い切りそうになり,空き容量が不足した場合、
実メモリーから使用中の内容の一部を取り出して退避するためのハード・ディスク上の領域

実メモリーと比べると、ハード・ディスクへのアクセス速度は格段に遅くなる。また、
スワップアウトやスワップインが頻繁に発生すると、CPUの処理能力の多くがそれらの
処理に割り当てられてしまいシステム全般の処理性能は大幅に低下る。

スワップ領域は実メモリーの容量不足による実行中プロセスの強制終了を発生させないため、
あるいはシステムを停止させないための“保険”とみなす。

実メモリーの容量が足りなければ、スワップ領域を増やすのではなく、実メモリーの搭載量を増やす
スワップ領域の容量確認

# free

             total    used        free    shared    buffers    cached

Mem:        630888  308056      322832       176      16408     225700

-/+ buffers/cache:   65948      564940

Swap:      1023996(*1)  0(*2) 1023996    *1:スワップ領域の容量(k) *2:使用容量

スワップ領域の追加

1. スワップ用ファイルを作成する

# dd if=/dev/zero of=/swapfile bs=1M count=50

中身が0で埋め尽くされた50Mbyteのswapfileという名前のファイルが作成される

 

2. ファイルをスワップ領域とする

# mkswap /swapfile

 

3. スワップ領域の有効化

# swapon /swapfile

 

4. スワップ領域を確認

# cat /proc/swaps

Filename               Type       Size     Used   Priority

/dev/dm-1              partition  1023996  0      -1

/swapfile              file       51196    0      -2

スワップ領域の容量が50Mbyte増加された。元サイズ 1023996 + 追加 51196 = 1075192

 

# free

             total    used        free    shared    buffers    cached

Mem:        630888  308056      322832       176      16408     225700

-/+ buffers/cache:   65948      564940

Swap:      1075192       0     1075192    

 

5. スワップ領域の無効化

# swapoff /swapfile


ファイル管理

iノード(inode)
ファイルが作成される際、データ領域にファイルの実データが記録されるとともに、iノード領域に
ファイル情報(作成者、グループ、作成日時、サイズ等々の属性的な情報)が書き込まれる

ファイルやディレクトリが作成される際はiノード番号が割り振られる。iノード番号には上限がある
ディスク容量に余裕があっても、これを超えてファイルを作成することは出来ない
iノード番号の確認

$ ls -li anaconda-ks.cfg

134112 -rw-------. 1 root root 1486 11月 2 23:52 2015 anaconda-ks.cfg

iノード領域の使用状況の確認

# df -i

Filesystem           Inodes IUsed   IFree IUse% Mounted on  Inodes列がiノード番号の上限

/dev/mapper/VolGroup-lv_root

                     544576  53641  490935   10% /

tmpfs                 78861      1   78860    1% /dev/shm

/dev/sda1            128016     44  127972    1% /boot

ハードリンク
「ファイル」の実態というのは、inodeと実データの部分の事だけで、「ファイル名」はディレクトリが管理している。
「inodeとファイル名とのつながり」の事をハードリンクといい、inodeに対してハードリンクは複数つくる事ができる。
ハードリンクを作成

$ ln test.txt test_ln.txt

 

$ ls -i1 test*.txt   ファイルの実態を指すinode番号は同じ

142077  test.txt

142077  test_ln.txt

 

$ echo "test" > test.txt

$ cat test_ln.txt  inode番号(実態)が同じなので、どのファイル名で操作してもOK

test

 

$ rm test.txt  リンク元ファイルを削除しても

$ ls -i        実態は消えない

142077 test_ln.txt

シンボリックリンク
シンボリックリンクとは、Windowsでいうところのショートカットのようなもの
シンボリックリンクの作成

$ ln -s test.txt symlink.txt   sオプションを付ける

$ ls -l

lrwxrwxrwx 1 vagrant vagrant 8 4月 9 15:06 2017 symlink.txt -> test.txt

-rw-rw-r-- 1 vagrant vagrant 5 4月 9 14:43 2017 test.txt

 

シンボリックリンクのコピー

$ cp -d symlink.txt symlink_cp.txt   dオプションを付ける

$ ls -l

lrwxrwxrwx 1 vagrant vagrant 8 4月 9 15:06 2017 symlink.txt -> test.txt

lrwxrwxrwx 1 vagrant vagrant 8 4月 9 15:09 2017 symlink_cp.txt -> test.txt

-rw-rw-r-- 1 vagrant vagrant 5 4月 9 14:43 2017 test.txt

基本こちらを参考にさせて頂きました

参考 Linux 基礎知識

 

 

スワップ領域

参考 Linuxキーワード - スワップ領域:ITpro