Linux Tips

サーバー関連

  1. Samba(2.2.2-ja-0.6 2002/02/07)
  2. ProFtpd(1.2.1 2002/02/07)
  3. DNSの設定(BIND 9.1.2 2002/02/07)
  4. DHCPDの設定(ISC 2.0pl5 2002/02/07)
  5. Apacheの設定(Apache/1.3.20 2002/02/07)
  6. Sendmailの設定(sendmail-8.11.4-5,CF-3.7Wpl2-12 2002/02/18)
  7. qpopperの設定(qpopper4.03 2002/02/18)

システム管理関連

  1. chkconfig(ブート時の起動アプリ設定)
  2. networkの再認識

その他

  1. color-lsの設定
  2. Emacs
  3. プログラム(C言語)

(注:以下に記した情報を用いたおこないの結果生じた問題等には一切責任を負いません)

Samba(2.2.2-ja-0.6 2002/02/07)

--------------------
1.SWATについて
++++++++++++++
1)/etc/servicesのチェック
 swat  901/tcp

2)xinetdを利用している場合
 /etc/xinetd.d/swatファイルの
  disable = yes
 の部分を
  disable = no
 に変更する
------------
service swat
{
	port = 901
	socket_type = stream
	wait = no
	user = root
	server = /usr/sbin/swat
	log_on_failure += USERID
	disable = no
}
------------

3)Webブラウザで、
 http://Sambaサーバ名:901/
でアクセスする

2.Samba起動・設定方法
+++++++++++++++++++++

1)設定ファイル:/etc/smb.confは以下のようにしてみる
---------------
[global]
workgroup = EARTH
server string = Samba Server
security = user
encrypt passwords = Yes
coding system = sjis
client code page = 932

[smbshare]
comment = SMB Shared Folder
path = /home/samba
writeable = Yes
valid users = mirai
force user = mirai
----------------

2)/home/sambaを作成し、書き込み属性を可にしておく

#chmod 777 /home/samba

3)Sambaの起動(chkconfigコマンドでLinux起動時に設定も可)

#cd /etc/init.d
#./smb start

3.Samba2.2.1aからSamba2.2.2日本語版へのVerUp
++++++++++++++++++++++++++++++++++++++++++++
日経Linux 2002.2月号 付属CD-ROM2より

0)/etc以下のファイルのバックアップ

