設定・管理
|
Ubuntu 18.04設定・管理Ubuntu server 18.04 の設定を行った時のメモです.ここでは,システムの設定と管理(ネットワーク,起動,サービス,ポート,ユーザー/グループ) について説明します. 目次ネットワーク設定ネットワークの設定方法を示します. IP アドレスの設定IPアドレスを自動取得から固定にします.その方が後々面倒が無くて良いからです. 私の WEB サーバーでは,以下の手銃で 192.168.1.82 に設定しました.固定 IP にするためには,ファイル「/etc/network/interfaces」を編集します. # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto enp2s0 #iface enp2s0 inet dhcp iface enp2s0 inet static address 192.168.1.82 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.1 dns-nameservers 192.168.1.1 赤字の部分を編集しました.以前の Netowrk Interface 名は eth0 でしたが,enp2s0 に変わりました. DNS の設定設定以前の Ubuntu serve の DNS (Domain Name System) の設定は,「/etc/resolv.conf」でした.Ubuntu 18.04 の設定場所は,異なります.このファイルはありますが,「/run/resolvconf/resolv.conf」のシンボリックリンクになっています.リンク先のファイルのコメント欄に「DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN (あんたは,このファイルは編集するな.お前の変更は上書きされるぞ)」と書かれていますので,編集はできません(避けるべきです). Ubunt 18.04 の DNS の設定は,「/etc/systemd/resolved.conf」に記述します.複数の IP を設定する場合は,空白で区切ります. [Resolve] DNS= XXX.XXX.XXX.XXX YYY.YYY.YYY.YYY 8.8.8.8 この例では,三つの DNS (XXX.XXX.XXX.XXX, YYY.YYY.YYY.YYY, 8.8.8.8) を設定します. 確認DNS の設定は,コマンド「systemd-resolve --status」で確認できます.コマンドと実行結果の例を以下に示します. $ systemd-resolve --status Global DNS Servers: XXX.XXX.XXX.XXX YYY.YYY.YYY.YYY 8.8.8.8 ······ ······ 起動シーケンスと CUI に変更基礎知識 (Ubuntu の起動シーケンス)Ubuntu 15.04 から従来の sysvinit から systemd になり,ランレベルからターゲットに変わりました.デフォルトのターゲットは,コマンド「systemctl get-default」で表示します. $ systemctl get-default graphical.target systemd での起動は,default.target のユニットという単位で処理されます.そのユニットは,コマンド「systemctl list-dependencies」を使うと,ツリーでユニットを表示することができます.コマンドの結果のツリーは,以下のとおりです.ノードをクリックすると,ツリーを開いたり閉じたりできます.
ルートの default.target が OS 起動シーケンスの起点となるユニットです.ユニットの種類は,拡張子で区別されます.このうち拡張子が「*.service」となっているものがサービス (デーモン) の起動です. CUI に変更WEB サーバーには GUI は不要なので,CUI に変更します.そのためのコマンドは「systemctl set-default multi-user.target」です.以下にコマンドと実行結果を示します. $ sudo systemctl set-default multi-user.target Created symlink /etc/systemd/system/default.target → /lib/systemd/system/multi-user.target. CUI の変更後は,サーバー PC の再起動が必要です.再起動後に,コマンド「systemctl list-dependencies」でターゲットのツリーを確認します.CUI (multi-user.target) のツリーは以下のとおりです.ノードをクリックすると,ツリーを閉じたり,開いたりできます.CUI にしたことで,デフォルトの graphical.target の multi-user.target が展開されていることが分かります.
起動シーケンスのターゲット「multi-user.target」では,私の WEB サーバーで必要な以下のサービスが起動します.ユニットを追加する必要はありません.
サービス(デーモン)の管理service による起動他コマンド「service」を使うと,サービスの起動・停止,状態確認などができます.例えば,以下のとおりです. $ service apache2 status apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Mon 2019-08-12 14:54:46 JST; 1h 29min ago Process: 1104 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCE Main PID: 1233 (apache2) Tasks: 6 (limit: 4915) CGroup: /system.slice/apache2.service ├─1233 /usr/sbin/apache2 -k start ├─1234 /usr/sbin/apache2 -k start ├─1235 /usr/sbin/apache2 -k start ├─1236 /usr/sbin/apache2 -k start ├─1239 /usr/sbin/apache2 -k start └─1241 /usr/sbin/apache2 -k start 8月 12 14:54:46 www3 systemd[1]: Starting The Apache HTTP Server... 8月 12 14:54:46 www3 systemd[1]: Started The Apache HTTP Server. しかし,これは PC を再起動すると,元に戻ります.systemd のターゲットの指定のとおりになります.一時的に,起動/停止などをするときは便利です.このコマンドは,「/etc/init.d/」にある起動スクリプトを操作しています.したがって,この起動スクリプトを直接実行させても,service を使っても同じ結果が得られます.たとえば,先のコマンドは,このコマンド「/etc/init.d/apache2 status」で同じ結果が得られます. service は,以下のような引数をとります. # service スクリプト コマンド たとえば,Apache を再起動するためには,「service apache2 restart」とします.最初の引数は起動スクリプトであることに注意してください.サービス名ではありません.この起動スクリプトは,/etc/init.d/ を見れば分かります.それぞれのサービスに対応した起動スクリプトがあるはずです.コマンドは起動スクリプト毎に異なりますが,代表的な以下のコマンドは大体の起動スクリプトで使えます.
起動の確認コマンド「pstree」を使うとプロセスの状況を確認できます.このコマンドの実行結果は,以下の通りです. $ pstree
systemd─┬─agetty
├─apache2───5*[apache2]
├─atd
├─cron
├─dbus-daemon
├─htcacheclean
├─irqbalance───{irqbalance}
├─lvmetad
├─lxcfs───4*[{lxcfs}]
├─mysqld───26*[{mysqld}]
├─networkd-dispat───{networkd-dispat}
├─rsyslogd───3*[{rsyslogd}]
├─smbd─┬─cleanupd
│ ├─lpqd
│ └─smbd-notifyd
├─sshd───sshd───sshd───bash───pstree
├─systemd───(sd-pam)
├─systemd-journal
├─systemd-logind
├─systemd-resolve
├─systemd-timesyn───{systemd-timesyn}
├─systemd-udevd
├─thermald───{thermald}
├─unattended-upgr───{unattended-upgr}
└─winbindd───3*[winbindd]
プロセスの親子関係がツリー構造で表されています.また,「5*[apache2]」は10個の apache2 のプロセスを表しています.pstree の詳細については,ここら辺を参考にしてください. ポートの管理ファイアーウォールubunts server の場合,デフォルトでは全てのポートは閉じています.そして,サーバープログラムをインストールすると,自動的に使うポートが開放されるようです. ポートスキャンポートの状態を確認するには,ポートスキャンを最も効果的です.ここでは,nmap を使います.まずは,以下のコマンドで nmap をインストールします. $ sudo apt-get install nmap nmap はいろいろな使い方があるようです.たとえば,「清く、正しい、nmapの使い方」に,詳しく書かれています.「清くなく,正しくない使い方」もあるようですが,使う場合には気をつけてください. サーバーの管理では,自分のポートの状態が重要です.自分のポートを調べるには,次のようにします. $ nmap localhost -p 1-65535 ←ポートスキャンするコマンド Starting Nmap 7.60 ( https://nmap.org ) at 2019-08-12 17:33 JST Nmap scan report for localhost (127.0.0.1) Host is up (0.000060s latency). Other addresses for localhost (not scanned): ::1 Not shown: 65529 closed ports PORT STATE SERVICE 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 x11 Nmap done: 1 IP address (1 host up) scanned in 1.85 seconds よく分からないポートがあった場合,コマンド「fuser」をつかって,そのポートを利用しているプロセスIDを調べます.先の例では,ポートの6010とか6011が何に使われているのか分かりません.
$ sudo fuser -nv tcp 445
445/tcp: 1388
この結果から,プロセス ID の 1388番がポートの 6010 を使っていることが分かります.プロセスの情報は「ps -p 1388」で得ることができます.その結果,PID=1388 は smbd が使っていることが判明しました. ルーターの設定自宅の WEB サーバーを外部に公開するためには,ルーターの設定が必要です.私の場合,NTTのルーター PR-S300NE で次のように設定しています.
ユーザー/グループの管理ユーザーの追加・削除追加ユーザー「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 オプション 引数 グループ名 このコマンドでは,以下のオプションを使うことができます.
グループのパスワードが設定されている状態で、 グループのメンバー以外のユーザーがコマンド「newgrp」でそのグループ ID になる場合,パスワードが求められます.正しいパスワードを入力すると,一時的にグループのメンバーになることができます.パスワードが設定されていない状態では,グループのメンバーのみ,そのグループの ID になることができます.要するに,グループパスワードが設定されていると,グループのメンバー以外もそのグループ ID が使えるようになります.これを防ぐためには,オプション「-R」あるいは「--restrict」を指定します. 削除グループ「project_A」の削除は,次のようにします. $ sudo groupdel project_A グループによる共有共同で作業を進める場合,ディレクトリーをグループで共有すると高率が上がります.ここでは,一般的なグループおよび共有するディレクトリーの作成方法を示します.
ページ作成情報参考資料
更新履歴
|