タグ: コマンド

historyの履歴数

historyはどのくらいの履歴を管理しているんだろう?

vi /etc/profile

の39行目あたりに

HISTSIZE=1000

とあるので、デフォルトが1000行ということみたい。
忘れそうな出来事は忘れたころにやってくるので3000ぐらいまで増やしておくことにする。

logrotate を hourly でまわす

なんでこんな事しなきゃいけないかというと、MySQLでクエリログをちょっと長時間で取る必要があったから。
1時間で100M越えるんだもんなー

と、愚痴ってもしょうがないのでサクサク進める。
やってることは簡単。「/etc/cron/daily/logrotate」を「/etc/cron/hourly/logrotate」にコピーする。
それだけ。

cp /etc/cron.daily/logrotate /etc/cron.hourly/logrotate

以上。

ユーザとグループの確認

ユーザリストを確認したい時は

/etc/passwd

でリストが出るのでこれで確認する。
ユーザが所属しているグループは

id [ユーザ名]

で出てくる。

id

だけ打つと自分の所属しているグループが確認できる。

ユーザの追加は

adduser [ユーザ名]

で。
これはMySQLやsambaのユーザ追加とは別なので注意。

userdel [ユーザ名]

だとユーザ削除。

iptables を眺める

iptablesを全くわかっていないので、駄文的に書いてみる。

iptablesのマニュアルはここにあるのでよく読む。

現状を把握したい時は

iptables -L

で状況を確認できる。
とりあえず、デフォルトはこんな感じ。

