linux

linuxはオープンソースのOSです。

各ディレクトリの役割

/bin基本コマンド
/boot起動に必要なファイル
/devデバイスファイル
/etc設定ファイル
/homeユーザーのホームディレクトリ
/lib共有ライブラリ
/mnt一時的なマウントポイント
/opt追加アプリケーション
/procプロセス情報
/rootroot用ホームディレクトリ
/sbinシステム管理用コマンド
/tmp一時ファイル
/usr各種プログラム
/var変更させるデータ
#ls /
bin    dev   initrd.img  media  proc  selinux  tmp  vmlinuz
boot   etc   lib         mnt    root  srv      usr
cdrom  home  lost+found  opt    sbin  sys      var

ファイアウォール ipatables

まず初めにセキュリティの設定

sshやhttp,webminなどのポートを許可し、その他の接続を破棄する。

# vi iptables
# iptables -P INPUT ACCEPT
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT
# iptables -F
# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
# iptables -A INPUT -p tcp --dport 25 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# iptables -A INPUT -p tcp --dport 10000 -j ACCEPT
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -P INPUT DROP
# /etc/init.d/iptables save
Saving firewall rules to /etc/sysconfig/iptables:          [  OK  ]
# service iptables restart
Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: nat mangle filter         [  OK  ]
Unloading iptables modules:                                [  OK  ]
Applying iptables firewall rules:                          [  OK  ]
#

ログファイルの管理

/var/log/httpd/access_log Apacheのアクセスログ
/var/log/yum.log yumパッケージのログ
/var/log/message システムメッセージのログ

マウント

外付けストレージ(CD-ROMやUSB機器など)を認識

$ mount iso0960 /dev/dba /media/
$ mount vfat /dev/dbc /media/HD-XXXX

認識したディレクトリの中身を一時ディレクトリにすべてコピー
$ cp /media/* /temp/

ネットワーク設定

networkの設定ファイル
$ vi /etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=www.exsample.com
GATEWAY=192.168.0.1


$ vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
NETMASK=255.255.255.0
USERCTL=no
PEERDNS=no
GATEWAY=192.168.0.1
TYPE=Ethernet
IPADDR=192.168.11.11

$ vi /etc/resolv.conf

nameserver 192.168.11.11



$ service network restart

yum

yum-fastestmirror

自動的に一番早いサーバからパッケージを取得する

yum install yum-fastestmirror
yum update

Telnet

リモート操作

$ rpm -q telnet-server #yum -y install telnet-server

SSH

暗号通信でのテキストベースリモート操作

SSH

HTTPD

apache WEBサーバ

apache + mod_perl で perlスクリプトを高速化

# yum -y install mod_perl
# vi /etc/httpd/conf/httpd.conf


 
  
      SetHandler perl-script
      PerlHandler ModPerl::Registry
      PerlSendHeader On
  
 


cron

時間帯を指定してプログラムを自動実行させる
vi /var/crontab
記述        実行間隔
分 時 日 月 曜日 ユーザ コマンド
59 23 * * * 毎日23:59
*/5 * * * * 5分おき
*/10 1 * * * 1:00~1:59の間に10分おき
0 2-9/3 * * * 2:00 5:00 8:00
0 1 * * 1 毎週月曜1:00
30 2 1,15 * * 1日と15日の2:30

例:
05 9 * * Sun root /home/www/get_rss.sh 毎週日曜9:05にシェルスクリプトを実行 

FTP

vsftpd

Very Secure File Transfer Protcol Daemon

ファイル転送

rpm -q vsftpd
yum -y install vsftpd

NTP

Network Time Protcol

サーバの時刻をネットワークを介して調整するプロトコル。

yum -y install ntp
chkconfig ntp on

DHCP

Dynamic Host configuration Protcol

クライアントPCにIPアドレスを自動的に割り当てるプロトコル。

yum -y install dhcp
chkconfig dhcpd on

LDAP

Lightweight Directory Access Protcol

ユーザ認証管理を行うプロトコル。

LDAP

NFS

マウントしたシステムファイルをローカルのように扱い、共有ディレクトリ化する

パッケージの確認
$ rpm -q nfs-utils
nfs-utils-x.xxxxx
NFSの設定ファイル
$ vi /etc/exports

共有するディレクトリ 許可するIPアドレス(読み書き許可のモード)
/home    192.168.0.2(rw)

ro ...読み込み専用
rw ...読み込み・書き込み両用

ファイアウォールでNFSのポートを許可

NFSアクセスを許可するためにファイアウォールの設定を行う必要がある。 お互いのIPアドレスの発信元を指定して許可すること。

