Yamamoto's Laboratory
管理

コマンド

sudo su -
rootになる.「su」は直に使うことができない.
mount -t vfat /dev/sdc1 /mnt/USB_mem
フォーマット:vat,デバイス:sdc,マウントポイント:/mnt/USB_mem

ランレベル

Ubuntu server のランレベルは,「/etc/init/rc-sysinit.conf」で決まっているようです(参考).このファイルの14行目の「env DEFAULT_RUNLEVEL=2」がランレベルの設定です.

# Default runlevel, this may be overriden on the kernel command-line
# or by faking an old /etc/inittab entry
env DEFAULT_RUNLEVEL=2   14行目のランレベルの定義

Ubuntu server のデフォルトのランレベルは,2なんですねー.設定とは別に実際のシステムのランレベルの状態確認は,次のようにします.

# runlevel
N 2

コマンド「runlevel」は,前と現在のシステムのランレベルを出力します.ランレベルの N は,システムのランレベルが無い(不明の)場合を表します.このアウトプットは,前のランレベルは無い(不明),現在は 2 ということです.

サービス(デーモン)の管理

service による起動他

コマンド「service」を使うと,サービスの起動・停止などができます.しかし,サーバーPCの起動時には,このコマンドでの設定は無視されますので,後で述べるコマンド「sysv-rc-conf」を使います.ここで述べるコマンド「service」は,多くの場合,サービスをインストールしたときに起動や設定のテストで用いられます.もちろん,「sysv-rc-conf」でも,サービスの起動・停止は可能ですが,「service」の方が手軽です.

コマンド「service」は,/etc/init.d/にある起動スクリプトを操作しています.したがって,この起動スクリプトを直接実行させても,service を使っても同じ結果が得られます.たとえば,次の通りです.

# /etc/init.d/apache2 status
Apache2 is running (pid 907).
# service apache2 status
Apache2 is running (pid 907).

service は,以下のような引数をとります.

# service スクリプト コマンド

たとえば,Apache を再起動するためには,「service apache2 restart」とします.最初の引数は起動スクリプトであることに注意してください.サービス名ではありません.この起動スクリプトは,/etc/init.d/ を見れば分かります.それぞれのサービスに対応した起動スクリプトがあるはずです.コマンドは起動スクリプト毎に異なりますが,代表的な以下のコマンドは大体の起動スクリプトで使えます.

start 起動
restart 再起動
stop 停止
status 状態表示

sysv-rc-conf による設定

コマンド「sysv-rc-conf」を使うと,システム起動時のサービスの起動・停止の設定ができます.このコマンドは,通常はインストールされているはずですが,もしインストールされていなければ「apt-get install sysv-rc-conf」でインストールできます.

起動

# sysv-rc-conf

させると,以下のようなスクリーンが現れます.

 SysV Runlevel Config   -: stop service  =/+: start service  h: help  q: quit ┐
│                                                                              │
│ service      1       2       3       4       5       0       6       S       │
│ ---------------------------------------------------------------------------- │
│ apache2     [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]      │
│ apparmor    [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [X]      │
│ apport      [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]      │
│ atd         [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]      │
│ bootlogd    [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]      │
│ console-s$  [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]      │
│ cron        [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]      │
│ dbus        [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]      │
│ dmesg       [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]      │
│ dns-clean   [X]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]      │
│ friendly-$  [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]      │
│ grub-comm$  [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]      │
│ halt        [ ]     [ ]     [ ]     [ ]     [ ]     [X]     [ ]     [ ]      │
│                                                                              │
└------------------------------------------------------------------------------┘
┌------------------------------------------------------------------------------┐
│ Use the arrow keys or mouse to move around.      ^n: next pg     ^p: prev pg │
│                        space: toggle service on / off                        │
└------------------------------------------------------------------------------┘

第一列にサービス名が表示されます.第一行目の(1, 2, 3, 4, 5, 0, 6, S)は,ランレベルを表しています.ランレベルについては,ウィッキペディアのランレベルを読んでください.[X]となっている部分が,対応したランレベルで,サービスが起動されます.

使用方法は,画面の上と下に書かれているとおりです.

[-] キーでサービスを停止,[=] あるいは [+] キーで起動ができます.矢印キーで操作したいサービスの [ ] にカーソルを移動させて,それらのキーをタイプします.カーソルを移動させるランレベルはどこでもよいです.[h] キーを押すとヘルプが表示されます.ヘルプが表示を消して元に戻るには,再び [h] キーを押します.

