プログラムブログ

PHP、Database、ネットワーク、サーバセキュリティ

Archive for 12 月, 2008

ACL

linuxシステムにおいては、通常はファイルのアクセス権限は、本人、グループ、その他で分類される。
しかし、その他ではあるが特定のユーザにだけ書き込みを認めたい場合などもっと柔軟な設定をできるのがACL。

ext2,ext3,ReiserFSでは/etc/fstabで acl を書き加える必要がある。

setfacl オプション  ファイル名
オプション:
-m ACLエントリ   エントリを設定する
-x  ACLエントリ   エントリを削除する

例. ユーザ名に対してrw権限を付与
setfacl -m u:ユーザ名:rw  ファイル名

設定の確認
getfacl ファイル名

No comments

chattrコマンド

ファイルの拡張属性を変更するコマンド。たとえばrmコマンドを実行してもファイルが削除されないようにすることが可能。

chattr [オプション] 操作+属性  ファイル名

オプション:
-R: 指定ディレクトリ以下を再帰的に変更

操作:
+:   属性追加
-:   属性削除
=:   属性指定

属性:
i:  変更不可(rootのみ設定可能)
d: dumpコマンドのバックアップ対象から除外

例.
[root@vmcent5 ]# ls -l a.txt
-rw-r–r– 1 root root 35 12月 29 00:28 a.txt

[root@vmcent5 ]# lsattr a.txt
————- a.txt
(何も拡張属性がセットされていない)

[root@vmcent5 ]# chattr +i a.txt

[root@vmcent5 ]# lsattr a.txt
—-i——– a.txt
(変更不可のiフラグが立っている)

[root@vmcent5 ]# rm a.txt
rm: remove write-protected 通常ファイル `a.txt’? y
rm: cannot remove `a.txt’: 許可されていない操作です
※rootでも削除できない

No comments

スティッキービット

誰でも書き込みできるが削除は所有者しかできないように設定するために存在するのがスティッキービット。
/tmp で利用。

[root@vmcent5 tmp]# ls -ld /tmp
drwxrwxrwt 19 root root 4096 12月 29 18:57 /tmp

最後が「t」になっている。

設定するときは chomod o+t /tmp もしくは chmod 1777 /tmp

No comments

ディスククォータ

ユーザやグループ単位でディスクの使用上限を設定するときに使用するのがquota。

1. /etc/fstab で該当するパーティションのマウントオプションにusrquotaを追加
例.  /dev/hda3    /home    ext2    defaults,usrquota 1   2

2. マウントオプションの変更を有効にするためいったんumountし再度mount
例.   #umount /home
#mount /home

3. クォータ情報を保存するファイルの作成
#cd /home
#touch aquota.user
#chmod 600 aquota.user

4. クォータ情報初期化(使用量をチェックしaquota.userに記録)
#quotacheck /home

5. クォータの有効化
#quotaon /home

6. 各ユーザごとの上限を設定
#edquota ユーザ名
ここでviが起動する。表示されるのは次の項目。ここで上限値を記入。
Filesystem                   blocks       soft       hard     inodes     soft     hard

※すでに設定しているユーザの値を流用したい場合は edquota -p 元ユーザ ユーザ名 でよい。

blocks: 使用済みブロック数
soft:     ソフトリミット値 (値を設定する) 。 上限を超えても書き込み可能だが、一定期間(grace)を超えると書き込みできなくなる。
hard:    ハードリミット値(値を設定する)。 この値に達すると即時書き込み不可能となる。
※soft、hardともに2回出てくるが、左側はBlock limits、右側はFile limits。

7. クォータの設定状況を確認
#repquota /home