NFSサービスの起動と自動起動

$ service nfs start

$ chkconfig --level 345 nfs on

NFSクライアントの設定

      NFSを起動してイルサーバのIPアドレス:ディレクトリ マウントする対象ディレクトリ
mount 192.168.0.1:/home /home

Samba

LinuxをWindows互換のファイル共有をできるようにして、ファイルサーバにする。

sambaのインストール

yum -y install samba

パッケージの確認

$ rpm -q samba
samba-common-x.xxxx
samba-x.xxxx
samba-client-x.xxxx
system-config-samba-x.xxxx
Sambaの設定ファイル
$ vi /etc/samba/smb.conf

Sambaの設定ファイル
$ vi /etc/samba/smb.conf


# 共有化するディレクトリを指定
path = /public
# アクセスできるIPアドレスの指定
hosts allow = 192.168.3.
# 書き込み可能に
witable = yes
# 

encrypt passwprds = yes
サンバ Sambaサービスの起動と自動起動
$ service smb start

$ chkconfig --level 345 smb on

WebDAV

webコンテンツの編集やリビジョン管理を行う機能

Webmin

WINDOWSからGUIでLinux操作

WEBMINはブラウザからLinuxのシステム設定管理を行うことが出来るツールだ。

http://www.webmin.com/
# cd /usr/local/rpm
# rpm -ivh webmin-x.xxxx-noarch.rpm
http://exsample.com:10000/にブラウザでアクセス。

DNS BIND

BINDのインストール

yum -y install named

BINDの確認

yum search named

yum update bind bind-chroot bind-

設定ファイルのコピー

ワイルドカードを使ってサンプル設定ファイルを一括コピーする。

# cd /usr/share/doc/bind-9.3.4/sample/etc/
# cp named.* /etc
# cd /usr/share/doc/bind-9.3.4/sample/var/named/
# cp local* named.* /var/named/

設定ファイルの実行権限を変更。

# cd chown root.named /etc/named.* /var/named/named.* /var/named/local*
# cd chmod 640 /etc/named.* /var/named/named.* /var/named/local*
# restorecon /etc/named.*

設定ファイルを編集。



BIND起動

# service named start
named を起動中:                                            [  OK  ]

named.conf

