AIX への sudo コマンド導入
sudo の導入です。なぜ唐突に sudo の導入なのか?ですが、
依頼があり手順をまとめる必要があったからです。
ネット等で調べましたが、意外にまとまった手順は無いように思い、せっかくなので久しぶりに、と
筆を執りました(キーボードをとった?)
ところで「筆を執る」って今も言いますかね。言わない。。。?
#環境
AIX 6.1 TL7 SP6 (※2020/03時点でサポート切れです。。 7.1 or 7.2 を使いましょう!)
#導入の流れ
- 前提パッケージ・メディアの入手
- AIX の rpm コマンドの更新
- OpenSSL の導入(または更新)
- バーチャルパッケージの更新
- sudo の導入
##1.前提パッケージ・メディアの入手
意外に手間取るメディアの入手です。
探すのも面倒ですし、バージョンもURL も結構変わる?ので何を導入するにしても困りますね。
下記の情報もすぐに古くなるだろうとは思いますが、無いよりはましということで。
必要なメディアは以下の通りです。
概要 | ファイル名 | 配置場所(例) |
---|---|---|
AIX 用 rpmコマンドパッケージ | rpm.rte.4.13.0.10 | /work/sudo/AIX-rpm |
OpenSSL | openssl.base | /work/sudo/openssl |
openssl.license | ||
openssl.man.en_US | ||
sudo 関連 rpm ファイル | bash-5.0-1.aix6.1.ppc.rpm | /work/sudo/sudo |
cyrus-sasl-2.1.26-3.aix6.1.ppc.rpm | ||
db-6.2.32-2.aix6.1.ppc.rpm | ||
gettext-0.19.8.1-3.aix6.1.ppc.rpm | ||
glib2-2.56.1-2.aix6.1.ppc.rpm | ||
info-6.4-1.aix6.1.ppc.rpm | ||
libffi-3.2.1-3.aix6.1.ppc.rpm | ||
libgcc-6.3.0-2.aix6.1.ppc.rpm | ||
libiconv-1.14-2.aix6.1.ppc.rpm | ||
libstdcplusplus-6.3.0-2.aix6.1.ppc.rpm | ||
libunistring-0.9.9-2.aix6.1.ppc.rpm | ||
libxml2-2.9.9-1.aix6.1.ppc.rpm | ||
ncurses-6.1-2.aix6.1.ppc.rpm | ||
openldap-2.4.46-2.aix6.1.ppc.rpm | ||
sudo-1.8.27-2.aix6.1.ppc.rpm | ||
xz-libs-5.2.4-1.aix6.1.ppc.rpm | ||
zlib-1.2.11-1.aix6.1.ppc.rpm |
入手元ですが、 頑張れば AIX Toolbox for Linux applications ページからたどれたりします。 (FAQ 参照)
が、そんなところは普通見ませんよね。
- AIX 用 rpm コマンドパッケージ
- OpenSSL
- sudo 用 rpm パッケージ
※補足
・ OpenSSL のページは時々止まっていたりするようです。やれやれです。
・ OpenSSL のページは IBM ID が必要ですので、なければ作成しましょう。
・ 各ファイルのバージョンに関しては完全に一致していなくても大丈夫です。導入時点で新しいものを一通りそろえればよいでしょう。
(上の表の情報は 2019年の終わりごろの情報?かもしれません?)
※さらに補足
AIX-rpm は rpm コマンドを提供するだけではなく、 rpm パッケージから AIX のネイティブライブラリ等を見えるようにします(だそうです。。。 だそうだ、と理解しています。。。)
OpenSSL は sudo 関連の rpm パッケージの前提ライブラリ libcrypt.a のために入れますが、 これは AIX 用のパッケージです。
##2.AIX の rpm コマンドの更新
オープンソース系のパッケージを扱う場合、 AIX の rpm コマンドは新しい方が良いようです。
###(1) .toc ファイル作成
ダウンロードしてきた AIX 用のファイルからインストール・更新する場合、まぁ一応 .toc ファイル(要はファイルリスト)を作成します。 やらなくても大丈夫だとは思いますが念のため。
なお、以下の作業はすべて root で実行します。
# cd <該当ディレクトリ>
# rm -f .toc
# inutoc .
# ls -l .toc
.toc ファイルができていることを確認します。
###(2)ソフトウェアの更新
smit から更新します。
# cd <該当ディレクトリ>
# smitty update_all
入力ディレクトリーはカレントディレクトリを指定します。(. : ピリオド)
インストール済みソフトウェアを最新レベルに更新 (すべて更新)
入力フィールドに値を入力または選択してください。
必要な変更を行った後、ENTER キーを押してください。
[入力フィールド]
* ソフトウェアの入力デバイス/ディレクトリー [.] +
まずはプレビューです。 一部だけ色を変える方法がわからないので抜粋しますが、以下のように指定します。
- プレビューだけ行う (更新操作は行わない) : はい
- ソフトウェアの更新をコミットする : いいえ
- 置換ファイルを保存する : はい
- 新規ご使用条件に同意する : はい
インストール済みソフトウェアを最新レベルに更新 (すべて更新)
フィールドの値を入力または選択してください。
変更を完了したら ENTER キーを押してください。
[入力フィールド]
* ソフトウェアの入力デバイス/ディレクトリー .
* 更新するソフトウェア _update_all
プレビューだけ行う (更新操作は行わない) はい +
ソフトウェアの更新をコミットする いいえ +
置換ファイルを保存する はい +
必要条件ソフトウェアを自動的にインストールする はい +
スペースが必要な場合にファイルシステムを拡張する はい +
インストールを検証してファイル・サイズを確認する いいえ +
詳細出力する いいえ +
複数ボリュームを処理する はい +
新規ご使用条件に同意する はい +
新規ご使用条件をプレビューする いいえ +
エンターを押すと、 「よろしいですか?」 と確認画面が表示されますので、再度エンターでプレビューを実行します。
プレビューが問題なく 「OK」で終われば、 Esc + 3 で上記の画面に戻ってきます。
戻った画面上で、 「プレビューだけ行う」 を 「はい」→「いいえ」に変更し、エンターを押します。(確認画面もエンター)
これで実際に導入されます。
##3.OpenSSL の導入(または更新)
OpenSSL の導入も、基本的には AIX-rpm と同様に実施します。
###(1) .toc ファイル作成
OpenSSL 関連ファイルの場所で、 .toc ファイルを作成します(手順は前述の AIX-rpm 部分を参照)
###(2) OpenSSL の導入
更新の場合は AIX-rpm の手順と全く同じです。
新規導入の場合、たどるメニュー構成がやや異なりますが、それ以外は同じです。
# smitty install
→ ソフトウェアのインストールおよび更新
→ ソフトウェアのインストール
次に、「ソフトウェアの入力デバイス/ディレクトリー」 の指定画面が表示されますので、
AIX-rpm のケースと同じく カレント (".") を指定します。
導入前の画面も、ほぼ同じです。 インストールするソフトウェア欄が [_all_latest] となっているぐらいです。
ソフトウェアのインストール
フィールドの値を入力または選択してください。
変更を完了したら ENTER キーを押してください。
[入力フィールド]
* ソフトウェアの入力デバイス/ディレクトリー .
* インストールするソフトウェア [_all_latest] +
プレビューだけ行う (インストール操作は行わない) はい (※プレビュー OK 後、いいえ) +
ソフトウェアの更新をコミットする いいえ +
置換ファイルを保存する はい +
必要条件ソフトウェアを自動的にインストールする はい +
スペースが必要な場合にファイルシステムを拡張する はい +
同一または新規バージョンを上書きする いいえ +
インストールを検証してファイル・サイズを確認する いいえ +
対応する言語のファイルセットを含める はい +
詳細出力する いいえ +
複数ボリュームを処理する はい +
新規ご使用条件に同意する はい +
新規ご使用条件をプレビューする いいえ +
ここで、プレビュー、並びに導入を実施します。
##4.バーチャルパッケージの更新
バーチャルパッケージ、といっても何のことかわかりませんね。
興味がある方はこちらをどうぞ。
・Understanding the AIX Virtual RPM Package for rpm.rte
AIX では、 上記のように smit ( installp コマンド ) で各種パッケージ類を管理しますが、
オープンソース系のパッケージは rpm で管理します。
rpm 系のパッケージからも、 AIX ネイティブのライブラリーなどを参照するのですが、
管理方法が違うため、 rpm の世界から installp の世界をのぞけない、という問題が発生します。
それを解消するのが AIX-rpm コマンドパッケージです。(だと理解しています)
通常、 AIX-rpm パッケージを導入する際に、内部的に以下の手順の updtvpkg コマンドが発行されるはずですが
効いていないこともあるらしく、手動で実行するのがおすすめです。
# /usr/sbin/updtvpkg
お待ちください...
そっけないです。
##5. sudo の導入
ここまでくればあとは rpm コマンドで入れるだけです。
sudo 関連のファイルが配置されているディレクトリに移動し、 rpm 実行です。
一応先にテストしましょう
# rpm -ivh --test *.rpm
正常な場合は以下のような表示になります。
# rpm -ivh --test *.rpm
Preparing... ################################# [100%]
前提条件に不備がある場合は以下のようになることがあります。(不備内容によりメッセージは異なります)
# rpm -ivh --test *.rpm
Preparing... ################################# [100%]
installing package libstdc++-6.3.0-2.ppc needs 64MB on the /opt filesystem
installing package ncurses-6.1-2.ppc needs 86MB on the /opt filesystem
installing package glib2-2.56.1-2.ppc needs 208MB on the /opt filesystem
installing package gettext-0.19.8.1-3.ppc needs 237MB on the /opt filesystem
installing package libiconv-1.14-2.ppc needs 240MB on the /opt filesystem
installing package bash-5.0-1.ppc needs 250MB on the /opt filesystem
installing package info-6.4-1.ppc needs 252MB on the /opt filesystem
installing package xz-libs-5.2.4-1.ppc needs 255MB on the /opt filesystem
installing package libxml2-2.9.9-1.ppc needs 274MB on the /opt filesystem
installing package libunistring-0.9.9-2.ppc needs 278MB on the /opt filesystem
installing package sudo-1.8.27-2.ppc needs 284MB on the /opt filesystem
上記の例は /opt のファイルシステム容量不足ですね。
chfs -a size=3G /opt
などで拡張しましょう
なお、依存関係エラーが出た場合はファイルが足りませんので、足りないものを AIX toolbox for Linux Applications からとってきましょう。
実際の導入は以下のような感じです。
# rpm -ivh *.rpm
Preparing... ################################# [100%]
Updating / installing...
1:libgcc-6.3.0-2 ################################# [ 6%]
2:zlib-1.2.11-1 ################################# [ 12%]
3:db-6.2.32-2 ################################# [ 18%]
4:cyrus-sasl-2.1.26-3 ################################# [ 24%]
3004-686 グループ "ldap" は存在しません。
5:openldap-2.4.46-2 ################################# [ 29%]
6:libffi-3.2.1-3 ################################# [ 35%]
7:libstdc++-6.3.0-2 ################################# [ 41%]
8:ncurses-6.1-2 ################################# [ 47%]
9:glib2-2.56.1-2 ################################# [ 53%]
10:gettext-0.19.8.1-3 ################################# [ 59%]
11:libiconv-1.14-2 ################################# [ 65%]
add shr4.o shared members from /usr/lib/libiconv.a to /opt/freeware/lib/libiconv.a
add shr.o shared members from /usr/lib/libiconv.a to /opt/freeware/lib/libiconv.a
add shr4_64.o shared members from /usr/lib/libiconv.a to /opt/freeware/lib/libiconv.a
/
12:bash-5.0-1 ################################# [ 71%]
## Binary "bash" is avaible in 32bit and 64bit ##
The default used is 64bit
If 32bit is needed, please change symbolic link
for "bash" in /bin directory
To do that type:
# rm -f /bin/bash
# ln -sf /opt/freeware/bin/bash_32 /bin/bash
13:info-6.4-1 ################################# [ 76%]
Please check that /etc/info-dir does exist.
You might have to rename it from /etc/info-dir.rpmsave to /etc/info-dir.
14:xz-libs-5.2.4-1 ################################# [ 82%]
15:libxml2-2.9.9-1 ################################# [ 88%]
16:libunistring-0.9.9-2 ################################# [ 94%]
17:sudo-1.8.27-2 ################################# [100%]
完了後、コマンドが使えるようになっていることがわかります。
# which sudo
/usr/bin/sudo
# which visudo
/usr/sbin/visudo
sudo 自体の使い方は割愛です。というか、正直知りません。
常に root を使う悪の SE ですので。
Linuxだと単に rpm や yum、dnf で入れればOKという世界だと思いますので、
意外にめんどくさくはありますが、まぁそもそも違う OS ですのである程度は仕方がないと思います。
(というか、まぁよく頑張っているのではないでしょうか。。。? )
Linux も、 libc とかで依存関係が狂った日には もう手も足も出ないですし…
というわけで、 sudo でした!
最後は sudo 恒例のおまじない?で。
$ sudo su -