[r]キーを押すと,設定変更がされないでsysv-rc-conf は終了します.このキーは画面に説明がありませんが,ヘルプに書かれています.間違って設定して,元の状態が分からなくなったときにこのキーを使います.

サービスの起動ランレベルを変更する場合は,矢印キーあるいはマウスでカーソルを対応するサービスのランレベルに移動させます.矢印キーで移動させた方が無難です.マウスで移動させると,設定が反転してしまいます.通常,サービスが多いので複数のページがあります.[control] + [n]キーで次ページ,[control] + [p] キーで前ページが表示されます.[スペース] キーで設定の on/off の変更ができます.sysv-rc-conf の停止は [q] キーです.このキーが押されると,設定が反映されます.反映しないで,元の状態で停止したい場合には,[r] キーを押します.

起動の確認

pstree を使うとプロセスの状況を確認できます.プロセスの状況から,サービスの起動状況が分かります.起動とその結果は以下の通りです.

# pstree
init─┬─apache2───10*[apache2]
      ├─atd
      ├─console-kit-dae───64*[{console-kit-da}]
      ├─cron
      ├─2*[dbus-daemon]
      ├─dbus-launch
      ├─gconfd-2
      ├─6*[getty]
      ├─irqbalance
      ├─mysqld───17*[{mysqld}]
      ├─nmbd
      ├─polkitd───{polkitd}
      ├─rsyslogd───3*[{rsyslogd}]
      ├─smbd───3*[smbd]
      ├─sshd─┬─sshd───sshd───bash───sudo───su───bash───pstree
      │        └─sshd───sshd───bash───emacs
      ├─udevd───2*[udevd]
      ├─upstart-socket-
      ├─upstart-udev-br
      ├─vsftpd
      └─winbindd───3*[winbindd]

プロセスの親子関係がツリー構造で表されています.また,「10*[apache2]」は10個のapache2のプロセスを表しています.pstreeの詳細については,ここら辺を参考にしてください.

ポートの管理

ファイアーウォール

ubunts server の場合,デフォルトでは全てのポートは閉じています.そして,サーバープログラムをインストールすると,自動的に使うポートが開放されるようです.

ポートスキャン

ポートの状態を確認するには,ポートスキャンを最も効果的です.ここでは,nmap を使います.まずは,以下のコマンドで,nmap をインストールします.

# apt-get install nmap

nmap はいろいろな使い方があるようです.たとえば,「清く、正しい、nmapの使い方」に,詳しく書かれています.「清くなく,正しくない使い方」もあるようですが,使う場合には気をつけてください.

サーバーの管理では,自分のポートの状態が重要です.自分のポートを調べるには,次のようにします.

# nmap localhost -p 1-65535  ←ポートスキャンするコマンド