(report quotaの略
-a: /etc/fstabの情報を見てクォータ設定されているすべてのファイルシステムの情報を表示

その2.  quota -uv ユーザ名
-v: 詳細情報の表示

No comments

sed

sedは Stream Editor の略。テキストファイルを編集する機能をもつ。

sed [オプション] コマンド [ファイル]
sed [オプション] -e コマンド1 [-e コマンド2 ...] [ファイル]
sed [オプション] -f スクリプト [ファイル]

コマンド:
d:   マッチした行を削除する
s:   正規表現に基づき置換する。gを使うとすべてのマッチ箇所を置換する。
y:   文字を変換する

オプション:
-e:  次の引数はコマンドと認識する
-f:  次の引数はスクリプトファイルと認識する

例. a.txtの1~10行目を削除した内容をb.txtに保存する
sed ‘1,10d’ a.txt > b.txt

例. a.txtの文字列「p」を「P」に置換した内容をb.txtに保存する
sed s/p/P/g a.txt > b.txt

例. a.txtの1~10行目に関して、文字列「p」を「P」に置換した内容をb.txtに保存する
sed ‘1,10s/p/P/g’ a.txt > b.txt

例. a.txtの文字列「p」を「P」に置き換えてb.txtに保存する。
sed y/p/P/ a.txt > b.txt
※置き換える前後で文字列の長さが一致している必要がある。

No comments

grep

ファイル中に検索文字列が存在するかどうかをチェックするコマンド。

grep [オプション] 検索パターン  [ファイル名]

例.  test.txt中に存在する「test」という文字列(大文字小文字どちらも)を検索する
-i: 大文字小文字を区別せず検索
grep -i test test.txt

例. named.confから$ではじまらない行を抽出
-v: パターンがマッチしない行を表示
grep -v ‘^#’ /etc/named.conf

No comments

プロセスの優先順位

プロセスの優先順位はnice値で決まる。
最も順位が高いのが-20、最も低いのが+19である。(デフォルトは0)

実行中プロセスのnice値確認方法
[root@vmcent5 ~]# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0 21349 21319  0  76   0 -  1496 wait   pts/4    00:00:00 su
4 S     0 21350 21349  1  75   0 -  1695 wait   pts/4    00:00:00 bash
4 R     0 21378 21350  0  77   0 -  1268 -      pts/4    00:00:00 ps

もしくはtop

コマンド実行時にnice値を指定したい場合
nice -n ナイス値 コマンド
nice -ナイス値 コマンド

例.
nice -n -5 du
nice –5 du  (一つ目のマイナスはオプションのマイナス、二つ目のマイナスは-5のマイナス)
nice -n 15 du
nice -15 du (+15に設定)

コマンド実行後にnice値を変更したい場合
renice ナイス値 [オプション] コマンド

オプション:
-p <PID>:  プロセスIDで指定(topやpsでわかる)
-u <ユーザ名>: ユーザ名指定

例. PID 21349のnice値を-4に変更
[root@vmcent5 ~]# renice -4 -P 21349
0: 古い優先度は 0、新たな優先度は -4 です
21349: 古い優先度は 0、新たな優先度は -4 です

例. ユーザtestのプロセスをnice値+15に設定
renice 15 -u test

※reniceでnice値を小さく(優先順位アップ)できるのはrootだけ。一般ユーザは優先順位を下げる変更しかできない。

No comments

ジョブの処理(フォアグランド、バックグラウンド)

フォアグラウンドで実行しているジョブのサスペンド
Ctrl + Z

サスペンド中のジョブの確認方法
[root@vmcent5 ~]# jobs
[1]+  Stopped                 tail -f /var/log/maillog
サスペンドしたジョブを再開する方法。
1. フォアグラウンドで実行
fg ジョブ番号(上の例では1)

2. バックグラウンドで実行
bg ジョブ番号(上の例では1)

[root@vmcent5 ~]# jobs
[1]+  Running                 tail -f /var/log/maillog &

★ログアウト後もプログラムを実行したいときはnohupコマンドを実行。

例.
nohup

No comments

odコマンド

ファイルの内容を8進数もしくは16進数で表示する。

参考:
[root@vmcent5 ~]# less a.txt
<?php

$i=”12″;
$k=intval($i);
?>

例1. 8進数で表示
[root@vmcent5 ~]# od a.txt
0000000 037474 064160 005160 022012 036551 030442 021062 005073
0000020 065444 064475 072156 060566 024154 064444 035451 037412
0000040 005076 000012
0000043

例2. 16進数表示
[root@vmcent5 ~]# od -tx a.txt
0000000 68703f3c 240a0a70 31223d69 0a3b2232
0000020 693d6b24 6176746e 6924286c 3f0a3b29
0000040 000a0a3e
0000043

例3. ASCII表示
[root@vmcent5 ~]# od -tc a.txt
0000000   <   ?   p   h   p  \n  \n   $   i   =   “   1   2   “   ;  \n
0000020   $   k   =   i   n   t   v   a   l   (   $   i   )   ;  \n   ?
0000040   >  \n  \n
0000043

No comments

nlコマンド

行番号をつけてファイルを出力するコマンド

例1. nl a.txt
[root@vmcent5 ]# nl a.txt
1  <?php

2  $i=”12″;
3  $k=intval($i);
4  ?>

例2. すべての行に番号をつける(これを指定しないと空白行に番号がつかない)
[root@vmcent5 ]# nl -ba a.txt
1  <?php
2
3  $i=”12″;
4  $k=intval($i);
5  ?>
6

例3. 番号をひだりよせする
[root@vmcent5 ]# nl -n ln test.php
1       <?php

2       $i=”12″;
3       $k=intval($i);
4       ?>

例4. 番号を右寄せする
[root@vmcent5 ]# nl -n rn test.php
1  <?php

2  $i=”12″;
3  $k=intval($i);
4  ?>

例5. 0つきの番号で表示する
[root@vmcent5 ]# nl -n rz test.php
000001  <?php

000002  $i=”12″;
000003  $k=intval($i);
000004  ?>

No comments

次ページへ »