適当なところで
%tar zcvf etc20020129.tgz /etc/*
%echo \n | testparm > ./testparm20.txt
%ln -s /home/samba /var/samba

1)rpmによるSambaのバージョンアップ

%su -
#mount /mnt/cdrom
#cd /mnt/cdrom/article/toku1/samba-2.2.2/turbo
#cp ./samba-2.2.2.ja-4.i586.rpm /usr/local/src
#cd /usr/local/src
#rpm -Uvh samba-2.2.2.ja-4.i586.rpm

2)設定ファイルの移行

適当なところで
%echo \n | testparm /etc/samba/smb.conf > ./testparm22.txt
diffで設定ファイルの確認
%diff ./testparm20.txt ./testparm22.txt
パラメータに問題なければ
#mv -f /etc/smb.conf /etc/samba/

3)その他

注)前のユーザは消えていた
→ユーザを新しく作った

以下、いらないものは消しとく
/etc/codepages/
/etc/smb.conf
--------------------
top

ProFtpd(1.2.1 2002/02/07)

--------------------
VMWareを使いWindows上でLinuxとファイルのやり取りをしようと思ったとき、
Sambaの設定がわからず、とりあえずFTPでできないかと考え、FTPサーバを立ち上げてみた。
(ほんとに立ち上げただけ。設定方法もまともにわからん。けど、一応やりとりできた。)

#/usr/sbin/proftpd   ←こんだけ。

設定ファイルは以下。しかしよくわからん。
/etc/proftpd/proftpd.conf
--------------------
top

DNSの設定(BIND 9.1.2 2002/02/07)

--------------------
0)以下のファイルを用意
/etc/named.conf
/etc/resolv.conf
/etc/host.conf
/var/named/earth.or.jp.db
/var/named/192.168.24.db
/var/named/127.0.0.db
/var/named/named.cache

1)各ファイルの内容は以下の通り
/etc/named.conf
---------------
options {
	directory "/var/named";
};

zone "." {
	type hint;
	file "named.cache";
};

zone "earth.or.jp" {
	type master;
	file "earth.or.jp.db";
};

zone "24.168.192.in-addr.arpa" {
	type master;
	file "192.168.24.db";
};

zone "0.0.127.in-addr.arpa" {
	type master;
	file "127.0.0.db";
};
---------------

/etc/resolv.conf
---------------
domain earth.or.jp
nameserver 192.168.24.2
---------------

/etc/host.conf
---------------
order hosts,bind
multi on
---------------

/var/named/earth.or.jp.db
注)BIND 9.1.2 では 昔のBINDとは異なり、以下の注意が必要
  (逆引き、ローカルゾーンでも同様)
 1)$TTLの行が必要
 2)HINFOの行を入れるとだめ
---------------
$TTL 86400
@       IN      SOA     mei.earth.or.jp. root.mei.earth.or.jp.  (
                                      2002012900 ; Serial
                                      3600       ; Refresh
                                      300        ; Retry
                                      360000     ; Expire
                                      86400      ; Minimum
			)

        IN      A       192.168.24.2
        IN      NS      mei.earth.or.jp.
        IN      MX      10 mail.earth.or.jp.

localhost       IN      A      127.0.0.1
loghost         IN      CNAME  localhost

mei             IN      A      192.168.24.2

mail	IN	CNAME  mei
www		IN	CNAME  mei
ftp		IN	CNAME  mei

upa		IN	A      192.168.24.3
---------------

/var/named/192.168.24.db
---------------
$TTL 86400
@       IN      SOA     mei.earth.or.jp. root.mei.earth.or.jp.  (
                                      2002012900 ; Serial
                                      3600       ; Refresh
                                      300        ; Retry
                                      360000     ; Expire
                                      86400      ; Minimum
			)

        IN      NS      mei.earth.or.jp.

        IN      PTR     earth.or.jp.
        IN      A       255.255.255.0

2       IN      PTR     mei.earth.or.jp.
3       IN      PTR     upa.earth.or.jp.
---------------

/var/named/127.0.0.db
---------------
$TTL 86400
@       IN      SOA     mei.earth.or.jp. root.mei.earth.or.jp. (
                        2002020300
                        3600
                        300
                        360000
                        86400)

        IN      NS      mei.earth.or.jp.

0	IN	PTR	localnetwork.
1       IN      PTR     localhost.
---------------

/var/named/named.cache
---------------
.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     128.9.0.107
.                        3600000      NS    C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
.                        3600000      NS    D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
.                        3600000      NS    E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
.                        3600000      NS    F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
.                        3600000      NS    G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
.                        3600000      NS    H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
.                        3600000      NS    I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
.                        3600000      NS    J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.      3600000      A     198.41.0.10
.                        3600000      NS    K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
.                        3600000      NS    L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.      3600000      A     198.32.64.12
.                        3600000      NS    M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
---------------

2)namedの再起動
% su -
#/etc/init.d/named restart

3)nslookup または host コマンドで動作チェック

4)OKなら起動時に実行されるように設定
#/sbin/chkconfig --list | grep named
で確認
#/sbin/chkconfig --level 345 named on
--------------------
top

DHCPDの設定(ISC 2.0pl5 2002/02/07)

--------------------
0)設定ファイルの作成
%su
#touch /etc/dhcpd.conf

1)以下、dhcpd.confの内容
-------------
# created by mirai 2002/02/07

# host's name or IP address
server-identifier 192.168.24.2;

# config of subnetwork
shared-network MYNETWORK {
	option subnet-mask 255.255.255.0;
	default-lease-time 6000;
	max-lease-time 72000;
	subnet 192.168.24.0 netmask 255.255.255.0 {
		range 192.168.24.3 192.168.24.4;
		option domain-name-servers mei.earth.or.jp;
		option domain-name "earth.or.jp";
		option broadcast-address 192.168.24.255;
		option routers 192.168.24.2;
	}
}
-------------

2)dhcpdのスタート
#/etc/init.d/dhcpd start

3)起動時に実行されるよう設定
#/sbin/chkconfig --list | grep dhcpd
#/sbin/chkconfig --level 345 dhcpd on
--------------------
top

Apacheの設定(Apache/1.3.20 2002/02/07)

--------------------
0)TarboLinux7.0にはすでにApache 1.3.20がインストール済み
 ・srcからインストールしたときとは、設定ファイル等が
  標準の置き場所とは異なるので注意が必要
 ・設定ファイルも既にあり(/etc/httpd以下)
 ・設定ファイル(httpd.conf)の修正が必要

1)/etc/httpd/conf/httpd.confの修正
以下、修正部分
-----------
139,140c139,140
< MinSpareServers 5
< MaxSpareServers 10
---
> MinSpareServers 2
> MaxSpareServers 5
146c146
< StartServers 5
---
> StartServers 2
446,457c446,457
< #
< #    AllowOverride FileInfo AuthConfig Limit
< #    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
< #    
< #        Order allow,deny
< #        Allow from all
< #    
< #    
< #        Order deny,allow
< #        Deny from all
< #    
< #
---
> 
>     AllowOverride FileInfo AuthConfig Limit
>     Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
>     
>         Order allow,deny
>         Allow from all
>     
>     
>         Order deny,allow
>         Deny from all
>     
> 
-----------

2)httpdのstart
%su
#/etc/rc.d/init.d/httpd start

3)起動時の設定
#/sbin/chkconfig --level 345 httpd on
--------------------
top

Sendmailの設定(sendmail-8.11.4-5,CF-3.7Wpl2-12 2002/02/18)

--------------------
0.TurboLinux7.0にはsendmail-8.11.4-5,CF-3.7Wpl2-12 2002/02/18がインストール済み
 チェック方法は
%rpm -qi sendmail
%rpm -qi CF

1.sendmail.cf(設定ファイル)の作成
%su
#cd /var/src/CF-3.7Wpl2
#cp Standards/sendmail-v8.def ./sendmail.def
以下、オリジナルとのdiff
$ diff sendmail.def Standards/sendmail-v8.def 
21,23c21,23
< VERSION=3.7W
< VERSION_SEPARATOR='-'
< LOCAL_VERSION='MailExchanger'
---
> #VERSION=3.7W
> #VERSION_SEPARATOR=
> #LOCAL_VERSION=
31c31
< OS_TYPE=linux-redhat
---
> #OS_TYPE=
35c35
< MX_SENDMAIL=yes
---
> #MX_SENDMAIL=yes
37c37
< MY_DOMAIN=earth.or.jp
---
> ##MY_DOMAIN=
40c40
< MY_NAME=mei
---
> ##MY_NAME=
43c43
< OFFICIAL_NAME='$w.$m'                                 # for V5
---
> #OFFICIAL_NAME='$w.$m'                                        # for V5
62c62
< FROM_ADDRESS='$m'
---
> ##FROM_ADDRESS='$m'
88c88
< ACCEPT_ADDRS='earth.or.jp mei.earth.or.jp'
---
> ##ACCEPT_ADDRS='accept.domain.name1 accept.domain.name2 ...'
594c594
< COPY_ERRORS_TO='postmaster'
---
> ##COPY_ERRORS_TO='postmaster'

2.sendmail.cfの作成
#pwd
/var/src/CF-3.7Wpl2
#make sendmail.cf

3.テスト
#pwd
/var/src/CF-3.7Wpl2
#/usr/sbin/sendmail -bt -C./sendmail.cf
>/parse user@domain(これは自分のドメインなどを入れてみる)

4.現状のsendmail.cfと入れ替え
#cd /etc
#cp sendmail.cf{,.20020218}
#cp /var/src/CF-3.7Wpl2/sendmail.cf .
#/etc/rc.d/init.d/sendmail restart
--------------------
top

qpopperの設定(qpopper4.03 2002/02/18)

--------------------
0.qpopper-4.0.3-0vl1.i386.rpmをVineSeedのFTPサイトからとってきた

1.インストール
%su
# rpm -ivh qpopper-4.0.3-0vl1.i386.rpm
ここで、/etc/inet.conf がないなどといわれるが、無視
/etc/sbin/in.qpopperとしてインストールはされる
pop userも作成される

2./etc/services にはすでに以下が記述されていた
pop3        110/tcp # Post Office

3./etc/xinetd.d/pop-3 を以下のように記述
# less /etc/xinetd.d/pop-3
# default: off
# description: POP-3 Mail Server
# securlevel: 30
service pop-3           
{
        disable = no
        socket_type     = stream      
        protocol        = tcp         
        wait            = no          
        user            = root        
        server          = /usr/sbin/in.qpopper                     
        server-args     = -s
}

4.APOPの設定 
(もし存在しないならユーザ 'pop'を作成)
(/usr/sbin/useradd -M -g pop pop -c "Pop Account" -d /dev/null -s /dev/null)
1)qpopperのAPOP用DBを初期化
# /usr/sbin/popauth -init
これで、/etc/pop.auth が作成される
# ll pop.auth 
-rw-------    1 pop      pop          1552  2月 18 13:26 pop.auth

2)ユーザごとにAPOPアカウントを作成 
# /usr/sbin/popauth -user mirai
(削除するときは以下
# /usr/sbin/popauth -dell mirai
ユーザ一覧を見るときは
# /usr/sbin/popauth -list)

5.xinetd を再起動します
# /etc/init.d/xinetd restart

6.以下の手順でテスト
# telnet 10.174.0.21 110 --> IP アドレスの部分はホスト名でも結構です. 
Trying 10.174.0.21...
Connected to musume.morning.or.jp.
Escape character is '^]'.
+OK QPOP (version 3.1.2) at musume.morning.or.jp starting. <12345.985249139@musume.morning.or.jp>
user Gotomaki --> 入力
+OK Password required for Gotomaki.
pass xxxxxxxx --> 入力
+OK Gotomaki has 0 visible messages (0 hidden) in 0 octets.
.
quit ---> 入力
+OK Pop server at jean-luc.ayu.or.jp signing off.
Connection closed by foreign host.
--------------------
top

chkconfig(ブート時の起動アプリ設定)

--------------------
%/sbin/chkconfig --list | less
で確認
%/sbin/chkconfig --level 345 smb on
でsmbサービスをRUNレベル3,4,5で起動させる
--------------------
top

networkの再認識

--------------------
1./etc/hostsを書き換えておく
2./etc/sysconfig/network-scripts/ifcfg-eth0を書き換える
3.%su
4.#/etc/sysconfig/network-scripts/ifup
以上でifcfg-eth0に設定したIPアドレス等が有効になる
--------------------
top

color-lsの設定

--------------------
bashの場合
.bashrcに以下を記述
------
## if you use color ls, comment out above line and uncomment below 2 lines.
LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.i386.rpm=01;31:*.src.rpm=01;30:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.png=01;35:' ; export LS_COLORS

alias ls='ls --color=auto -NF'
------
--------------------
top

Emacs

--------------------
●X EmacsのCモードでTABが入力できない
*************************************
→関数の中では使えた

●X Emacsコマンド集
*******************
C-x C-f:ファイルを開く
C-x C-s:ファイルをセーブする
C-x C-c:エディタの終了

C-v:次のページへ
ESC v:前のページへ
C-n:次の行へ
C-p:前の行へ
C-a:行の最初に移動
C-e:行の末尾に移動
ESC <:ファイルの先頭へ
ESC >:ファイルの末尾へ
C-l:現在のカーソル行をそのページの真ん中へ
ESC g:指定行へ飛ぶ

C-u 回数 コマンドorキー:コマンドorキーを回数文繰り返す

C-k:その行を削除
C-y:元に戻す
C-kを2回繰り返すとカット、カットした文を挿入したい行でC-yを押すとペーストになる

C-x u:アンドゥ
C-_:これもアンドゥ

C-x C-b:バッファリストを表示する
C-x 1:複数ウィンドウが開いているとき、現在カーソルのあるウィンドウのみ表示する
C-x s:変更したすべてのバッファをセーブする

C-s:ファイル内の文字列検索(カーソル行以降)
C-r:ファイル内の文字列検索(カーソル行以前)
[手順]
1.C-s
2.バッファにI-search:とでる
3.検索したい単語入力
4.C-sでそれ以降の単語に飛ぶ(前方検索ならC-r)
5.終了したいときはESC
--------------------
top

プログラム(C言語)

--------------------
●プログラムでのわからんこと
****************************

以下のものはどのヘッダファイルで定義されているのか?
1.gethostname()で使用するMAXHOSTNAMELEN
→sys/param.h

2.struct sockaddr_in
→arpa/inet.h

3.getservbyname()
→netdb.h

4.se=getservbyname()で取り出したse->s_portは/etc/servicesのポート番号だが…
小さい数(1-101)なら256をかけた数でOK。しかし、512以上ではよくわからん。なぜ?
9999だと3879となった。

5.memset()[ある一定のバイトでメモリ領域を埋める]は何のために使うの?

6.errno,EINTR
→errno.h

7.ブロッキングモードとノンブロッキングモード
→ブロッキングモード:
  send()で送信する場合、指定したサイズをすべて送信が終わるまでリターンしない。
    エラーの場合はリターンする
  recv()で受信する場合、1バイトでも受信できるまで待ち、指定サイズ以内で到着したデータ
    を受信してリターンする
 ノンブロッキングモード:
  send()で送信する場合、可能なサイズだけ送信し、すぐにリターンする
  recv()で受信する場合:受信できなくてもすぐリターンする
ブロッキングの変更はfcntl()...fcntl.hをインクルードする必要あり

8.ファイルディスクリプタとは?

9.select()とは?
→select()はいくつかのファイルディスクリプターの状態が変化するのを待つ???
fd_set型変数を使用し、はじめにチェック対象をfd_set型変数に指定する。FD_ZERO()という
マクロに変数のアドレスを渡すとクリアされ、FD_SET()というマクロの第一引数に監視したい
ディスクリプタを渡して変数にセットさせる。FD_ISSET()というマクロで送信・受信のレディ
を調べる

10.CtlキーとCAPSキーの入れ替えはどうやるんだったかな?

11.calloc()の意味と使い方は?
→動的なメモリの確保 malloc()も同じだが、引数の数が違う
 int *ptr;
 ptr=calloc(100,sizeof(int));
 /* or ptr=(int *)malloc(100*sizeof(int));
 free(ptr);

12.コンソールへの日本語入力方法(表示)は?
--------------------
top