Starting Nmap 5.21 ( http://nmap.org ) at 2012-06-17 20:36 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000028s latency).
Not shown: 65527 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
80/tcp   open  http
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
3306/tcp open  mysql
6010/tcp open  unknown
6011/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 3.87 seconds

よく分からないポートがあった場合,コマンド「fuser」をつかって,そのポートを利用しているプロセスIDを調べます.先の例では,ポートの6010とか6011が何に使われているのか分かりません.

# fuser -nv tcp 6010
6010/tcp:             1083

この結果から,プロセスIDの1083番がポートの6010を使っていることが分かります.プロセスの情報は「ps aux」で得ることができます.その結果,PID=1083は sshd が使っていることが判明しました.これは,ssh のX転送でつかわれるポートのようです.

ルーターの設定

自宅の WEB サーバーを外部に公開するためには,ルーターの設定が必要です.私の場合,NTTのルーター PR-S300NE で次のように設定しています.

ルーターの設定
変換対象プロトコル 変換対象ポート 宛先アドレス 宛先ポート
TCP www 192.168.1.81 www
TCP 22 192.168.1.81 22

サーバーの監視

ユーザー/グループの管理

ユーザー

追加

ユーザー「hogehoge」の追加は,次のようにします.

$ sudo adduser hogehoge

すると,パスワードなどが聞かれますので,適当にタイプします.新ユーザー「hogehoge」のパスワードは忘れると面倒なことになりますので,メモした方が良いでしょう.その後,フルネームやら部屋番号,電話番号の問い合わせがありますが,適当にタイプします.これらを入力しない場合は,そのまま [Enter] キーを押します.

ユーザーの情報は,ファイル「/etc/passwd」に書かれます.Ubuntu の場合,ユーザー情報は以下の通りです.

アカウント名:x:ユーザー ID:グループ ID:Full Name,Room Number,Work Phone,Home Phone,Other:ホームディレクトリー:ログインシェル

削除

ユーザー「hogehoge」の削除は,次のようにします.

$ sudo userdel hogehoge

この場合,ユーザー「hogehoge」のアカウントは削除されますが,ホームディレクトリーやメールスプールは残ります.「sudo userdel -r hogehoge」とすると,これらを含めて削除できます.

グループ

共同作業をするときに,グループを使うと便利です.

追加

例えば,グループ「project_A」は以下のようにして作成します.

$ sudo groupadd project_A

グループの情報は,ファイル「/etc/group」に書かれます.

管理

グループの管理には,コマンド「gpasswd」を使います.

$ sudo gpasswd  オプション  引数  グループ名

このコマンドでは,以下のオプションを使うことができます.

オプション(短) オプション(長) 引数 動作
-a --add ユーザー名 ユーザーをグループのメンバーに追加する.
-d --delete ユーザー名 ユーザーをグループのメンバーから削除する.
-r --remove-password グループのパスワードを削除する.引数は有りません.パスワードの設定には,コマンド「gpasswd グループ名」です.
-M --members ユーザー名1,… グループのメンバーを指定する.カンマ区切りで複数のユーザーの設定が可能.
-R --restrict newgrp を使った グループ ID の変更が不可能になります.すなわち,設定されたグループのメンバーのみこのグループ ID が利用可能になります.
-A --administrators 管理者1,… グループの管理者を設定する.カンマ区切りで複数の管理者の設定が可能.

グループのパスワードが設定されている状態で、 グループのメンバー以外のユーザーがコマンド「newgrp」でそのグループ ID になる場合,パスワードが求められます.正しいパスワードを入力すると,一時的にグループのメンバーになることができます.パスワードが設定されていない状態では,グループのメンバーのみ,そのグループの ID になることができます.要するに,グループパスワードが設定されていると,グループのメンバー以外もそのグループ ID が使えるようになります.これを防ぐためには,オプション「-R」あるいは「--restrict」を指定します.

削除

グループ「project_A」の削除は,次のようにします.

$ sudo groupdel project_A

グループによる共有

共同で作業を進める場合,ディレクトリーをグループで共有すると高率が上がります.ここでは,一般的なグループおよび共有するディレクトリーの作成方法を示します.

  1. グループ (例:group_X) を作ります.
    $ sudo groupadd group_X
  2. グループで共有するディレクトリー (例:project_X) を作成します.
    $ sudo mkdir /home/project_X
  3. 共有するディレクトリーのグループとパーミッションを変更します..
    $ sudo chgrp group_X  /home/project_X
    $ sudo chmod 770  /home/project_X
  4. 共有ディレクトリー下で,新規に作成したファイルやディレクトリのグループが自動的に共有グループになるように変更します.
    $ sudo chmod g+s /home/project_X
    あるいは,コマンド「sudo chmod 2770 /home/project_X」でもOKです./home/project_X のパーミッションが「drwxrws---」と,グループの実行許可が x から s に変わります(SGID).
  5. ユーザー(user01)をグループのメンバーに追加します.
    $ sudo gpasswd -a user01 /home/project_X
    メンバーの人数分,このコマンドを繰り返します.あるいは,最初の一回であれば,「gpasswd -M user01,user02,user03」とすることも可能です.

ページ作成情報

参考資料

  1. サービスの起動確認については,UbuntuTips/Server/ServiceCheckを参考にしました.
  2. nmapについては,「清く、正しい、nmapの使い方」が詳しいです.
  3. 共同作業の設定については,「 Linux|共同作業用のグループとパーミッション設定方法(UGP)」を参考にしました.
  4. グループの考え方は,うすだ ひさしさんのいますぐ実践! Linuxシステム管理の「グループを使いこなす」や「グループにスポット参加する」を参考にしました.

更新履歴

2012年08月26日 ページの新規作成
2015年08月16日 ユーザー/グループの管理を加筆


no counter