[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere            icmp any
ACCEPT     esp  --  anywhere             anywhere
ACCEPT     ah   --  anywhere             anywhere
ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns
ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

簡単にオプションの意味を書き出してみる。
[ -A ] → [ INPUT ][ FORWARD ][ OUTPUT ]の条件として付け加えます(append)。
[ -m ] → モジュールを呼び出します(module)。
[ –state ] → コンマで区切られた接続状態のリストを指定します。
[ -m ] → モジュールを呼び出します(module)。
[ -p ] → プロトコルを指定します。
[ –dport ] → 宛先のポート番号を指定します。
[ -j ] → 今までの条件にマッチしたパケットをどうするか指定します。

上記を踏まえると、
[ -A INPUT ] → INPUTに付け加えます。
[ -m state ] → stateモジュールを呼び出します。
[ –state NEW ] → 接続状態はNEWで。
[ -m tcp ] → tcpモジュールを呼び出します。
[ -p tcp ] → プロトコルはTCPで。
[ –dport 80 ] → 80番ポート宛で。
[ -j ACCEPT ] → 許可します。

ということで、

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

は、
「接続状態はNEW」で「プロトコルはTCP」で「80番ポート宛」なパケットが来たら、
そのパケットは「INPUTの条件」として「許可」する。
という条件を付け加える。
なのかな?

[ -m tcp ]の扱いは何なんだ?ということでググると
http://search.luky.org/linux-users.a/msg03917.html
ということで、[ -p tcp ]を書くなら一緒につけておこうよ的な感覚らしい。

最悪、訳が分からなくなったら

iptables -F

で全てをリセットできるので、初めからやり直せる。

とりあえずは

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

で、httpとsshが通れば文句言わないことにする。

 

自宅内のみか何かで要らないなーと思った時は、

chkconfig --list iptables
iptables       	0:off	1:off	2:on	3:on	4:on	5:on	6:off

なので

chkconfig iptables off

で無効に。

chkconfig --list iptables
iptables       	0:off	1:off	2:off	3:off	4:off	5:off	6:off

を確認しておく。

sambaの共有ディスクを自動マウント

samba-clientがインストールされていなかったら

yum install samba-client

で事前にインストールする。
自分が誰かに共有ディスクを配信するわけではないのでclientだけでOK。

vi /etc/fstab

で、以下のようなカンジで追記する。

# Drive-D
//192.168.1.1/media/D /mnt/D/ smbfs username=hoehoe,password=moemoe,defaults 0 0

変更・保存したら

mount -a

とやると、fstabに書いてあることを再度実行してくれるので、マウントできるか確認して終了。

NTPサーバと時刻合わせ

ntpdate IPアドレス

これだけ。
これをrc.localかcrontabにでも書いておけば定期的にやってくれる、はず。

これもめんどくさいということであれば、ntpd を使ってやる。

vi /etc/ntp.conf

で、22~24行目に

server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org

という記述があるので、ココを自分の好きなntpサーバに書き換える。
例えば、

server 192.168.100.109

のように。

書き換えたら保存して

/etc/init.d/ntpd start

で実行する。
ntpd はデフォルトでは自動起動しないようになっているので

chkconfig ntpd on

で再起動しても自動的に起動するように設定しておく。

kdumpを無効にしたい

vmware playerにCentOSを入れようとすると半自動化でインストールしてくれる。
途中のステップがすべて省かれるのでありがたいんだけど、途中で無効にしたいkdumpが有効で自動設定されてしまう。
で、割り当てているメモリが少ないのでkdumpは起動に失敗する。
なので無効にしたい。

chkconfig kdump off

で無効に。

chkconfig --list | grep kdump
kdump          	0:off	1:off	2:off	3:off	4:off	5:off	6:off

無効になっていることを確認して終了。

renice

renice [-n]  [-p]  [  ...]

Priorityの範囲は -20 から 19 まで。
大体のものが 0 で動いているようなのでそれより大きい数値を指定すれば、プライオリティが下がる、と。

yumのproxy越え

[ yum ] も社内からネットに接続するにはプロキシの設定が必要。

vi /etc/yum.conf

で以下の追記をしてみる。

proxy=http://IPアドレス:ポート番号/

追記したら

/etc/init.d/yum-updatesd restart

で再起動してから再度 [ yum update ] を試みる。
ちなみに追記が

proxy=http://katzplus.com/xxxxx.pac

では失敗しました。

公開鍵秘密鍵の生成

sshでログインするときにパスワード入力が面倒。
もしくはscpとかやるときに自動でログインしたい。
というときのために。

ssh がインストールされていなかったらクライアント側サーバ側ともに事前にインストールしておく。

yum install openssh-clients

クライアント側(あやつる側)(192.168.1.10)で

ssh-keygen -t rsa

これで鍵生成。
作るときに

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

とか聞かれる気がする。
passphrase 入れると毎回聞かれて自動でログインって言う目的に合致しないので、
今回入れない。
rootユーザでログインしていれば[ /root/.ssh/ ]配下に id_rsa と id_rsa.pub が出来るはず。
id_rsa.pub が公開鍵なので色々なところに使いまわす。
鍵を作ったクライアントがわかるように

mv id_rsa.pub id_rsa.pub.192.168.1.10

で変更しておく。

そのまま

scp id_rsa.pub.192.168.1.10 root@192.168.1.11:/root/.ssh/id_rsa.pub.192.168.1.10

で id_rsa.pub をサーバ側(あやつられる側)にコピーして。

サーバ側(192.168.1.11)にコピーされたことが確認できたらサーバ側で

cat id_rsa.pub.192.168.1.10 >> authorized_keys

とかやる。
authorized_keys ファイルが存在するかどうかは気にしない。追記だから。
むしろすでにあるならcpとかで下手に上書きしないように気をつける。

で、
authorized_keys が作成された場合はパーミッションが644あたりになっているので、

chmod 600 authorized_keys

でrootさん以外触れないようにしておく。

したらクライアント側(192.168.1.10)から

ssh -i /root/.ssh/id_rsa root@192.168.1.11

みたいにしてサーバ側にログインできるか確認する。
『-i』が秘密鍵を使用するよオプション。-iの後ろでファイル名を指定する。
ログインできたら後はscpなりなんなり。

クライアントはWindowsだ!
というわがままさんの場合はサーバ側で鍵生成、
出来たid_rsa.pubをそのままauthorized_keysにコピー、
id_rsaをWindowsのクライアントに持っていってログインする方法でも構わないです。
要はid_rsaとid_rsa.pubが対になっているということだけ。

イメージとしては

  1. 自分(クライアント)が鉄人(サーバ)のコントローラ(id_rsa)とその受信機(id_rsa.pub)を作る。
  2. 受信機(id_rsa.pub)を鉄人(サーバ)に埋め込む。
  3. コントローラ(id_rsa)を使って「うごけてつじーん!」

ってカンジ。

scpをパスワードなしで実行

まずは公開鍵秘密鍵の生成に書いてあるとおりに秘密鍵と公開鍵を設定しておく。

shファイルに以下の様に記載する。
scp -qpi /秘密鍵ディレクトリ/秘密鍵ファイル名 /コピー元ディレクトリ名/コピー元ファイル名 ユーザー名@公開鍵のあるサーバIPアドレス:/コピー先ディレクトリ名/コピー先ファイル名

scp -Cqpi /root/.ssh/id_rsa /etc/squid/shield.txt root@192.168.1.11:/etc/squid

「-C」は圧縮して送信
「-q」はquietで実行
「-p」はタイムスタンプを変更しないでコピー
「-i」は秘密鍵指定

上の例は操作側端末にあるshield.txtを先方に送るけど、先方のモノを操作側端末に持ってきたい場合は逆に書けばいい。

scp -Cqpri /root/.ssh/id_rsa root@192.168.1.11:/etc/squid/shield.txt /etc/squid/

「-r」は再帰的にディレクトリのコピーするとき

shファイルを自分のユーザーディレクトリ直下とかに保存したら
「chmod +x hoehoe.sh」とかで実行属性をつける。

crontab -eでシェルを実行する時間に動作するように指定する。
これでイイかな?

現在のプロセス数を調べる

ps aux | grep httpd | grep -v "\(root\|grep\)" | wc -l

1.ps aux でプロセスリストを表示する。
2.grep httpd でhttpdが含まれている行に限定する。
3.grep -v "\(root\|grep\)" で、rootとgrepが含まれていない行に限定する。
4.wc -l で、行数を数えて表示する。
という4段がまえらしい。