//内向きの設定
view "internal" {
.
.
.
zone "exsample.com.internal.zone"{
}
//外向きの設定
view "external" {
.
.
.
zone "exsample.com.external.zone"{
}

}

ゾーンファイルの設定

ドメインにIPアドレスを指定する
$ vi exsample.com.zone

www        IN    A        192.168.0.1
smtp       IN    A        192.168.0.2

web        IN    CNAME    www

namedの起動と自動起動
$ service named start
$ shkconfig --level 345 named on
動作確認
$ host exsample.com

詳細表示
$ host -a exsample.com


$ nslookup exsample.com

プロキシサーバ

yum -y install squid

CYGWIN

WINDOWS上でLinuxコマンドを使うことができるソフトです。

Xen

仮想化

Linux上でWindowsを起動など、異なるOSをゲストOSとして起動させる。

必要なもの

IntelVertualTechnologyに対応しているBIOSマザーボード

512MB以上のメモリ

http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads.html

xen-xxxxxxx.bin.tar

xen-xxx-install-xx.tar.gz

#tar zxvf xen-xxxx-install.tar.gz
cd xen-xxxx-install
sh ./install.sh
depmod -a xxxxx-xen

対話式LINUXコマンド TCL

ただ命令を送信するだけでなく、パスワード入力の返信が帰ってくる対話式のコマンドもスクリプトから実行することが出来る
例:

ティンクルファイル実行
./test.tcl testfile testuser testpass



#!/usr/bin/expect -f

spawn htpasswd [lindex $argv 0] [lindex $argv 1] 命令文を引数付きで実行する
expect "New password:" コマンドから帰ってくる言葉に一致したら…
send "[lindex $argv 2]" 再び引数を与えて送信する
expect "Re-type new password:"
send "[lindex $argv 2]"
expect eof

VMware Player - 仮想マシンを実行する

vmware http://www.vmware.com/jp/products/player/ WINDOWS上でさらに別のOS(Linuxなど)を立ち上げることができる。 linux fedora

自宅サーバの公開

公開用のドメインを取得

https://www.dyndns.com/

必要事項を記入して登録するとメールが送られるので48時間以内にメールに書かれているURLにアクセスする。(このメールは迷惑メールに飛ぶことがあるので注意)

dyndns

ログイン後の画面

dyndns

ドメイン登録画面

dyndns

エラーと対処法

./configure すると、以下のようなエラーが出る

./configure
configure: error: no acceptable cc found in $PATH

gccか開発ツールがないので、コンパイラできない。gccパッケージをインストールすること。

yum -y install gcc*
yum -y groupinstall "Development Tools"

FastCGI

cgi高速化

http://www.fastcgi.com/
wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
tar zxvf fcgi-2.4.0.tar.gz
cd fcgi-2.4.0
./configure
make
make install
yum install httpd-devel
# yum -y install gcc*
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
 * base: centosa3.centos.org
 * updates: centosv.centos.org
 * addons: centosa3.centos.org
 * extras: centosk2.centos.org
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package gcc-gfortran.i386 0:4.1.2-42.el5 set to be updated
--> Processing Dependency: libgfortran = 4.1.2-42.el5 for package: gcc-gfortran
--> Processing Dependency: libgfortran.so.1 for package: gcc-gfortran
---> Package gcc-gnat.i386 0:4.1.2-42.el5 set to be updated
--> Processing Dependency: libgnat = 4.1.2-42.el5 for package: gcc-gnat
--> Processing Dependency: libgnat-4.1.so for package: gcc-gnat
--> Processing Dependency: libgnarl-4.1.so for package: gcc-gnat
---> Package gcc-objc.i386 0:4.1.2-42.el5 set to be updated
--> Processing Dependency: libobjc.so.1 for package: gcc-objc
--> Processing Dependency: libobjc = 4.1.2-42.el5 for package: gcc-objc
---> Package gcc-objc++.i386 0:4.1.2-42.el5 set to be updated
---> Package gcc.i386 0:4.1.2-42.el5 set to be updated
--> Processing Dependency: libgomp.so.1 for package: gcc
--> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc
--> Processing Dependency: libgomp = 4.1.2-42.el5 for package: gcc
---> Package gcc-c++.i386 0:4.1.2-42.el5 set to be updated
--> Processing Dependency: libstdc++-devel = 4.1.2-42.el5 for package: gcc-c++
---> Package gcc-java.i386 0:4.1.2-42.el5 set to be updated
--> Processing Dependency: libgcj-devel = 4.1.2-42.el5 for package: gcc-java
--> Running transaction check
---> Package libobjc.i386 0:4.1.2-42.el5 set to be updated
---> Package libgnat.i386 0:4.1.2-42.el5 set to be updated
---> Package libgcj-devel.i386 0:4.1.2-42.el5 set to be updated
---> Package glibc-devel.i386 0:2.5-24.el5_2.2 set to be updated
--> Processing Dependency: glibc-headers = 2.5-24.el5_2.2 for package: glibc-devel
--> Processing Dependency: glibc-headers for package: glibc-devel
--> Processing Dependency: glibc = 2.5-24.el5_2.2 for package: glibc-devel
---> Package libstdc++-devel.i386 0:4.1.2-42.el5 set to be updated
---> Package libgfortran.i386 0:4.1.2-42.el5 set to be updated
---> Package libgomp.i386 0:4.1.2-42.el5 set to be updated
--> Running transaction check
---> Package glibc-headers.i386 0:2.5-24.el5_2.2 set to be updated
--> Processing Dependency: kernel-headers for package: glibc-headers
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers
---> Package glibc.i686 0:2.5-24.el5_2.2 set to be updated
--> Processing Dependency: glibc-common = 2.5-24.el5_2.2 for package: glibc
--> Running transaction check
---> Package kernel-headers.i386 0:2.6.18-92.1.22.el5 set to be updated
---> Package glibc-common.i386 0:2.5-24.el5_2.2 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 gcc-gfortran            i386       4.1.2-42.el5     base              3.1 M
 gcc-gnat                i386       4.1.2-42.el5     base               11 M
 gcc-java                i386       4.1.2-42.el5     base              2.9 M
 gcc-objc++              i386       4.1.2-42.el5     base              2.8 M
Updating:
 glibc                   i686       2.5-24.el5_2.2   updates           5.2 M
 glibc-common            i386       2.5-24.el5_2.2   updates            16 M
Installing for dependencies:
 gcc                     i386       4.1.2-42.el5     base              5.2 M
 gcc-c++                 i386       4.1.2-42.el5     base              3.4 M
 gcc-objc                i386       4.1.2-42.el5     base              2.6 M
 glibc-devel             i386       2.5-24.el5_2.2   updates           2.0 M
 glibc-headers           i386       2.5-24.el5_2.2   updates           611 k
 kernel-headers          i386       2.6.18-92.1.22.el5  updates           854 k
 libgcj-devel            i386       4.1.2-42.el5     base              1.4 M
 libgfortran             i386       4.1.2-42.el5     base              230 k
 libgnat                 i386       4.1.2-42.el5     base              989 k
 libgomp                 i386       4.1.2-42.el5     base               82 k
 libobjc                 i386       4.1.2-42.el5     base              101 k
 libstdc++-devel         i386       4.1.2-42.el5     base              2.9 M

Transaction Summary
=============================================================================
Install     16 Package(s)
Update       2 Package(s)
Remove       0 Package(s)

Total download size: 62 M
Downloading Packages:
(1/18): libgomp-4.1.2-42. 100% |=========================|  82 kB    00:05
(2/18): gcc-java-4.1.2-42 100% |=========================| 2.9 MB    01:48
(3/18): libgfortran-4.1.2 100% |=========================| 230 kB    00:09
(4/18): glibc-common-2.5- 100% |=========================|  16 MB    00:27
(5/18): glibc-2.5-24.el5_ 100% |=========================| 5.2 MB    00:08
(6/18): kernel-headers-2. 100% |=========================| 854 kB    00:01
(7/18): libstdc++-devel-4 100% |=========================| 2.9 MB    02:19
(8/18): gcc-c++-4.1.2-42. 100% |=========================| 3.4 MB    01:51
(9/18): gcc-4.1.2-42.el5. 100% |=========================| 5.2 MB    03:22
(10/18): glibc-headers-2. 100% |=========================| 611 kB    00:01
(11/18): glibc-devel-2.5- 100% |=========================| 2.0 MB    00:03
(12/18): gcc-objc++-4.1.2 100% |=========================| 2.8 MB    01:17
(13/18): libgcj-devel-4.1 100% |=========================| 1.4 MB    00:31
(14/18): libgnat-4.1.2-42 100% |=========================| 989 kB    00:22
(15/18): gcc-objc-4.1.2-4 100% |=========================| 2.6 MB    01:17
(16/18): gcc-gnat-4.1.2-4 100% |=========================|  11 MB    06:18
(17/18): gcc-gfortran-4.1 100% |=========================| 3.1 MB    01:49
(18/18): libobjc-4.1.2-42 100% |=========================| 101 kB    00:05
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating  : glibc-common                 ####################### [ 1/20]
  Updating  : glibc                        ####################### [ 2/20]
  Installing: libobjc                      ####################### [ 3/20]
  Installing: libgnat                      ####################### [ 4/20]
  Installing: libgfortran                  ####################### [ 5/20]
  Installing: libgomp                      ####################### [ 6/20]
  Installing: kernel-headers               ####################### [ 7/20]
  Installing: glibc-headers                ####################### [ 8/20]
  Installing: glibc-devel                  ####################### [ 9/20]
  Installing: gcc                          ####################### [10/20]
  Installing: gcc-objc                     ####################### [11/20]
  Installing: libstdc++-devel              ####################### [12/20]
  Installing: gcc-c++                      ####################### [13/20]
  Installing: libgcj-devel                 ####################### [14/20]
  Installing: gcc-gfortran                 ####################### [15/20]
  Installing: gcc-gnat                     ####################### [16/20]
  Installing: gcc-objc++                   ####################### [17/20]
  Installing: gcc-java                     ####################### [18/20]
  Cleanup   : glibc                        ####################### [19/20]
  Cleanup   : glibc-common                 ####################### [20/20]

Installed: gcc-gfortran.i386 0:4.1.2-42.el5 gcc-gnat.i386 0:4.1.2-42.el5 gcc-java.i386 0:4.1.2-42.el5 gcc-objc++.i386 0:4.1.2-42.el5
Dependency Installed: gcc.i386 0:4.1.2-42.el5 gcc-c++.i386 0:4.1.2-42.el5 gcc-objc.i386 0:4.1.2-42.el5 glibc-devel.i386 0:2.5-24.el5_2.2 glibc-headers.i386 0:2.5-24.el5_2.2 kernel-headers.i386 0:2.6.18-92.1.22.el5 libgcj-devel.i386 0:4.1.2-42.el5 libgfortran.i386 0:4.1.2-42.el5 libgnat.i386 0:4.1.2-42.el5 libgomp.i386 0:4.1.2-42.el5 libobjc.i386 0:4.1.2-42.el5 libstdc++-devel.i386 0:4.1.2-42.el5
Updated: glibc.i686 0:2.5-24.el5_2.2 glibc-common.i386 0:2.5-24.el5_2.2
Complete!