- 投稿日:2019-10-01T23:23:19+09:00
Oracle Autonomous Linuxをハックする Part1
1. Oracle Autonomous Linuxの発表
2019年9月に開催された「Oracle OpenWorld 2019」で、驚いたトピックの1つが「Oracle Autonomous Linuxの発表」だ。Autonomousが近年Oracle社のキーメッセージになっているとはといえ、まさかLinuxだとは思わなかった。
- In an Industry First, Oracle Brings Autonomous Operation to Linux
- Oracle Autonomous Linux for Oracle Cloud
いずれの記事も説明は抽象的だが、おそらく以下のようなスペックだと思われる。そこで実際に触って機能をあきらかにしたい。
- Oracle Autonomous LinuxはOracle Cloud Infrastructureで提供
- 自動RPMパッケージ・アップデート
- 自動セキュリティパッチ適用
- Kspliceによるゼロ・ダウンタイム・アップグレード
2. Oracle Autonomous Linuxを作成する
Oracle Autonomous Linuxインスタンスを作成してみよう。マニュアルはOracle Cloud Infrastructure ComputeのMarketplaceページにある(要Oracle Cloud Infrastructureアカウント)。
ただし、現時点のマニュアルは難解でタイポも散見される。今後の機能向上とともに、マニュアルも改善されることを期待したい。
愚痴モードで言うなら、IAMの構文に2箇所も間違いがあり、構文エラーを直すのに時間がかかった。使わせないために、わざとやっているのではと思うほど。
Version: Autonomous-Linux-2019.09.07
Release Date: 9/7/20192-1. 設定の流れ
マニュアルに書かれている設定手順は以下のとおり。
1. Notifications(通知)のセットアップ
- トピックの作成
- トピックにemailアドレスの関連付け2. ダイナミック・グループのセットアップ
- ダイナミック・グループの作成
- ダイナミック・グループにポリシー割り当て3. Oracle Autonomous Linuxインスタンスの作成
- Oracle Autonomous Linuxイメージを使用してインスタンスを作成
- al-configコマンドでインスタンスとトピックを関連付け
2-2. Notifications(通知)のセットアップ
メッセージング・サービスのNotifications(Amazon SQS相当)をセットアップする。
- OCI管理コンソールのメニューから[Application Integration]-[Notifications]を選択する。
- [Create Topic]をクリックしてトピックを作成する。今回は「AL_Notifications」という名前で作成。
- 作成したトピックをクリックして詳細を表示する。
- [Create Subscription]をクリックしてサブスクリプションを作成する。今回は 通知先emailアドレスを設定する。email以外にSlackやPagerDuty、URLも指定できる。
- サブスクリプションを作成すると、通知先のアドレスにメールが送信される。送信されたメール内のリンクをクリックして有効化する。有効化すると、ステータスがPENDINGからACTIVEに変わる。
2-3. ダイナミック・グループのセットアップ
Oracle Autonomous Linuxインスタンスが存在するコンパートメント内からメッセージを通知できるように、ダイナミック・グループとポリシーを構成する。
- OCI管理コンソールから[Identity]-[Dynamic Groups]を選択する。
- 以下の内容でダイナミック・グループを作成する。
項目 値 NAME AL_Notifications_comp1_grp DESCRIPTION for Autonomous Linux Notifications Matching Rules ALL {instance.compartment.id = '<compartment OCID>'} 3.OCI管理コンソールから[Identity]-[Policies]を選択する。
4.以下の内容でポリシーを作成する。
項目 値 NAME AL_Notifications_pol DESCRIPTION for Autonomous Linux Notifications Policy Statements Allow dynamic-group <dynamic group name> to use ons-topics in compartment <topic compartment name> where request.permission='ONS_TOPIC_PUBLISH' 2-4. Oracle Autonomous Linuxインスタンスの作成
インスタンスの作成方法は、通常のComputeインスタンスと同じだ。異なる点はOracle Imagesから"Oracle Autonomous Linux"を選択すること。
作成が完了したら、次のコマンドを実行してトピックを関連付ける。インスタンス作成時のUser Dataで指定してもよい。
$ sudo al-config -T <topic OCID>3. Oracle Autonomous Linuxの設定を調べる
まずはOSの設定を確認する。ディストリビューションのバージョンや起動しているサービスなど、基本的な設定を確認する。
3-1. OS基本設定
ベースはOracle Linux 7.7で、UEK Release 5カーネルを使用している。
$ cat /etc/oracle-release Oracle Linux Server release 7.7 $ uname -a Linux <ホスト名> 4.14.35-1902.4.8.el7uek.x86_64 #2 SMP Sun Aug 4 22:25:18 GMT 2019 x86_64 x86_64 x86_64 GNU/Linux #ファイアウォール有効 $ systemctl is-active firewalld.service active #SELinux有効 $ getenforce Enforcing3-2. 自動起動するサービス
デフォルトで起動しているサービスを調べる。
$ systemctl list-units --type=service
有効になっているサービス一覧(クリックすると開く)
UNIT LOAD ACTIVE SUB DESCRIPTION abrt-ccpp.service loaded active exited Install ABRT coredump hook abrt-oops.service loaded active running ABRT kernel log watcher abrtd.service loaded active running ABRT Automated Bug Reporting al-config.service loaded active exited Autonomous Linux configuratio atd.service loaded active running Job spooling tools auditd.service loaded active running Security Auditing Service bnxt-set-channel.service loaded active exited (null) chronyd.service loaded active running NTP client/server cloud-config.service loaded active exited Apply the settings specified cloud-final.service loaded active exited Execute cloud user/final scri cloud-init-local.service loaded active exited Initial cloud-init job (pre-n cloud-init.service loaded active exited Initial cloud-init job (metad crond.service loaded active running Command Scheduler dbus.service loaded active running D-Bus System Message Bus firewalld.service loaded active running firewalld - dynamic firewall getty@tty1.service loaded active running Getty on tty1 gssproxy.service loaded active running GSSAPI Proxy Daemon irqbalance.service loaded active running irqbalance daemon iscsi-boot-volume.service loaded active exited Set boot volume startup to on iscsi-shutdown.service loaded active exited Logout off all iSCSI sessions iscsi.service loaded active exited Login and scanning of iSCSI d iscsid.service loaded active running Open-iSCSI kdump.service loaded active exited Crash recovery kernel arming kmod-static-nodes.service loaded active exited Create list of required stati libstoragemgmt.service loaded active running libstoragemgmt plug-in server lvm2-lvmetad.service loaded active running LVM2 metadata daemon lvm2-monitor.service loaded active exited Monitoring of LVM2 mirrors, s network.service loaded active running LSB: Bring up/down networking oci-yum-repo-mapper.service loaded active exited Oracle Cloud Infrastructure Y ocid.service loaded active running Oracle Cloud Infrastructure u oracle-cloud-agent-updater.service loaded active running Oracle Cloud Infrastruc oracle-cloud-agent.service loaded active running Oracle Cloud Infrastructure a polkit.service loaded active running Authorization Manager rhel-dmesg.service loaded active exited Dump dmesg to /var/log/dmesg rhel-domainname.service loaded active exited Read and set NIS domainname f rhel-import-state.service loaded active exited Import network configuration rhel-readonly.service loaded active exited Configure read-only root supp rhnsd.service loaded active running LSB: Starts the Spacewalk Dae rngd.service loaded active running Hardware RNG Entropy Gatherer rpcbind.service loaded active running RPC bind service rsyslog.service loaded active running System Logging Service selinux-policy-migrate-local-changes@targeted.service loaded active exited Migr serial-getty@ttyS0.service loaded active running Serial Getty on ttyS0 smartd.service loaded active running Self Monitoring and Reporting sshd.service loaded active running OpenSSH server daemon sysstat.service loaded active exited Resets System Activity Logs systemd-hwdb-update.service loaded active exited Rebuild Hardware Database systemd-journal-catalog-update.service loaded active exited Rebuild Journal Cat systemd-journal-flush.service loaded active exited Flush Journal to Persistent systemd-journald.service loaded active running Journal Service systemd-logind.service loaded active running Login Service systemd-machine-id-commit.service loaded active exited Commit a transient machi systemd-random-seed.service loaded active exited Load/Save Random Seed systemd-remount-fs.service loaded active exited Remount Root and Kernel File systemd-sysctl.service loaded active exited Apply Kernel Variables systemd-tmpfiles-setup-dev.service loaded active exited Create Static Device No systemd-tmpfiles-setup.service loaded active exited Create Volatile Files and D systemd-udev-settle.service loaded active exited udev Wait for Complete Device systemd-udev-trigger.service loaded active exited udev Coldplug all Devices systemd-udevd.service loaded active running udev Kernel Device Manager systemd-update-done.service loaded active exited Update is Completed systemd-update-utmp.service loaded active exited Update UTMP about System Boot systemd-user-sessions.service loaded active exited Permit User Sessions systemd-vconsole-setup.service loaded active exited Setup Virtual Console tuned.service loaded active running Dynamic System Tuning Daemon vdo.service loaded active exited VDO volume services LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 66 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
Autonomous LinuxだけでActiveなサービスは以下のとおり。ocid.serviceはOracle Linux 7にもあるので、al-config.serviceがAutonomous Linux固有のサービスだと思われる。
- al-config.service:Autonomous Linux configuration service
- ocid.service:Oracle Cloud Infrastructure utilities daemon
- serial-getty@ttyS0.service:Serial Getty on ttyS0
- systemd-hwdb-update.service:Rebuild Hardware Database
3-3. ファイアウォール設定
ファイアウォール設定はOracle Linux 7と同じだ。
$ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens3 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:3-4. Yumリポジトリ設定
Yumリポジトリは「Autonomous Linux専用」と「ユーザースペース用Ksplice(glibcとopenssl)」が有効になっている。
$ sudo yum repolist enabled Loaded plugins: langpacks, ulninfo repo id repo name status ★al7/x86_64 Autonomous Linux 7Server (x86_64) 1,360 ol7_x86_64_userspace_ksplice Ksplice aware userspace packages for Oracle 432 repolist: 1,783参考までにOracle Linux 7.7では以下のようになっている。al7リポジトリが1,360であるのに対し、ol7_latestが15,430と差が大きい。al7リポジトリは、提供しているパッケージを絞っているようだ。
repo id repo name ol7_UEKR5/x86_64 Latest Unbreakable Enterprise Kernel Release 5 for Oracle Linux 7Se 162 ol7_addons/x86_64 Oracle Linux 7Server Add ons (x86_64) 370 ol7_developer/x86_64 Oracle Linux 7Server Development Packages (x86_64) 980 ol7_developer_EPEL/x86_64 Oracle Linux 7Server Development Packages (x86_64) 28,157 ol7_ksplice Ksplice for Oracle Linux 7Server (x86_64) 1,093 ★ol7_latest/x86_64 Oracle Linux 7Server Latest (x86_64) 15,430 ol7_oci_included/x86_64 Oracle Software for OCI users on Oracle Linux 7Server (x86_64) 33 ol7_optional_latest/x86_64 Oracle Linux 7Server Optional Latest (x86_64) 11,437 ol7_software_collections/x86_64 Software Collection Library release 3.0 packages for Oracle Linux 7 14,024 repolist: 71,686
list availableでインストール可能なパッケージ数をカウントしてみると、標準リポジトリだけでも差が大きい。al7リポジトリにはtreeコマンドも含まれていなかった。
Oracle Autonomous Linuxで実行 # yum --disablerepo=* --enablerepo=al7 list available | wc -l 227 Oracle Linux 7.7で実行 # yum --disablerepo=* --enablerepo=ol7_latest list available | wc -l 49283-5. インストールされているパッケージ
インストールされているパッケージでめぼしいものを探してみる。--lastを指定すると、新しくインストールしたパッケージから降順に表示できる。
なお、日を変えてインスタンスを作成したところバラツキがあった。Autonomous Linuxは絶賛開発中なので、実行時期によって変わるのだろう。
気になる部分に★を付けた。Autonomous Linux専用サービスのal-config、PythonのOracle DB/OCI系のライブラリ、Oracleインスタント・クライアント、tunedのOCI専用プロファイルあたりだろうか。
# rpm -qa --last |less ★al-config-1.0-1.0.26.el7.noarch Sun Sep 8 12:52:15 2019 python-oci-cli-2.6.3-1.el7.noarch Sun Sep 8 12:52:13 2019 python2-jmespath-0.9.3-1.el7.noarch Sun Sep 8 12:52:11 2019 python-oci-sdk-2.3.3-1.el7.x86_64 Sun Sep 8 12:52:11 2019 pytz-2016.10-2.el7.noarch Sun Sep 8 12:52:03 2019 python2-packaging-16.8-5.el7.noarch Sun Sep 8 12:52:03 2019 python2-click-6.7-6.el7.noarch Sun Sep 8 12:52:03 2019 python-terminaltables-3.1.0-1.el7.noarch Sun Sep 8 12:52:03 2019 python-retrying-1.3.3-1.el7.noarch Sun Sep 8 12:52:03 2019 python-jwt-1.5.3-1.0.1.el7.noarch Sun Sep 8 12:52:03 2019 python-configparser-3.5.0-0.2.el7.noarch Sun Sep 8 12:52:03 2019 python-certifi-2017.4.17-1.el7.noarch Sun Sep 8 12:52:03 2019 python-asn1crypto-0.22.0-1.el7.noarch Sun Sep 8 12:52:03 2019 pyparsing-2.0.3-1.el7.noarch Sun Sep 8 12:52:03 2019 python-ndg_httpsclient-0.3.2-1.el7.noarch Sun Sep 8 12:52:02 2019 python-cx_Oracle-7.0-1.0.1.el7.x86_64 Sun Sep 8 12:52:02 2019 ★oracle-instantclient18.3-basic-18.3.0.0.0-2.x86_64 Sun Sep 8 12:52:01 2019 python2-arrow-0.10.0-1.el7.noarch Sun Sep 8 12:51:55 2019 python-httpsig_cffi-15.0.0-1.el7.noarch Sun Sep 8 12:51:55 2019 python-dateutil-2.7.3-2.el7.noarch Sun Sep 8 12:51:55 2019 yum-cron-3.4.3-163.0.1.el7.noarch Sun Sep 8 12:51:52 2019 openssl-libs-1.0.2k-19.0.1.ksplice1.el7.x86_64 Sun Sep 8 12:51:50 2019 openssl-1.0.2k-19.0.1.ksplice1.el7.x86_64 Sun Sep 8 12:51:50 2019 glibc-2.17-292.0.1.ksplice1.el7.x86_64 Sun Sep 8 12:51:49 2019 glibc-common-2.17-292.0.1.ksplice1.el7.x86_64 Sun Sep 8 12:51:48 2019 ksplice-helper-1.0.42-1.el7.x86_64 Sun Sep 8 12:51:45 2019 ksplice-known-exploit-detection-1.0.42-1.el7.x86_64 Sun Sep 8 12:51:43 2019 ★tuned-profiles-oci-recommend-2.11.0-5.0.2.el7_7.1.noarch Sun Sep 8 12:51:33 201 9 ★tuned-profiles-oci-2.11.0-5.0.2.el7_7.1.noarch Sun Sep 8 12:51:33 20193-6. cron設定
Oracle Autonomous Linuxでは各種自動化が行われているのでcron設定を確認する。
# ls -F /etc/cron* /etc/cron.deny /etc/crontab /etc/cron.d: 0hourly al-update ksplice raid-check sysstat uptrack /etc/cron.daily: 0yum-daily.cron* logrotate* man-db.cron* mlocate* /etc/cron.hourly: 0anacron* 0yum-hourly.cron* /etc/cron.monthly: /etc/cron.weekly:Oracle Autonomous Linux専用コマンドの1つ、al-updateが実行される。
/etc/cron.d/al-update# Daily cron job for AL updates 29 12 * * * root /usr/sbin/al-update &>/dev/nullKsplice用のcronファイルはあるが、2つともコメントアウトされている。
/etc/cron.d/ksplice# 5,35 * * * * root export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin && [ -x /usr/bin/ksplice ] && (/usr/bin/ksplice --cron user upgrade; /usr/bin/ksplice --cron xen upgrade)/etc/cron.d/uptrack# 16,46 * * * * root export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin && [ -x /usr/sbin/uptrack-upgrade ] && /usr/sbin/uptrack-upgrade --cronYumアップデートの自動化ツールyum-cronの設定ファイルは、毎時と毎日の2つがある。
# ls -F /etc/cron*/*yum* /etc/cron.daily/0yum-daily.cron* /etc/cron.hourly/0yum-hourly.cron*/etc/cron.daily/0yum-daily.cronif [[ ! -f /var/lock/subsys/yum-cron ]]; then exit 0 fi # Action! exec /usr/sbin/yum-cron/etc/cron.hourly/0yum-hourly.cronif [[ ! -f /var/lock/subsys/yum-cron ]]; then exit 0 fi # Action! exec /usr/sbin/yum-cron /etc/yum/yum-cron-hourly.confそれぞれの設定ファイルで
apply_updates = no
になっている。そのためyum-cronを実行しても、RPMパッケージはアップデートされないハズだ。# grep apply_updates /etc/yum/yum-cron*conf /etc/yum/yum-cron.conf:apply_updates = no /etc/yum/yum-cron-hourly.conf:apply_updates = noしかし
/var/log/yum.log
を見ると、アップデートされているように見える。このあたりは、今後の課題にする。/var/log/yum.logOct 02 12:29:13 Updated: python-oci-sdk.x86_64 2.5.1-1.el7 Oct 02 12:29:14 Updated: python-oci-cli.noarch 2.6.6-1.el7 Oct 02 12:29:15 Updated: sg3_utils-libs.x86_64 1.37-18.0.1.el7_7.1 Oct 02 12:29:16 Updated: kernel-tools-libs.x86_64 3.10.0-1062.1.2.el7 Oct 02 12:29:17 Updated: kernel-tools.x86_64 3.10.0-1062.1.2.el7 Oct 02 12:29:18 Updated: sg3_utils.x86_64 1.37-18.0.1.el7_7.1 Oct 02 12:29:28 Updated: al-config.noarch 1.0-1.0.28.el7 Oct 02 12:29:34 Installed: kernel-uek.x86_64 4.14.35-1902.5.2.2.el7uek Oct 02 12:29:35 Updated: python-perf.x86_64 3.10.0-1062.1.2.el7 Oct 02 12:29:45 Installed: kernel.x86_64 3.10.0-1062.1.2.el7 Oct 02 12:29:46 Updated: bpftool.x86_64 3.10.0-1062.1.2.el7 Oct 02 12:29:46 Updated: tzdata.noarch 2019c-1.el7
3-7. tuned設定
自動チューニングサービスのtunedは、Oracle Cloud Infrastructure独自のものが設定されている。
# tuned-adm active Current active profile: oci-rps-xps oci-busy-polling oci-cpu-power
profile_info
を指定するとプロファイル情報が表示されるが、サマリーなのでよく分からない。RPS/XPSだからネットワーク系か。# tuned-adm profile_info oci-rps-xps Profile name: oci-rps-xps Profile summary: Enable RPS/XPS conditionally in OCIそれぞれのプロファイルの実体は、以下のファイルで確認できる。本題では無いので説明しないが、どのような設定になっているか興味のある人は確認して欲しい。
# ls -F /usr/lib/tuned/ balanced/ latency-performance/ oci-cpu-power/ throughput-performance/ desktop/ network-latency/ oci-rps-xps/ virtual-guest/ functions network-throughput/ powersave/ virtual-host/ hpc-compute/ oci-busy-polling/ recommend.d/おわりに
長くなったので、ひと区切り付けることにする。次回はKsplice設定や、Oracle Autonomous Linux固有の機能、また今回の調査では不明だった部分の調査を行ないたい。
- 投稿日:2019-10-01T23:23:19+09:00
Oracle Autonomous Linuxをハックする Part 1
1. Oracle Autonomous Linuxの発表
2019年9月に開催された「Oracle OpenWorld 2019」で、驚いたトピックの1つが「Oracle Autonomous Linuxの発表」だ。Autonomousが近年Oracle社のキーメッセージになっているとはといえ、まさかLinuxだとは思わなかった。
- In an Industry First, Oracle Brings Autonomous Operation to Linux
- Oracle Autonomous Linux for Oracle Cloud
いずれの記事も説明は抽象的だが、おそらく以下のようなスペックだと思われる。そこで実際に触って機能をあきらかにしたい。
- Oracle Autonomous LinuxはOracle Cloud Infrastructureで提供
- 自動RPMパッケージ・アップデート
- 自動セキュリティパッチ適用
- Kspliceによるゼロ・ダウンタイム・アップグレード
2. Oracle Autonomous Linuxを作成する
Oracle Autonomous Linuxインスタンスを作成してみよう。マニュアルはOracle Cloud Infrastructure ComputeのMarketplaceページにある(要Oracle Cloud Infrastructureアカウント)。
ただし、現時点のマニュアルは難解でタイポも散見される。今後の機能向上とともに、マニュアルも改善されることを期待したい。
愚痴モードで言うなら、IAMの構文に2ヶ所も間違いがあり、構文エラーを直すのに時間がかかった。使わせないために、わざとやっているのではと思うほど。
Version: Autonomous-Linux-2019.09.07
Release Date: 9/7/20192-1. 設定の流れ
マニュアルに書かれている設定手順は以下のとおり。
1. Notifications(通知)のセットアップ
- トピックの作成
- トピックにemailアドレスの関連付け2. ダイナミック・グループのセットアップ
- ダイナミック・グループの作成
- ダイナミック・グループにポリシー割り当て3. Oracle Autonomous Linuxインスタンスの作成
- Oracle Autonomous Linuxイメージを使用してインスタンスを作成
- al-configコマンドでインスタンスとトピックを関連付け
2-2. Notifications(通知)のセットアップ
メッセージング・サービスのNotifications(Amazon SQS相当)をセットアップする。
- OCI管理コンソールのメニューから[Application Integration]-[Notifications]を選択する。
- [Create Topic]をクリックしてトピックを作成する。今回は「AL_Notifications」という名前で作成。
- 作成したトピックをクリックして詳細を表示する。
- [Create Subscription]をクリックしてサブスクリプションを作成する。今回は 通知先emailアドレスを設定する。email以外にSlackやPagerDuty、URLも指定できる。
- サブスクリプションを作成すると、通知先のアドレスにメールが送信される。送信されたメール内のリンクをクリックして有効化する。有効化すると、ステータスがPENDINGからACTIVEに変わる。
2-3. ダイナミック・グループのセットアップ
Oracle Autonomous Linuxインスタンスが存在するコンパートメント内からメッセージを通知できるように、ダイナミック・グループとポリシーを構成する。
- OCI管理コンソールから[Identity]-[Dynamic Groups]を選択する。
- 以下の内容でダイナミック・グループを作成する。
項目 値 NAME AL_Notifications_comp1_grp DESCRIPTION for Autonomous Linux Notifications Matching Rules ALL {instance.compartment.id = '<compartment OCID>'} 3.OCI管理コンソールから[Identity]-[Policies]を選択する。
4.以下の内容でポリシーを作成する。
項目 値 NAME AL_Notifications_pol DESCRIPTION for Autonomous Linux Notifications Policy Statements Allow dynamic-group <dynamic group name> to use ons-topics in compartment <topic compartment name> where request.permission='ONS_TOPIC_PUBLISH' 2-4. Oracle Autonomous Linuxインスタンスの作成
インスタンスの作成方法は、通常のComputeインスタンスと同じだ。異なる点はOracle Imagesから"Oracle Autonomous Linux"を選択すること。
作成が完了したら、次のコマンドを実行してトピックを関連付ける。インスタンス作成時のUser Dataで指定してもよい。
$ sudo al-config -T <topic OCID>3. Oracle Autonomous Linuxの設定を調べる
まずはOSの設定を確認する。ディストリビューションのバージョンや起動しているサービスなど、基本的な設定を確認する。
3-1. OS基本設定
ベースはOracle Linux 7.7で、UEK Release 5カーネルを使用している。
$ cat /etc/oracle-release Oracle Linux Server release 7.7 $ uname -a Linux <ホスト名> 4.14.35-1902.4.8.el7uek.x86_64 #2 SMP Sun Aug 4 22:25:18 GMT 2019 x86_64 x86_64 x86_64 GNU/Linux #ファイアウォール有効 $ systemctl is-active firewalld.service active #SELinux有効 $ getenforce Enforcing3-2. 自動起動するサービス
デフォルトで起動しているサービスを調べる。
$ systemctl list-units --type=service
有効になっているサービス一覧(クリックすると開く)
UNIT LOAD ACTIVE SUB DESCRIPTION abrt-ccpp.service loaded active exited Install ABRT coredump hook abrt-oops.service loaded active running ABRT kernel log watcher abrtd.service loaded active running ABRT Automated Bug Reporting al-config.service loaded active exited Autonomous Linux configuratio atd.service loaded active running Job spooling tools auditd.service loaded active running Security Auditing Service bnxt-set-channel.service loaded active exited (null) chronyd.service loaded active running NTP client/server cloud-config.service loaded active exited Apply the settings specified cloud-final.service loaded active exited Execute cloud user/final scri cloud-init-local.service loaded active exited Initial cloud-init job (pre-n cloud-init.service loaded active exited Initial cloud-init job (metad crond.service loaded active running Command Scheduler dbus.service loaded active running D-Bus System Message Bus firewalld.service loaded active running firewalld - dynamic firewall getty@tty1.service loaded active running Getty on tty1 gssproxy.service loaded active running GSSAPI Proxy Daemon irqbalance.service loaded active running irqbalance daemon iscsi-boot-volume.service loaded active exited Set boot volume startup to on iscsi-shutdown.service loaded active exited Logout off all iSCSI sessions iscsi.service loaded active exited Login and scanning of iSCSI d iscsid.service loaded active running Open-iSCSI kdump.service loaded active exited Crash recovery kernel arming kmod-static-nodes.service loaded active exited Create list of required stati libstoragemgmt.service loaded active running libstoragemgmt plug-in server lvm2-lvmetad.service loaded active running LVM2 metadata daemon lvm2-monitor.service loaded active exited Monitoring of LVM2 mirrors, s network.service loaded active running LSB: Bring up/down networking oci-yum-repo-mapper.service loaded active exited Oracle Cloud Infrastructure Y ocid.service loaded active running Oracle Cloud Infrastructure u oracle-cloud-agent-updater.service loaded active running Oracle Cloud Infrastruc oracle-cloud-agent.service loaded active running Oracle Cloud Infrastructure a polkit.service loaded active running Authorization Manager rhel-dmesg.service loaded active exited Dump dmesg to /var/log/dmesg rhel-domainname.service loaded active exited Read and set NIS domainname f rhel-import-state.service loaded active exited Import network configuration rhel-readonly.service loaded active exited Configure read-only root supp rhnsd.service loaded active running LSB: Starts the Spacewalk Dae rngd.service loaded active running Hardware RNG Entropy Gatherer rpcbind.service loaded active running RPC bind service rsyslog.service loaded active running System Logging Service selinux-policy-migrate-local-changes@targeted.service loaded active exited Migr serial-getty@ttyS0.service loaded active running Serial Getty on ttyS0 smartd.service loaded active running Self Monitoring and Reporting sshd.service loaded active running OpenSSH server daemon sysstat.service loaded active exited Resets System Activity Logs systemd-hwdb-update.service loaded active exited Rebuild Hardware Database systemd-journal-catalog-update.service loaded active exited Rebuild Journal Cat systemd-journal-flush.service loaded active exited Flush Journal to Persistent systemd-journald.service loaded active running Journal Service systemd-logind.service loaded active running Login Service systemd-machine-id-commit.service loaded active exited Commit a transient machi systemd-random-seed.service loaded active exited Load/Save Random Seed systemd-remount-fs.service loaded active exited Remount Root and Kernel File systemd-sysctl.service loaded active exited Apply Kernel Variables systemd-tmpfiles-setup-dev.service loaded active exited Create Static Device No systemd-tmpfiles-setup.service loaded active exited Create Volatile Files and D systemd-udev-settle.service loaded active exited udev Wait for Complete Device systemd-udev-trigger.service loaded active exited udev Coldplug all Devices systemd-udevd.service loaded active running udev Kernel Device Manager systemd-update-done.service loaded active exited Update is Completed systemd-update-utmp.service loaded active exited Update UTMP about System Boot systemd-user-sessions.service loaded active exited Permit User Sessions systemd-vconsole-setup.service loaded active exited Setup Virtual Console tuned.service loaded active running Dynamic System Tuning Daemon vdo.service loaded active exited VDO volume services LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 66 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
Autonomous LinuxだけでActiveなサービスは以下のとおり。ocid.serviceはOracle Linux 7にもあるので、al-config.serviceがAutonomous Linux固有のサービスだと思われる。
- al-config.service:Autonomous Linux configuration service
- ocid.service:Oracle Cloud Infrastructure utilities daemon
- serial-getty@ttyS0.service:Serial Getty on ttyS0
- systemd-hwdb-update.service:Rebuild Hardware Database
3-3. ファイアウォール設定
ファイアウォール設定はOracle Linux 7と同じだ。
$ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens3 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:3-4. Yumリポジトリ設定
Yumリポジトリは「Autonomous Linux専用」と「ユーザー空間用Ksplice(glibcとopenssl)」が有効になっている。
$ sudo yum repolist enabled Loaded plugins: langpacks, ulninfo repo id repo name status ★al7/x86_64 Autonomous Linux 7Server (x86_64) 1,360 ol7_x86_64_userspace_ksplice Ksplice aware userspace packages for Oracle 432 repolist: 1,783参考までにOracle Linux 7.7では以下のようになっている。al7リポジトリが1,360であるのに対し、ol7_latestが15,430と差が大きい。al7リポジトリは、提供しているパッケージを絞っているようだ。
repo id repo name ol7_UEKR5/x86_64 Latest Unbreakable Enterprise Kernel Release 5 for Oracle Linux 7Se 162 ol7_addons/x86_64 Oracle Linux 7Server Add ons (x86_64) 370 ol7_developer/x86_64 Oracle Linux 7Server Development Packages (x86_64) 980 ol7_developer_EPEL/x86_64 Oracle Linux 7Server Development Packages (x86_64) 28,157 ol7_ksplice Ksplice for Oracle Linux 7Server (x86_64) 1,093 ★ol7_latest/x86_64 Oracle Linux 7Server Latest (x86_64) 15,430 ol7_oci_included/x86_64 Oracle Software for OCI users on Oracle Linux 7Server (x86_64) 33 ol7_optional_latest/x86_64 Oracle Linux 7Server Optional Latest (x86_64) 11,437 ol7_software_collections/x86_64 Software Collection Library release 3.0 packages for Oracle Linux 7 14,024 repolist: 71,686
list availableでインストール可能なパッケージ数をカウントしてみると、標準リポジトリだけでも差が大きい。al7リポジトリにはtreeコマンドも含まれていなかった。
Oracle Autonomous Linuxで実行 # yum --disablerepo=* --enablerepo=al7 list available | wc -l 227 Oracle Linux 7.7で実行 # yum --disablerepo=* --enablerepo=ol7_latest list available | wc -l 49283-5. インストールされているパッケージ
インストールされているパッケージでめぼしいものを探してみる。--lastを指定すると、新しくインストールしたパッケージから降順に表示できる。
なお、日を変えてインスタンスを作成したところバラツキがあった。Autonomous Linuxは絶賛開発中なので、実行時期によって変わるのだろう。
気になる部分に★を付けた。Autonomous Linux専用サービスのal-config、PythonのOracle DB/OCI系のライブラリ、Oracleインスタント・クライアント、tunedのOCI専用プロファイルあたりだろうか。
# rpm -qa --last |less ★al-config-1.0-1.0.26.el7.noarch Sun Sep 8 12:52:15 2019 python-oci-cli-2.6.3-1.el7.noarch Sun Sep 8 12:52:13 2019 python2-jmespath-0.9.3-1.el7.noarch Sun Sep 8 12:52:11 2019 python-oci-sdk-2.3.3-1.el7.x86_64 Sun Sep 8 12:52:11 2019 pytz-2016.10-2.el7.noarch Sun Sep 8 12:52:03 2019 python2-packaging-16.8-5.el7.noarch Sun Sep 8 12:52:03 2019 python2-click-6.7-6.el7.noarch Sun Sep 8 12:52:03 2019 python-terminaltables-3.1.0-1.el7.noarch Sun Sep 8 12:52:03 2019 python-retrying-1.3.3-1.el7.noarch Sun Sep 8 12:52:03 2019 python-jwt-1.5.3-1.0.1.el7.noarch Sun Sep 8 12:52:03 2019 python-configparser-3.5.0-0.2.el7.noarch Sun Sep 8 12:52:03 2019 python-certifi-2017.4.17-1.el7.noarch Sun Sep 8 12:52:03 2019 python-asn1crypto-0.22.0-1.el7.noarch Sun Sep 8 12:52:03 2019 pyparsing-2.0.3-1.el7.noarch Sun Sep 8 12:52:03 2019 python-ndg_httpsclient-0.3.2-1.el7.noarch Sun Sep 8 12:52:02 2019 python-cx_Oracle-7.0-1.0.1.el7.x86_64 Sun Sep 8 12:52:02 2019 ★oracle-instantclient18.3-basic-18.3.0.0.0-2.x86_64 Sun Sep 8 12:52:01 2019 python2-arrow-0.10.0-1.el7.noarch Sun Sep 8 12:51:55 2019 python-httpsig_cffi-15.0.0-1.el7.noarch Sun Sep 8 12:51:55 2019 python-dateutil-2.7.3-2.el7.noarch Sun Sep 8 12:51:55 2019 yum-cron-3.4.3-163.0.1.el7.noarch Sun Sep 8 12:51:52 2019 openssl-libs-1.0.2k-19.0.1.ksplice1.el7.x86_64 Sun Sep 8 12:51:50 2019 openssl-1.0.2k-19.0.1.ksplice1.el7.x86_64 Sun Sep 8 12:51:50 2019 glibc-2.17-292.0.1.ksplice1.el7.x86_64 Sun Sep 8 12:51:49 2019 glibc-common-2.17-292.0.1.ksplice1.el7.x86_64 Sun Sep 8 12:51:48 2019 ksplice-helper-1.0.42-1.el7.x86_64 Sun Sep 8 12:51:45 2019 ksplice-known-exploit-detection-1.0.42-1.el7.x86_64 Sun Sep 8 12:51:43 2019 ★tuned-profiles-oci-recommend-2.11.0-5.0.2.el7_7.1.noarch Sun Sep 8 12:51:33 201 9 ★tuned-profiles-oci-2.11.0-5.0.2.el7_7.1.noarch Sun Sep 8 12:51:33 20193-6. cron設定
Oracle Autonomous Linuxでは各種自動化が行われているのでcron設定を確認する。
# ls -F /etc/cron* /etc/cron.deny /etc/crontab /etc/cron.d: 0hourly al-update ksplice raid-check sysstat uptrack /etc/cron.daily: 0yum-daily.cron* logrotate* man-db.cron* mlocate* /etc/cron.hourly: 0anacron* 0yum-hourly.cron* /etc/cron.monthly: /etc/cron.weekly:Oracle Autonomous Linux専用コマンドの1つ、al-updateが毎日12時29分に実行される。
/etc/cron.d/al-update# Daily cron job for AL updates 29 12 * * * root /usr/sbin/al-update &>/dev/nullKsplice用のcronファイルはあるが、2つともコメントアウトされている。
/etc/cron.d/ksplice# 5,35 * * * * root export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin && [ -x /usr/bin/ksplice ] && (/usr/bin/ksplice --cron user upgrade; /usr/bin/ksplice --cron xen upgrade)/etc/cron.d/uptrack# 16,46 * * * * root export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin && [ -x /usr/sbin/uptrack-upgrade ] && /usr/sbin/uptrack-upgrade --cronYumアップデートの自動化ツールyum-cronの設定ファイルは、毎時と毎日の2つがある。
# ls -F /etc/cron*/*yum* /etc/cron.daily/0yum-daily.cron* /etc/cron.hourly/0yum-hourly.cron*/etc/cron.daily/0yum-daily.cronif [[ ! -f /var/lock/subsys/yum-cron ]]; then exit 0 fi # Action! exec /usr/sbin/yum-cron/etc/cron.hourly/0yum-hourly.cronif [[ ! -f /var/lock/subsys/yum-cron ]]; then exit 0 fi # Action! exec /usr/sbin/yum-cron /etc/yum/yum-cron-hourly.confそれぞれの設定ファイルで
apply_updates = no
になっている。そのためyum-cronを実行しても、RPMパッケージはアップデートされないハズだ。# grep apply_updates /etc/yum/yum-cron*conf /etc/yum/yum-cron.conf:apply_updates = no /etc/yum/yum-cron-hourly.conf:apply_updates = noしかし
/var/log/yum.log
を見ると、アップデートされているように見える。このあたりは、今後の課題にする。/var/log/yum.logOct 02 12:29:13 Updated: python-oci-sdk.x86_64 2.5.1-1.el7 Oct 02 12:29:14 Updated: python-oci-cli.noarch 2.6.6-1.el7 Oct 02 12:29:15 Updated: sg3_utils-libs.x86_64 1.37-18.0.1.el7_7.1 Oct 02 12:29:16 Updated: kernel-tools-libs.x86_64 3.10.0-1062.1.2.el7 Oct 02 12:29:17 Updated: kernel-tools.x86_64 3.10.0-1062.1.2.el7 Oct 02 12:29:18 Updated: sg3_utils.x86_64 1.37-18.0.1.el7_7.1 Oct 02 12:29:28 Updated: al-config.noarch 1.0-1.0.28.el7 Oct 02 12:29:34 Installed: kernel-uek.x86_64 4.14.35-1902.5.2.2.el7uek Oct 02 12:29:35 Updated: python-perf.x86_64 3.10.0-1062.1.2.el7 Oct 02 12:29:45 Installed: kernel.x86_64 3.10.0-1062.1.2.el7 Oct 02 12:29:46 Updated: bpftool.x86_64 3.10.0-1062.1.2.el7 Oct 02 12:29:46 Updated: tzdata.noarch 2019c-1.el7
3-7. tuned設定
自動チューニングサービスのtunedは、Oracle Cloud Infrastructure独自のものが設定されている。
# tuned-adm active Current active profile: oci-rps-xps oci-busy-polling oci-cpu-power
profile_info
を指定するとプロファイル情報が表示されるが、サマリーなのでよく分からない。RPS/XPSだからネットワーク系か。# tuned-adm profile_info oci-rps-xps Profile name: oci-rps-xps Profile summary: Enable RPS/XPS conditionally in OCIそれぞれのプロファイルの実体は、以下のファイルで確認できる。本題では無いので説明しないが、どのような設定になっているか興味のある人は確認してほしい。
# ls -F /usr/lib/tuned/ balanced/ latency-performance/ oci-cpu-power/ throughput-performance/ desktop/ network-latency/ oci-rps-xps/ virtual-guest/ functions network-throughput/ powersave/ virtual-host/ hpc-compute/ oci-busy-polling/ recommend.d/おわりに
長くなったので、ひと区切り付けることにする。次回はKsplice設定や、Oracle Autonomous Linux固有の機能、また今回の調査では不明だった部分の調査を行いたい。
- 投稿日:2019-10-01T22:45:38+09:00
Linux基礎(パーミッション)
ファイルのPermissionと所有者の確認
lsコマンドでファイル情報の詳細情報を表示することができる。
#詳細情報を表示する場合はオプションlをつけるとよい。 $ ls -lアクセス権限
Linuxで作成されるファイルやディレクトリにはアクセス権(パーミッション)が設定される。これでユーザごとにファイルへのアクセスの許可または禁止を設定できる。アクセス権には、以下の3種類がある。
- ファイルへのアクセス権限
アクセス権 表記 説明 読み取り r read|ファイルの読み取りが可能(内容表示など) 書き込み w write|ファイルへの書き込みが可能(編集/更新/コピーなど) 実行 x execute|ファイルの実行が可能(プログラム/シェルスクリプトの実行)
- ディレクトリへのアクセス権限
アクセス権 表記 説明 読み取り r read|ディレクトリの読み取りが可能(ディレクトリに登録されているファイル名の表示) 書き込み w write|ディレクトリの書き込みが可能(新規ファイル作成、削除、名前変更など) 実行 x execute|ディレクトリに登録されているファイルへのアクセスが可能 ※ファイルへのアクセス権限にreadの許可があっても、ディレクトリのexecute許可がなければファイルにアクセスできない。
ファイルの種別は3つあり「-」はファイル、「d」はディレクトリ、「l」はリンクを表す。また、アクセス権は数値でも表すことができる。
記号表記 2進数 8進数 --- 000 0 --x 001 1 -w- 010 2 -wx 011 3 r-- 100 4 r-x 101 5 rw- 110 6 rwx 111 7 アクセス権限の変更
アクセス権限は、chmodコマンドにより変更することができる。
chmod [オプション] アクセス権 ファイル名
オプション 説明 -R 指定したディレクトリ以下の全てのファイルのアクセス権の変更
カテゴリ 説明 -R 指定したディレクトリ以下の全てのファイルのアクセス権の変更
カテゴリー 説明 u 所有者 g グループ o その他のユーザ a 全てのユーザ
定義 説明 + アクセス権の追加 - アクセス権の削除 = アクセス権の指定
- 投稿日:2019-10-01T14:25:03+09:00
xrdpではまる。X Server -- no display in range is available. xrdp_mm_process_login_response: login failed
WSLでwindows上にKALI LinuxのGUI環境を作ったところ、xrdpではまりました。
GUI環境のセットアップは無事完了し動作確認もできました。
翌日に利用したところログインできません。no display in range is available. xrdp_mm_process_login_response: login failedもしやのUser/Passの物忘れかと思い、何度も試しましたが一向にログインできません。
syslogを確認したところ、どうも原因はディスプレイに必要なセッションレンジに空きが無いようです。[20190919-00:00:00] [INFO ] starting Xorg session... [20191001-00:00:00] [ERROR] X server -- no display in range is availablexrdpの設定ファイルをのぞいてみます。
切断されたセッションを強制終了するKillDisconnectedがfalseになっていたので、これではゾンビセッションが増え続けそうです。パラメータをfalseからtrueに変更します。
更にセッションが足りないため、MaxSessionsを50から100に増やしました。sudo vi /etc/xrdp/sesmain.ini [Sessions] ;; X11DisplayOffset - x11 display number offset ; Type: integer ; Default: 10 X11DisplayOffset=10 ;; MaxSessions - maximum number of connections to an xrdp server ; Type: integer ; Default: 0 MaxSessions=100 ;; KillDisconnected - kill disconnected sessions ; Type: boolean ; Default: false ; if 1, true, or yes, kill session after 60 seconds KillDisconnected=true ;; DisconnectedTimeLimit - when to kill idle sessions ; Type: integer ; Default: 0 ; if not zero, the seconds before a disconnected session is killed ; min 60 seconds DisconnectedTimeLimit=0xrdpを再起動します。
$ sudo /etc/init.d/xrdp restart無事接続できました。
- 投稿日:2019-10-01T13:55:27+09:00
LPIC 101:Linuxパッケージ管理ツールコマンドに関するTips
Linuxにはパッケージ管理ツールというものが複数あり、LPIC 101試験ではその主要ないくつかのものについて学ぶ必要があるが、とにかくわかりにくい。同じような機能のオプションなどが異なる表記だったり、逆に同じ表記なのに微妙に/大きく異る機能だったりする。
このエントリでは、少しでも覚えやすくするために、個人的に2,3の似たような機能やサブコマンドを整理したい。
なお、メインのコマンドに続けて指定する要素は、dpkgでは「アクション」、rpmでは「オプション・併用オプション」、apt系・yum・zypperでは「サブコマンド」と呼ばれるが、面倒なので全部「サブコマンド」と呼ぶが、dpkgとrpmに関しては本来このような呼び方をしないので注意されたい。
また、yumの後継者的位置づけであるdnfについては、LPIC 101範囲では詳しく問われず、yumとほぼ同じであるため、割愛する。パッケージ更新関係
パッケージを更新するサブコマンドをコマンドごとに一覧にしてみた。同時に、リポジトリ情報の更新サブコマンドについても表にした。
サブコマンド\機能 パッケージ更新 リポジトリ更新 dpkg -i(--install) *1 なし apt upgrade update rpm -U(--upgrade)/-F(--freshen) *2 なし yum update なし zypper update freshen *1 新しいバージョンを指定してインストールする
*2 -Uは対象が存在しなければインストール、-Fは存在しなくてもインストールしないlistサブコマンド
listという言葉を含むサブコマンドがたくさんあり、何をするのかがコマンドごとに異なっていてわかりづらいものを、コマンドごとに一覧にした。
またrpmコマンドの併用オプションにはファイルを一覧表示するものが複数あるため、それも示した。
コマンド 機能 dpkg -l(--list) インストール済パッケージを検索・表示 dpkg -L(--listfiles) 指定パッケージからインストールされたファイルを一覧表示 apt list パッケージを一覧表示 rpm -q -l(--list) 指定パッケージに含まれるファイルの一覧表示 rpm -q -c(--configfiles) 設定ファイルのみを一覧表示 rpm -q -d(--docfiles) ドキュメントファイルのみを一覧表示 yum list 全パッケージ情報の一覧表示 パッケージ情報表示サブコマンド
パッケージの情報を表示するサブコマンドは、コマンドごとに異なる表記。
コマンド サブコマンド dpkg -s(--status) apt-cache show, showpkg apt show rpm(インストール/アップグレードモード) -v rpm(照会モード) -i(--info) yum info zypper info その他
- yum check-updateとzypper list-updates(lu)は同じようなコマンド(前者は単数形、後者は複数形なことに注意)
- searchはdpkgだけ他と異なり、検索したファイルがどのパッケージからインストールされたかを表示する
主要参照文献
- 中島能和著、濵野賢一朗監修『Linux教科書 LPICレベル1 Version5.0対応』(翔泳社、2019年)
- 投稿日:2019-10-01T11:32:33+09:00