9-5. システム管理とファイル操作 (1) マシンのシステムログ管理 '97〜 * 概要 syslogd デ−モンによるログとアプリケ−ション固有のログがある。後者はWWWホスト では httpd デ−モンしかないはずである。CERN の場合は /etc/httpd.conf に ErrorLog 等とログ・ディレクトリを指定する。ログファイルは httpd-errors.Jun1396 等と日付け が入って記録される。これらのログは、そのままWWWホストにおいて置くのでなく、管 理者用EWSに転送する必要がある。多分 cron による電子メ−ルでファイルを送るやり 方をとることになるだろう。 /etc/httpd.conf --------------------------------------------- | | |#AccessLog /usr/nix/www/logs/httpd-log << # はコメントになる。 |ErrorLog /usr/nix/www/logs/httpd-errors << エラ−ログ吐き出し。 | | 次に syslogd について述べる。このデ−モンは自身の計算機の状態を報告する。 DNS の named、電子メ−ルの sendmail 等、エラ−や起動しましたとログを出す。 他ロッグイン やネットワ−ク・サ−ビスのログをとることができる。 使用するには /etc/syslog.conf ファイルにどんなログをとりたいか記述し、デ−モンを稼働させればよい。デ−モンがち ゃんと稼働しているかチェックするには % syslogd -d とやればコンソ−ルに表示される ので、syslog.conf の記述ミスなど分かる。 % ps -e PID TTY TIME COMD 0 ? 0:01 sched 1 ? 0:01 init 61 ? 0:00 syslogd << システムログ管理デ−モン。 /etc/syslog.conf << INDY のデフォルトの状態。 ------------------------------------------------------------ |# Formats: selectoraction ファイル名は何でもいいが、 |# selectorfilteraction cronとの関係に注意したい。 | ↓ |kern.debug |/usr/sbin/klogpp /var/adm/SYSLOG |*.debug;kern.none /var/adm/SYSLOG |*.crit ↑ |/var/adm/sysmonpp /var/adm/syslog | ↑ ただし kern(el).none は除くという意味。 別のファイルにしてみた。 % ls /var/adm SYSLOG klogpp mkpts sulog utmp wtmp crash lastlog sa sysmonpp utmpx wtmpx 注.|/usr/sbin/klogpp と |/var/adm/sysmonpp はログを分かりやすくするための フィルタ−である。IRIX 5.3 の syslog.conf には最初からあったが、Apollo や Solaris 2.5.1 にはフィルタ−の記述はなかった。 制御ファイルの kern.debug の kern 部は Facility と言う。 kern はEWSのカ−ネル のログを対象にする。auth だと login や su コマンドからのログ、mail では sendmail からのログを対象にする。これは決まりになっている。他 user, daemon, cron、 それに 予約になっている local0〜7 がある。 Facility 部を * を指定すると全部見張ることに なる。kern.debug の debug 部はログの出力レベルである。debug 指定はプログラム開発 のデバッグ出力であり通常は info から上のレベルのログで十分である。レベルは次のよ うになっている。 emerg, alert, crit, err, warning, notice, info, debug, ( none ) emerg が一番ログの緊急度が高い。ではそれぞれどう違うのか。どの程度のログが出てど う役立つのか、これはやってみないと分からない。各自試行錯誤するしかないだろう。ま あ一つの考え方として、WWWのようなホストでは稼働させるデ−モンは少ない。ロッグ インだってほんのわずかなはずである。Facility は * 指定して全部とってしまえばいい。 出力レベルは * 指定できるマシンもあれば、できないのもある。 全部の出力レベルを対 象にするには * でなく、debug にしておけばよい。上のレベルのログもとってくれる。 *.debug << これで全部のログをとる。ここら辺り少し勘違い。99年5月修正。 ちょっと勘違いしていた。例えば emerg と debug ではログの出る量が違うと思っていた。 debug だと "エラ−です" 程度で、emerg だと "こうこう、こういう理由でエラ−が起き てます" といったように、出力レベルが高い程より詳細にログが出るのかと思っていたの だ。 違う、プログラムから auth の emerg 指定で、これこれログを出しますということ なのだ。つまりプログラムを組む時に、 こういうエラ−の場合は致命的だから emerg で ログを出しましょうということなのだ。 自身のマシンのログはプログラムから /dev/log 経由で syslogd に渡される。 このデ− タはただの ASCII テキストで [auth alert] などと記述されているらしい。 多分何か出 るだろうと思い、試しに % ls > /dev/log とやってみたら /var/adm/SYSLOG にそのまま 記述された。syslogd は syslogd 同士で別のマシンにログを転送することもできる。 こ の場合は 514/UDP を双方使う。しかし UDP を使うとは、いささか。できれば安全のため TCP パケットの方を使って欲しかった。 * システムログを他のEWSに送る syslogd syslogd こっちで受けて /usr/adm/syslog に記録す ------- 送る ------- る。hostA のシステムログは、syslog ファ INDY |hostA| → |hostB| Apollo イルには hostA 何某と記録される。下記の ------- ------- syslog を見られたい。hostB と hostAが混 | | ざっている、書き間違いではない。 --------*---------------*------ /etc/syslog.conf /etc/syslog.conf --------------------------------------- ------------------------------------ |kern.debug |/usr/sbin/klogpp @hostB |kern.debug /usr/adm/syslog |*.debug;kern.none @hostB |*.debug;kern.none /usr/adm/syslog |*.crit |/var/adm/sysmonpp @hostB |*.crit /usr/adm/syslog ↑ ↑ ログの送り先ホスト名 ファイル名は何でもよい。 hostB $ /usr/ucb/tail /usr/adm/syslog Sep 21 16:16:01 hostB syslogd: restart Sep 21 16:18:26 hostB named[1210]: restarted Sep 21 16:18:27 hostB named[1211]: No root nameservers for class 1 | Sep 21 16:43:07 hostA.nix.co.jj syslogd: restart << ドメイン名でちゃんと記録 | されていることにも注目!。 Sep 21 16:45:11 hostA named[1084]: starting Sep 21 16:45:11 hostA named[1084]: bind(vs, 0.0.0.0[53]): Address already in use Sep 21 16:46:06 hostA su[1087]: failed: ttyq0 changing from katou to root [ Apollo の場合の注意 ] $ /etc/syslogd & を稼働させると、 Apollo ではエディタ環境では /usr/adm/syslog フ ァイルは開けなくなる。/usr/ucb/tail コマンドでは見ることはできる。それに/usr/adm ディレクトリには最初 syslog というファイルはない。手作業で syslog ファイルを作成 しておく。$ wd /usr/adm、$ crf syslog とやればいい。 * 他ホストからのアクセスのログをとる [ telnet, rlogin アクセス ] telnet アクセスがかかると、先ず rlogind により、ロッグインのログがとられる。ログ は /etc/default/login ファイルと syslogd により、 /var/adm/SYSLOG ファイルにとら れる。以下は INDY IRIX 5.3 での話であり、 Solaris 2.5.1 でも同様なファイルで制御 されるが、挙動は少し異なるようである。 hostA /etc/inetd.conf --------------------------------------------------------------------- | | |telnet stream tcp nowait root /usr/etc/telnetd telnetd |login stream tcp nowait root /usr/etc/rlogind rlogind | | hostA /etc/default/login ------------------------- |#CONSOLE=/dev/console << どこからでも誰でもロッグインできる設定。 | | |SYSLOG=FAIL << ロッグインに失敗した場合のみ記録する。 | | ALL にすると全てのロッグインを記録する。 hostB $ telnet hostA login: root Password: UX:login: ERROR: Login incorrect | hostB から root でロッグイン しようとして失敗した。 hostA % cat /var/adm/SYSLOG ↓ Sep 21 13:41:08 6E:hostA login[812]: failed: ?@hostB as root INDY ------- ------- ※ hostA の /etc/hosts ファイルに |hostA| <------ |hostB| Apollo "192.168.1.2 hostB" と書いてあ inetd ------- telnet ------- ればシステムログ・ファイルにホ syslogd |.1 や ftp | .2 スト名で記録される。 ---------*-----------------*--- 192.168.1.0 [ ftp, tftp, shell アクセス ] ftp なら ftpd デ−モンのログが取られる。tftp, shell は tftpd, rshd がそれぞれ対 応する。下記で ftpd -l とオプションがついているのが、ログをとる指示である。 この 場合のログはただどこから ftp アクセスがあったか記録するだけである。 もっと詳細な ログを取りたい場合は -ll を指定する。Solaris 2.x の場合は -ld である。inetd.conf の記述を変更したら、% kill -HUP inetd_pid とやり inetd.conf を再読み込みすること。 hostA /etc/inetd.conf -------------------------------------------------------------------- |ftp stream tcp nowait root /usr/etc/ftpd ftpd -l |login stream tcp nowait root /usr/etc/rlogind rlogind hostA % cat /var/adm/SYSLOG | Sep 21 13:23:24 6D:hostA ftpd[783]: connection from hostB Sep 21 13:23:28 6E:hostA ftpd[783]: FTP LOGIN FROM hostB as root Aug 8 18:18:43 6D:hostA ftpd[829]: connection from 192.168.1.2 Aug 8 18:18:58 6E:hostA ftpd[829]: FTP LOGIN FROM 192.168.1.2 as root * su コマンドのログ このコマンドは root ユ−ザに一時的になる場合に通常用いる。機能的には root に限ら ず bin でも nobody でも何にでもなることができる。nobody ユ−ザになっても仕方ない のだが。/var/adm/sulog ファイルには su ロッグイン時のログが失敗、 成功とも記録さ れる。ただしロッグアウトの記録はとられない。それと sulog は syslogd とは関係せず にログがとられる。su ロッグインして作業が済んだら exit か何かで抜けておくように。 syslogd によりとられるログは /var/adm/SYSLOG である。/etc/default/su 内の SYSLOG の記述により制御される。念のため言っておくと、 ここは INDY IRIX 5.3 で試したこと である。 /etc/default/su ファイルは Solaris 2.5.1 も同じような記述だが、解釈は少 し違うようである。SYSLOG ファイルは rm で消してしまった場合、 syslogd を再起動し ないと、このファイルはできない。touch で作ってもログが記録されないので注意したい。 hostA /etc/default/su << SunOS 4.1.x にはない。/etc/default/login もない。 ---------------------- |SULOG=/var/adm/sulog << su ロッグインのログ。このファイルは消しても su ロ | | ッグインするとまたできる。全て /var/adm/SYSLOG に |SYSLOG=ALL ログをとる。FAIL 指定にするとパスワードを間違えた 場合のみログをとる。 login: katou | hostA % su << % su root ということに解釈される。 パスワード:henomohe hostA % cat /var/adm/sulog << sulog は消してもまた su ロッグインした時にできる。 SU 07/30 14:43 + ttyq3 root-bin << root から bin ユ−ザになっている。 SU 07/30 14:43 + ttyq3 root-taro << % su taro をやった。 | SU 09/21 14:19 + ttyq0 katou-root << katou ユ−ザが root ロッグインしたよん。 ↑ パスワードを間違えると "-" が記述される。 hostA % cat /var/adm/SYSLOG ↓syslogd を再起動した。 Sep 21 14:10:33 6F:hostA syslogd: restart Sep 21 14:22:47 5E:hostA su[879]: failed: ttyq0 changing from katou to root | Sep 21 14:47:46 5E:hostA su[890]: succeeded: ttyq3 changing from katou to root Sep 21 14:49:44 3F:hostA syslogd: going down on signal 15 ↑syslogd を止めました。 (2) 続システムログ管理 `26/09 * Windows パソコン用 syslogd デ−モン `25/05 SSL-VPN 装置の A-Gate を実践配備するため、Syslogを内部ネットワ−クのホストに送る 設定をしていた。Windows OS用の syslogdデ−モンなんてあるのかしゃんと思っていた、 ところ A-Gate のドキュメントに、添付のCD-ROMにフリ−ウェアの"Kiwi Syslog Daemon" があり、それを使うことができると書いてあった。 それで http://www.kiwisyslog.com/ を見るとフリ−ソフトのスタンダ−ド版とサ−ビス版があった。スタンダ−ド版をとりあ えず Windows 2000 にダウンロ−ドして展開してみた。すぐにインスト−ルされて、画面 にアイコン {Kiwi Syslog Daemon} ができた。クリックするとそれで syslogdデ−モンが 稼働した。稼働の確認は Ctrl+Alt+Del キ−で出てくる画面の "Windows タスクマネ−ジ ャ" で見ることができる。サ−ビス版は Windows 起動時にデ−モンとして稼働する。 A-Gate の Syslog を Enable にして、 適当にユ−ザでロッグインしてアクセスしたりし てみた。"Kiwi Syslog Daemon" の画面にパッとログがでてきた。 ログは次のところにで きる。先ずは1つのファイルとしてC:\Program Files\Syslogd\Logs\SyslogCatchAll.txt。 それに毎日決めた時間、毎週とか月とかにログをファイルでセ−ブすることもできる。こ れは C:\Program Files\Syslogd\Dated logs\ 以下に記録される。UNIXのログ管理の ロ−テ−トさせる機能はないみたいである。 [Alarms]->[Disk space monitor] でディス クの残り容量をチェックしてログを溜めるのを中止させるぐらいである。ログはフィルタ −して、キ−ワ−ドのマッチングにより管理者にメ−ルで知らすこともできる。 製品版だとファイルへのログ出力を毎秒 400〜600 エントリできることが確認されている と記載されていた。製品版の方が性能的に高くなっているが、我々ぐらいではフリ−ソフ ト版で十分だろう。このソフト、国内ではジュピタ−テクノロジ−(株)が扱っている。こ このホ−ムペ−ジの "Syslog 談話室" も一度目を通すとよい。 この会社のサイトには日 本語のドキュメントもあった。http://www.jtc-i.co.jp/quickguide に PDFで約百ペ−ジ。 ログを解析する Sawmill という製品ソフトもあった。 ユニバ−サルログ解析ソフトとい うことで、FireWall-1 のログなんかも対象に解析できてしまうとか。 因このソフトの価 格は Sawmill v7 Professional 5プロファイル版が 198,000 円である。 * ログをどう管理するか どうもログはバックアップソフトまで使う必要はないのでないか。適当な信頼性のちょっ と高いファイルサ−バに入れておけばいいい。ログを管理するソフトがあるようだが、こ れでログの内容を検索したりして、ちゃっと見れるようにすればいいのでないか。しかし syslog はロ−テ−ションしていき、古いのは消されていく。 何をいつまで保存しなけれ ばいけないのか、それが問題である。消さずにファイル名を変えて残していくとするとロ グはどんどん溜まる。ディスクが一杯になってくる。そうなるとテ−プに落とすしかない。 何らかのポリシ−を決めてテ−プにバックアップしたい、でないとすっと所望のデ−タを 探すことができない。ここでバックアップソフトの出番となる。しかしログはバックアッ プソフトで管理するといっても、いついつのぐらいしか出せないぞ。 日本版SOX法のセミナ−で紹介していたログを管理するソフト。いろんなサ−バのログ を syslog で持ってきて集中管理する、Logstorage という。 インフォサイエンス(株)が 開発した国産ソフト。2002/01 に Ver. 1.0 リリ−ス。syslogでこのソフトを入れたマシ ンに送って、ログをXMLに変換して RDBMSで管理し、ブラウザで見れるようにし検索も できるようにする。ソフトは Java 記述なので、Java実行環境があれば動く。syslogを管 理するソフトというのは、あまり聞かなかった。似たようなフリ−ソフトは何か探せばあ るような気がするが。RDBMS は Oracle 8i または PostgreSQL。お値段は65万円からと か120万円とか。ちょっと高い気がする。 机をごそごそしてたら展示会で Ver.2 のサ ンプルの CD をもらっていた、Solaris, Linux 用。http://www.logstorage.com/。 * V210 Solaris 9 の syslog について 「Solaris 9 システム管理ハンドブック」の"第8章ログの取得と監視"、"8.1 syslogの仕 組み" に詳しく乗っている。Solaris 2.6 では cron で /usr/lib/newsyslog を実行して、 この newsyslogスクリプトでログをロ−テ−ションさせている。直感的にああ回している なと分かる記述である。Solaris 9 でも同じだと思い込んでいたら、仕組みは違っていた。 /usr/lib/newsyslog ファイルには"This script is no longer used -- see logadm(1M)"、 もはやこのファイルは使われてない、logadm を見よと書かれていた。 # ps -ef syslogd が /etc/syslog.conf を見 root 168 1 0 ... /usr/sbin/syslogd -t てmail.debugで sendmail のログを /var/log/syslog に吐き出す。 /etc/syslog.conf ------------------------------------------------------------- |*.err;kern.notice;auth.notice /dev/sysmsg |*.err;kern.debug;daemon.notice;mail.crit /var/adm/messages |*.alert;kern.err;daemon.err operator |*.alert root このファイルはOSのまま。 |*.emerg * | |#auth.notice ifdef(`LOGHOST', /var/log/authlog, @loghost) |mail.debug ifdef(`LOGHOST', /var/log/syslog, @loghost) | |ifdef(`LOGHOST', , |user.err /dev/sysmsg |user.err /var/adm/messages |user.alert `root, operator' |user.emerg * |) /var/spool/cron/crontabs/root デフォルトのまま、毎日午前3時10分に logadm コ ------------------------------ マンドを実行する。実行内容は /etc/logadm.conf で |10 3 * * * /usr/sbin/logadm ある。ただ今の日付けは 2006/09/27昼。logadm.conf | | の中を見ると日付けが変わっているのが見える。動的 に logadm コマンドが日付けを付け、syslogファイル を1週間毎にロ−テ−ションさせているようである。 /etc/logadm.conf -------------------------------------------------------------------------------- |/var/log/syslog -C 8 -P 'Tue Sep 26 18:10:00 2006' -a 'kill -HUP `cat /var/r... |/var/adm/messages -C 4 -P 'Mon Sep 11 18:10:00 2006' -a 'kill -HUP `cat /var... | | # ls -l /etc/logadm.conf -rw-r--r-- 1 root sys 1129 9月 27日 03:10 /etc/logadm.conf # ls -l /var/log/syslog* 2006年9月の Mail-Store のログの実際。 -rw-r--r-- 1 ... 1653057 9月 27日 15:12 /var/log/syslog << 現在使用中。 -rw-r--r-- 1 ... 36885696 9月 27日 03:09 /var/log/syslog.0 単位 Byte -rw-r--r-- 1 ... 26813916 9月 20日 03:09 /var/log/syslog.1 -rw-r--r-- 1 ... 14649327 9月 13日 03:09 /var/log/syslog.2 << これは約14MB。 -rw-r--r-- 1 ... 28982741 9月 6日 03:09 /var/log/syslog.3 -rw-r--r-- 1 ... 17266649 8月 30日 03:09 /var/log/syslog.4 何通メ−ルを出 -rw-r--r-- 1 ... 24301925 8月 23日 03:08 /var/log/syslog.5 して外から来た -rw-r--r-- 1 ... 22969748 8月 16日 03:09 /var/log/syslog.6 か調べたいのだ -rw-r--r-- 1 ... 17974798 8月 9日 03:08 /var/log/syslog.7 が、どうやるの。 * ログの長期保存 上の syslog で10月の4日が来ると、ロ−テ−ションにより syslog.7 は押し出されて 消える。これらログをずっと残すにはどうしたらいいか。ロ−テ−ションする時にsyslog を syslog.0 にする変更他、日付けをいれたファイル名でも作成する。例えばこんな感じ syslog.2006.09.27 である。更に何のログか分かるようにもしておきたい。機能別やサ− バ別で頭文字をとってファイル名の先に付ける。メ−ルストアならms_syslog.2006.09.27 というのはどうか。メ−ルリレ−は mr、ファイウォ−ルは fw、侵入防御装置は装置名の DefensePro から dp、SSL-VPN は sv、InterScan は is という感じである。 そしてこの ログはログを保存するマシンに転送する。syslogd でやれればそれでいいし、できなけれ ば scp とかのコマンドを使う。 上の syslog はパソコン台数約500、皆にメ−ルアドレスがあるわけでないが、普通の 製造業でのメ−ルのログである。毎週20メガバイト前後。一方、WWWサ−バのアクセ スは月に100メガバイト、Apacheでアイコンの画像など除けたログである。画像なんか もログをとると倍になる。メ−ルはメ−ルストアの分であり、メ−ルリレ−もとればいい かも知れないが、そこまではいらないだろうということでこれまでは取っていない。とい うことでメ−ルとWWWのログで月に200メガバイト。ファイアウォ−ルや侵入防御装 置のログを取ろうとすると、サイズは未知数である。数百メガバイトのログなら、最近の パソコンのディスクは 80 GB とか 100 GB とかあるのでどうってことないが。 /usr1/log/ms/ms_syslog.2006.09.27 更にこれらを単純にテ−プで取るなり、バ 〃 /dp/dp_syslog.2006.09.27 ックアップソフトでテ−プで取るなりする。 (3) パスワ−ド管理 '97〜 * パスワ−ドの基本 ・パスワ−ドは小文字と大文字の混在はよい、特殊文字もいい。数字も含めて6〜8文字 である。Solaris 2.6 では /etc/default/passwd に最低の長さが6と定義されている。 ・パスワ−ドの設定はアカウントを作った後、そのユ−ザが passwd コマンドで行う。ま たはル−トならば、% passwd katou と任意のユ−ザのパスワ−ドを設定、変更できる。 ・パスワ−ドをなしにするには、/etc/passwd のパスワ−ド・フィ−ルドをエディタで消 去する。暗号化されているが、そのまま消してしまえばいい。 ・ロッグインシェル部に何も記入しないと /bin/sh が起動される。 UNIXの種類マシ ンの種類によって違うことになっているかも。 ・/etc/passwd のパスワ−ド・フィ−ルドの記述でロックをかけることができる。デフォ ルトで daemon や bin などには最初からかかっている。 ・ユ−ザID(UID)は 0 はス−パユ−ザ用、1〜99 はシステム用という決まりがある。一 般ユ−ザは 100 以上を使う。Solaris 2.6 の管理ツ−ルでは新規は 1001 からつく。 ・グル−プID(GID)も一般ユ−ザは 100 以上を使う。ただし nobody 60001 などと予約 されているIDは使えない。Solaris 2.6 の管理ツ−ルでは新規は 101 からつく。 * /etc/passwd の各部の意味 暗号化されている ロッグインシェル ↓ ↓ root:BhlmZDWyfrkcgq0:0:Super-User,,,,,,,:/:/bin/csh | bin:*:2:2:System Tools:/bin:/dev/null これら全てロックがかかり、 bin:*LK*:2:2:System Tools:/bin:/dev/null ロッグインできない。 bin:LOCKED:2:2:System Tools:/bin:/dev/null ↑↑ UID GID * パスワ−ドの強化方法 a. シャドウ・パスワ−ドにする pwconv コマンドで /etc/passwd から /etc/shadow を作成する。 /etc/passwd のパ スワ−ド・フィ−ルドにはパスワ−ドはなくなる。/etc/shadow ファイルの方に暗号 化されたパスワ−ドが入る。 b. パスワ−ド・エ−ジングをかける パスワ−ドの有効期間を設定するのである。有効期間が切れるとロッグインができな くなる。例えば2週間おきに変える場合 % passwd -x 14 user_name とすればよい。 c. その他 アカウントで消すことはできないが、とりあえず使わないものはロックをかけてロッ グインができないようにする。ロッグインの最大回数を設ける。ロッグインのログを とる。常識なこととして、推測できにくいパスワ−ドにすること。 * ロッグインの最大回数を設ける /etc/default/login ファイルで CONSOLE=/dev/console をアンコメントにすると、 その マシンに座って直接ロッグインしないと root ロッグインできなくなる。つまり他のマシ ンから telnet で root ロッグインできなくなる。 しかし katou など一般ユ−ザとして なら telnet ロッグインはできてしまう。その後に su で root になればなんてことはな いという話になってしまう。要注意!。Solarix 2.x もこの設定は有効である。 hostB $ telnet hostA IRIX System V.4 (hostA) login: root Password:Connection closed by foreign host. 拒否された!。 hostA /etc/default/login << INDY では元は /etc/config/login.options だった。 ---------------------- |#CONSOLE=/dev/console << デフォルト。コメントを外すとすぐ有効になる。 | |MAXTRYS=2 << 最大2回である。コメントにするとデフォルトで5回。 | | |DISABLETIME=600 << ロッグインが2回失敗したあと、再度ロッグインでき | | るまでの時間。600秒、つまり10分である。 hostB $ telnet hostA Trying 192.168.1.1... login: root Password: UX:login: ERROR: Login incorrect login: root Password: UX:login: ERROR: Login incorrect ここで DISABLETIME 分だけ待たされる。 Connection closed by foreign host. $ * su コマンドでス−パユ−ザになれる SunOS 4.1.x の /etc/group ファイルには wheel というル−トのグル−プがある。 これ は su コマンドを許すユ−ザを示す働きもある。デフォルトでは誰でも su を使ってパス ワ−ドさえ知っていれば root ユ−ザになることができる。次のようにユ−ザ名を書き込 むことによって、su を使えるユ−ザを制限することができる。 これは直ちに有効となる。 ちなみに INDY にも Solaris 2.5.1 にも wheel グル−プはない。root グル−プがある。 /etc/group /etc/group ------------ ---> ----------------------- |wheel:*:0: |wheel:*:0:katou,satou << su コマンドを使える人。 * WWWホストのアカウントの設定 % cat /etc/passwd root:BhlmZDWyfrkcgq0:0:Super-User,,,,,,,:/:/bin/csh << ス−パユ−ザ用。 bin:*:2:2:System Tools Owner:/bin:/dev/null << 消してはいけない。 | guest::998:998:Guest Account:/usr/people/guest:/bin/csh << 消すこと。 nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null << httpd が使う。 lp::9:9:Print Spooler Owner:/var/spool/lp:/bin/sh << 消すかロックする。 | 4Dgifts::999:998:4Dgifts:/usr/people/4Dgifts:/bin/csh << 消すこと。 fax:*LK*:3:10:Facsimile Agent:/var/spool/fax:/bin/sh << 消すこと。 katou::101:100::/usr/people/kato:/bin/csh << 消すこと。個人用。 | keyman:pohepohe:100:100:keyman:/usr/nix:/bin/csh << キ−マン用を登録。 | +::0:0::: << 消すこと。NIS 用。 daemon、bin などロック指定のアカウントは、消してはならない。へたに消すとOS内の ファイルの UID と整合性がとれなくなる。 lp は /var/spool/lp プリント・スプ−ラの オ−ナである。lp でロッグインできないようにロックを掛けるかする。nobody は httpd デ−モンが一般的に使う UID である。別に www というようなアカウントを設け、nobody は消去するのが本当は望ましい。4Dgifts は INDY のおまけソフトのデモ・アクセス用の アカウント、 fax は INDY の FlexFAX というフリ−ソフトをインスト−ルしたら勝手に できたアカウントである。このような特別なアカウントは全て消した方がよい。 * Sun の Solaris 9 でのアカウント操作 # useradd -u 2001 -g 201 -d /usr/people/katou -m katou /etc/passwd /etc/shadow このファイルにもエ --------------------------------------------- ----------- ントリはできていた。 | | | | |katou:x:2001:201::/usr/people/katou:/bin/sh |katou:*LK*::::::: # login katou 上記のuseradd の操作では、ホ−ムディレクトリは作成される。パ Password: スワ−ドはまだ設定されていなくて、アカウントはロックされてい Login incorrect る。このままではどうやってもロッグインはできない。 # passwd katou もう一度 # passwd katou やって 新しいパスワード: henomohe 同じパスワ−ド henomohe を入れ 新しいパスワードを再入力してください: henomohe た。暗号化のパスワ−ド・フィ− passwd: katou のパスワードが変更されました ルド文字列は違っていた。 /etc/shadow /etc/shadow --------------------------------- ------------------------------ | | | | |katou:vq1S8cA3cfQx2:13040:::::: |katou:x68BCaSUhhjVu:13040:... /etc/group 上記でグル−プの番号を 201 にした。 /etc/group ファイルに 201 の -------------- エントリがなければ作っておくこと。ディレクトリは /usr は最初から | | あるがその下には /people はない。 これも初めに作っておくこと。で |userdesu:201: ないと # useradd コマンドをたたいた際、エラ−が出てできない。 * Solaris 9 でのアカウント名の長さは デフォルトではアカウント名、ユ−ザ名と言ってもいい、この長さは8文字以下でないと だめである。最初の文字は英字で2から8文字うんぬんと、Solaris 9 の本に書かれてい る。Solaris 9 のOSとしては31文字までは入る。しかしOSのシステム的には8文字 までしか保証してない。そのためできるだけ8文字までで運用するのが無難ということに なっているようである。長いアカウント名を付けるには LDAP サ−バがあればいいらしい。 /etc/nsswitch.conf で ldap を参照するように設定ができるらしい。 これまでだいたい 8文字以内で収まっていたので、何文字まで使えるのかあまり気に留めていなかった。し かし長い人の名前もあるわけで、メ−ルアドレスを付ける場合に適当にはしょってアカウ ント名を運用の人が付けていた。そんな訳で改めて調べてみた。`28/04 # admintool では。Solaris 9 では admintool の利用は推奨されていないが使える。 ユ−ザ情報設定 ユ−ザ−名:[ qqqqqqqq ] << 8文字を超えるのは入らない。 コマンドでは9文字以上でも入る。ワ−ニングは出るが /etc/passwdファイルの一番最後 に登録アカウントは追加される。 # useradd -u 1001 -g 201 -d /usr/people/ikken -m ikkendesuyon UX: useradd: ikkendesuyon name too long. * Solaris 9 の admintool の注意 '2e/03 前に書いたことで、 useradd コマンドと admintool ではちゃんと連携が取れてないみた いである。admintool 画面をずっと出していて、ユ−ザのアカウントの追加やパスワ−ド の変更をやっていた。やってもらっていたというのが正解だが、時たまマシンの画面を見 たら admintool が出ていた。ある時マシンをリブ−トした、気なしに admintool 画面を 出したままやった。 POP3 のユ−ザ認証のためにユ−ザのアカウントのメンテナンスをし ていた訳だ。それが変更したはずのパスワ−ドが前のに戻ってしまった。新規に登録した ユ−ザ名自体は有効だったみたいである。 どうも admintool で変更しても /etc/passwd と /etc/shadow ファイルに反映されていないのでないかと思う。多分 admintool 画面を 閉じた際にファイルに反映される仕組みになっているのでないか。 (4) ファイル・プロテクション '97〜 * ファイルプロテクション基本 % ls -l drwxrw-rwx 2 katou user 512 .. dir -rw-r--r-- 1 katou user 0 .. file -rwsr-xr-x 1 katou user 40784 .. cmd rw-r--r-- ↓ オ−ナ(owner) を変更するには % chown jiro file rw- r-- r-- グル−プ(group)を変更するには % chgrp guest file owner group other プロテクトのモ−ドを変更するには、%chmod 616 file と絶対的に変更するやり方さえ覚 ればよい。他のやり方として %chmod g+r file、%chmod g-r file、%chmod g=r file と いうのがあるが、2種類の方法を覚えるのもめんどくさい。 ファイルの場合 -rwxr--r-- とオ−ナの部分に x がついていると、 ファイルがシェルス クリプトやプログラムの場合、オ−ナが実行できることを意味する。プログラムを作った だけでは実行できないのである。 cmd の -rwsr-xr-x の s は SetUID されていることを示す。 cmd は何らかの実行可能な ファイルであり、-rwxr-xr-x + SetUID と解釈してよい。SetUID は下手に使うと非常に 危険である。root に SetUID したファイルは注意しなければならない。 上記で色々プロテクションを施しても、ス−パユ−ザである root は何でもできてしまう。 ディレクトリに他のユ−ザが入れないようにしたところでス−と入ってきて、ファイルも 消すことができる。 各ホストの UID、GID を合わせること。 ネットワ−ク接続したホスト間で、/etc/passwd と /etc/group の内容に整合性がとれていること。 例えばあるホストで katou というユ −ザIDが 100 番で、違うホストでは 200 番というようなことはダメである。 * グル−プが同じで異なるユ−ザからのアクセス /etc/passwd /etc/group ------------------------------------------- -------------- |katou::101:100::/usr/people/kato:/bin/csh |root::0:root |jiro::102:100::/usr/people/jiro:/bin/csh | | ↑ |user::100: ユ−ザID 102、グル−プIDは 100 番。 ディレクトリのモ−ド| ls cd rm --------------------|------------ rwx --- rwx | 707 | × × × -w- | 727 | × × × 注.rm は cd してからその中のファイルを --x | 717 | × ○ × 消去することを意味する。 r-- | 747 | ○ × × r-x | 757 | ○ ○ × rw- | 767 | ○ × × rwx | 777 | ○ ○ ○ [ アクセス例 ] katou% chmod 747 temp; ls -l 注.グル−プが異なるその他のユ−ザからの drwxr--rwx 2 katou user .. temp アクセスも同じである。 jiro% ls temp パ−ミッション| ls cd rm t1 t2 --------------|-------------- rwx rwx --- | × × × jiro% cd temp rwx -w- | × × × temp - 許可を与えられていません * SetUID を設定した場合の危険性 ファイルに SetUID がセットされていると、そのファイルを実行しようとする任意のユ− ザは、元のファイル・オ−ナの権限で実行できてしまう。 もしファイルのオ−ナが root であるような /bin/sh や /bin/rm に SetUID がセットされると大変なセキュリティ問題 になる。特に /bin/sh が SetUID されると何でもできてしまうことになる。 通常EWSには、最初から root に SetUID したファイル(コマンド)は幾つか存在して いる。これらを訳も分からず SetUID を外すことはできない。セキュリティ的には外部用 WWWホストでは、root に SetUID したファイルが増えていないか、 ファイル・サイズ が変わったりしていないかチェックすることが望ましいと言える。 root% cp /bin/sh cmd << Bourne-shell( B-shell ) をコピ−する。 root% ls -l -rwxr-xr-x 1 root sys 140784 .. cmd root% chmod u+sx cmd << SetUID を設定する。% chmod 4755 でも同じこと。 root% ls -l -rwsr-xr-x 1 root sys 140784 .. cmd ※ SetGID というのもある。%chmod g+s katou% ls -l または %chmod 2755 とかやる。 -rw-r--r-- 1 katou user 0 .. t1 -rw-r--r-- 1 root sys 0 .. p1 jiro% cmd -c '/bin/rm t1' << 誰でも root の権限で消去できてしまう。 jiro% cmd -c '/bin/rm p1' [ root に SetUID したファイルを探す ] % find . -user root -perm -4000 -print << -perm 4000 ではダメ!。 ./cmd [ これはダメである ] tensou << これもできそうだができない。 コマ --------------------------------------- ンド touch が SetUID されていない |/sbin/touch /usr/people/jiro/.forward のでユ−ザ katou では実行できない。 root% chmod 4755 tensou; ls -l -rwsr-xr-x 1 root sys 196 .. tensou katou% tensou tensou: setuid プログラム実行の許可がありません * umask とは 与えたく無い権利の和である。~/.cshrc ファイルに umask 026 などと書いておけば、自 動的にオ−ナが作成したファイルのプロテクションを決めることができる。umask ではフ ァイルに対しては x 権は付けることができない。ディレクトリには付けることはできる。 ファイル |umask| 結果 ディレクトリ |umask| 結果 ---------------|-----|---------------- ---------------|-----|--------------- rw_ rw_ rw_ | 000 | rw_ rw_ rw_ rwx rwx rwx | 000 | rwx rwx rwx 420 420 420 | 066 | rw_ ___ ___ 421 421 421 | 066 | rwx __x __x | 002 | rw_ rw_ r__ | 002 | rwx rwx r_x % umask 22 << 現在のマスク値 022 ということ。 % touch file % ls -l file -rw-r--r-- 1 katou user .. file % umask 066 % touch file -rw------- 1 katou user .. file % umask 001 << umask 000 と同じこと。できたファイルには x 権が付いていない。 % touch file -rw-rw-rw- 1 katou user .. file % umask 077 << ディレクトリの場合である。x 権が付いている。 % mkdir dir drwx------ 2 katou user .. dir * ファイルのコピ−のパ−ミッションと日付けについて % ls -al sendmail* -rwxr-xr-x 1 root sys 825004 10月 11日 10時56分 sendmail -r-sr-xr-x 1 root sys 825004 7月 26日 1999年 sendmail-8.9.1 % cp -p sendmail-8.9.1 KKK ; ls -al KKK -r-sr-xr-x 1 root sys 825004 7月 26日 1999年 KKK % cp sendmail-8.9.1 PPP ; ls -al PPP -r-sr-xr-x 1 root sys 825004 10月 11日 11時06分 PPP % cp sendmail-8.9.1 sendmail ; ls -al sendmail -rwxr-xr-x 1 root sys 825004 10月 11日 11時07分 sendmail % cp -p sendmail-8.9.1 sendmail ; ls -al sendmail -r-sr-xr-x 1 root sys 825004 7月 26日 1999年 sendmail * 拡張 ACL( Access Control List ) `23/06 早い話、Apollo の DOMAIN/OS にあったファイルのパ−ミッションと同じようなことであ る。これまで伝統的なUNIXでは user, group, other の区別しかできなかった。これ では細かなファイルのアクセス制限ができない。コマンドとしては getfacl, setfacl が ある。以下は Solaris 2.6 でコマンドを叩いたところである。 Linux では最新カ−ネル の 2.6 に搭載されてきている。参考は、http://www.atmarkit.co.jp/ の "全貌を現わし た Linux カ−ネル 2.6[第3章]2003/3/11"、など。前に購入した Cobalt Qube3J のカ −ネルは何かな、telnet アクセスして出たのは Kernel 2.2.16C7 on an i586 だった。 sola# cd /var/tmp; ls -ld TEST drwxr-xr-x 2 root other 512 6月 9日 13:23 TEST sola# ls -l TEST -rw-r--r-- 1 root other 0 6月 9日 13:23 p1 sola# getfacl TEST << ディレクトリのパ−ミッションの状態を表示する。 変更設定は setfacl コマンドを使う。 # file: TEST # owner: root # group: other user::rwx group::r-x #effective:r-x mask:r-x other:r-x sola# getfacl TEST/p1 # file: p1 # owner: root # group: other user::rw- group::r-- #effective:r-- mask:r-- other:r-- (5) ファイルのコピ−いろいろ * tar によるディレクトリのコピ−その1 # ls -F test1 ディレクトリそのものと、中のファイルをパ− test1/ ミッションを維持してコピ−するやり方。 # tar cBf - test1 | (cd /usr/local; tar xBpfv - ) # ls -F /usr/local test1 ディレクトリ以下に、ディレクトリがあればそ test1/ れもコピ−してくれる。 カレントの test1 を、/usr/local ディレクトリにコピ−する例である。 /usr/local の test1 ディレクトリは、tar コマンドにより自動で作られる。こんな基本的なコマンドが 無いなんてと思っていたら、Solaris 9 で # cp -pr source dest でできるようになった。 xBpfv オプションを説明しよう。x はファイルの取り出し、p はパ−ミッションを元に戻 す?、f は引き数で "-" により標準入力を指定する意味になる。v は tar の実行の表示。 B はコピ−する単位でブロック数の指定である。大きくすれば、速くコピ−ができる。 * tar によるディレクトリのコピ−その2 # mkdir ppp repo ディレクトリを ppp にコピ−する。コピ−先の # ls -F ディレクトリ ppp は、先だって作っておくこと。 ppp/ repo/ # (cd repo;tar cf - .)|(cd ppp;tar xpfv -) 注.Solaris 9 でやったら xpfv は、xfv Tar: blocksize = 20 でもパ−ミッションを維持した。 x ./backp.doc, 3947 bytes, 8 tape blocks x ./iepro.txt, 6736 bytes, 14 tape blocks 注.B オプションは Apollo にはない。 x ./ikken.doc, 69 bytes, 1 tape blocks # cd repo # tar cf - .|(cd ../ppp;tar xpfv -) これでもOK # tar cf - repo |(cd ppp;tar xpfv -) これは ppp/repo ディレクトリができて入る。 * rcp( リモ−トコピ− ) % rcp file hostB:/home/ こっちのファイルを相手にコピ−する。 % rcp -r dir hostB:/home/ ディレクトリのコピ−。再帰的にコピ−する。 % rcp hostB:/home/file . 相手のファイルをコピ−してもってくる。 % rcp -p file jiro@hostB/home/ 相手ファイルの日付けでコピ−する。 rcp では相手ファイルのプロテクションや UID と GID はコピ−できない。 せいぜい -p で日付けをコピ−するまでである。プロテクションや UID と GID も含めてコピ−するに は rshコマンドを使うしかない。恐るべし -r のリカ−シブ・コピ−。コピ−しようとす るディレクトリの中にリンクがあると、展開してコピ−する。リンク情報をコピ−するの でなく、リンク先のファイルをコピ−して来るのである。もし、リンクが xxx --> .. な んてなっていると、それこそ再帰的に永遠にコピ−することになってしまう。BIND-4.9.7 をコンパイルしたのを % rcp -r とやったら、いつまでたっても終わらないので、見たら そうなっていた。こういう場合はコマンドを強制終了させる。 続けて % rcp -r dir hostB:/home/ をやるとどうなるか。hostB に最初 /home ディレク トリに dir ディレクトリがなければ、作ってコピ−する。その後、また % rcp コマンド をたたくと、hostB の /home ディレクトリは削除することなく、 そのままでファイルを コピ−し直す。元でファイルを消去した場合は、コピ−先には反映されない。先にコピ− したままそのまま残る。% rcp -r dir hostB:/home/dir と指定するとどうなるか。 コピ −したのは hostB:/home/dir/dir となってしまう。% rcp -r dir hostB:/home/katou と かやるとどうなるか。コピ−元のディレクトリ dir が、hostB の /home 下にディレクト リ /katou を作ってコピ−する。ややこしいです。 もう少し説明しておこう % rcp -r hostB:/home/dir dir で。hostB は相手のホスト名を 書く。IPアドレスではだめである?。自分のホストが hostA,root でロッグインして作 業するとしよう。相手ホストの設定は次のようにする。/.rhosts ファイルに hostA と記 述し、/etc/hosts に hostA のエントリを記述する必要がある。 そして rcp コマンドを 受けるために inetd の稼働が必要である。 Solaris 2.5.1 で portmap と inetd を稼働 させていない状態で # inetd -s & とやる時は、 /etc/inetd.conf の RPC の項目は全て コメントにすること。これやらないとハマる。 * rsh( リモ−トシェルコマンド ) jiro% rsh hostB pwd ユ−ザ jiro で実行することになる。 /usr/people/jiro jiro% rsh hostB -l katou /sbin/pwd ユ−ザ katou で実行することになる。 /usr/people/katou jiro% rsh hostB pwd > ppp 実行した結果を自分側のファイル ppp に入れる。 $ lusr 現在の Apollo のログインユ−ザは katou。 katou.none.none.XXXXX $ /bin/start_csh katou で実行することになる。Apollo でも出来た。 % which rsh /usr/ucb/rsh * ネットワ−ク越しのファイル転送 ( REMOTE のを LOCAL へ ) パ−ミッションとユ−ザID、グル−プIDを維持して、ネットワ−ク越しにファイルを コピ−するには?。ftpmirror といった専用のアプリケ−ションを用いるやり方もあるが、 UNIXの標準コマンドでやろうとすると rsh しかない。rcp も ftp もパ−ミッション などの情報までは持ってきてくれない。もちろん rsh の場合でも、 コピ−先のマシンに ユ−ザID、グル−プIDが登録されていなければならないが。 下の rsh では相手マシ ン 192.168.1.1 に入って、/var/spool/mail ディレクトリに移動し、 ドットファイルも 全部 tar でまとめ自分のマシンに持ってきて、tar でファイル展開する。 sunos# cat /.rhosts どのマシンからでもRコマンドを受け付ける。 + このマシンは SunOS 4.1.x、192.168.1.1 とする。 sola2# cd /var/mail メ−ルスプ−ルを移動する。こちらは Solaris 2.6。 sola2# rsh 192.168.1.1 'cd /var/spool/mail; tar cf - .' | tar xvf - コピ−元の sunos ホストの /var/spool/mail 以下ディレクトリとファイルを全て、コピ −先の sola2 ホスト /var/mail 以下にコピ−する。もしコピ−先にディレクトリが既に ある場合、例えば /var/mail/katou というディレクトリがあり、 その中にファイルもあ るとすれば、既存ファイルはそのままで /var/spool/mail/katou にファイルがあれば追 加される。デ−モンはコピ−元ホストで /etc/inetd.conf に shell などが入っているこ と。コピ−先ホストの /etc/inetd.conf は関係ない、ファイル自体なくても構わない。 LOCAL rsh ---> REMOTE inetd デ−モン稼働のこと □ <--- 複製 □ # cd; echo "+" > .rhosts sola2 | .1| sunos -------------------------------- 192.168.1.0 * ネットワ−ク越しのファイル転送 ( LOCAL のを REMOTE へ ) LOCAL rsh ---> REMOTE inetd デ−モン稼働のこと □ 複製 ---> □ # cd; echo "+" > .rhosts Linux | .1| INDY -------------------------------- 192.168.1.0 Linux の /home/katou/test 以下のファイルやディレクトリを、192.168.1.1 にコピ−す る。コピ−先は /home/katou/temp ディレクトリ以下である。 temp というディレクトリ はあらかじめ作っておかないといけない。tar xvBf のオプション 'B' はないと、ここで はエラ−になった。Linux は Red Hat の 9 である。 ]# cd /home/katou/test ]# tar cvf - . | rsh 192.168.1.1 'cd /home/katou/temp; tar xvBf -' * dd( convert and copy a file ) 変換とイメ−ジでのコピ−をするコマンド # dd if=hello.C of=pp.C hello.C というファイルがあって、 pp.C というファ 読み込まれたブロック数は 0+1 イル名でコピ−する。ディスクのバックアップを取る 書き出されたブロック数は 0+1 際にも用いる。コピ−の原始的なコマンドである。 * tftp( trivial file transfer protocol ) 簡易 ftp コマンド UNIXのマシンのEWSや Linux では、この簡易 ftp コマンドは普通使うことはない。 ネットワ−ク越しのファイルのコピ−は通常 ftp コマンドで済む。簡易 ftp コマンドは ル−タやレイヤ3スイッチなど、ファ−ムウェアをバ−ジョンアップする場合などによく 用いられる。ファ−ムウェアというのはICメモリに書き込まれたOSのことである。 /etc/inetd.conf INDY IRIX 5.3 の場合 -------------------------------------------------------------------------------- |#tftp dgram udp wait guest /usr/etc/tftpd tftpd -s /usr/local/boot /usr/etc/boot |tftp dgram udp wait guest /usr/etc/tftpd tftpd -s /nix/temp << 上記を変更した。 % tftp localhost ロ−カルにあるファイル pppを、リモ−トホスト tftp> put ppp /nix/temp/ppp に転送したい。最初は /nix/tempディレクトリは Error code 1: File not found あるが、ファイル ppp はない場合。 tftp> put ppp /nix/temp/ppp % cd /nix/temp Error code 2: Access violation % touch ppp -rw-r--r-- tftp> put ppp /nix/temp/ppp % chmod +w ppp -rw-rw-rw- Sent 7 bytes in 0.0 seconds これで、はじめて転送できた。 tftp> put iii /nix/temp/ppp tftpd サ−バ側に送りたいファイル名のファイル Sent 7 bytes in 0.0 seconds があって、書き込みできるようになっている必要 tftp> quit がある。 tftp> get ppp bbb リモ−トのファイル /nix/temp/pppを、ロ−カル Received 7 bytes in 0.0 seconds に bbb という名前で持って来る。 % telnet localhost 69 telnet でtftp サ−バのポ−トにアクセスしてみ Trying 127.0.0.1... る。tftp は UDP のため有効ではないみたい。 telnet: Unable to connect to remote host: Connection refused * ファイルの連結 cat コマンド # cat p2 >> p1 これはマシンのアカウントのファイル passwd や groupそれに shadow の内容をコピ−するのにも使うことができる。 例えば p1 p2 p1 既存のマシン SPARCstation 5 Solaris 2.6 があって、たくさ --- --- --- んのユ−ザのアカウントを登録してあるとしよう。それを新し |1 |4 |1 いマシン Sun Fire V210 の Solaris 9 にしたい。このような |2 |2 場合に新旧の passwd ファイルで、cat コマンドで移行するこ |3 |3 とができる。shadowの暗号化パスワ−ドもそのまま移る。アカ もともと |4 ウト情報のファイルをいじるのはなかなかリスキ−なのだが。 ------------------------------------------------------------------------------------ [ 付録 ] Solaris 9 での幾つかのこと ● Solaris 9 でのアカウントあれこれ * userdel でアカウントを消す # userdel katou << 何もメッセ−ジはでないが、これで消える。 # userdel -r katou << -r とやるとホ−ムディレクトリも消える。 アカウントを消去する前にディレクトリ katou を消してみた。 以下のような表示が出て passwd ファイルのエントリも消去されなかった。改めて # userdel katou で消す。 # userdel -r katou UX: userdel: ERROR: Unable to find status about home directory: No such file or directory. * useradd でアカウントを作る # useradd -u 2001 -g 201 -d /usr/people/katou -m katou 64 ブロック # login katou 上記の useradd の操作ではホ−ムディレクトリは作成される。 パ Password: スワ−ドはまだ設定されていなくて、アカウントはロックされてい Login incorrect る。このままではロッグインはできない。 # passwd katou これでパスワ−ドを設定すること。これらの操作は管理者権限にて。 # ls -al /usr/people/katou -rw-r--r-- 1 katou user 144 1月 13日 11:08 .profile -rw-r--r-- 1 katou user 136 1月 13日 11:08 local.cshrc -rw-r--r-- 1 katou user 157 1月 13日 11:08 local.login -rw-r--r-- 1 katou user 174 1月 13日 11:08 local.profile ちょっと確認しないといけない。local.xxx とできたのは、このままでは有効ではないは ずだと思う。有効にしたければ local を消して、ファイル名を .cshrc .login .profile にしないといけないと思う。でも .profile はすでにあるし、どうなっているのか。 * もう一つ useradd でアカウントを作る /etc/passwd /etc/shadow --------------------------------------------- ---------------------------- |katou:x:2001:201::/usr/people/satou:/bin/sh |katou:QsjdaSAeg3sfD::::::: |satou:x:2002:201::/usr/people/satou:/bin/sh |satou:aFSguFjegFTPA::::::: ユ−ザが既にあった場合、uid を既にあるのを指定した場合はこんなように出る。 # useradd -u 2001 -g 201 -d /usr/people/mutou -m mutou UX: useradd: ERROR: mutou is already in use. Choose another. * 直接アカウントのファイルをいじる 直接 passwd ファイルをいじった場合のこと。例えば新規にユ−ザ katou を passwdファ イルに記述、shadow ファイルには何も記述せず。 この状態で # passwd katou とやると、 パスワ−ドを入れることはできるが、 "passwd: katou は存在しません。アクセス権があ りません。" と出てしまう。vi で shadow ファイルにも "katou:*LK*:::::::" と記述す ること。passwd ファイルだけなら直接いじってもいいかと思うが、shadow ファイルもあ る場合は passwd ファイルは、もはや直接いじらない方がいいと思う。 /etc/passwd /etc/shadow --------------------------------------------- ------------------- |katou:x:2001:201::/usr/people/katou:/bin/sh |katou:*LK*::::::: ● Solaris 9 でのアカウントのパスワ−ドのこと `2e/02 $ telnet 192.168.1.2 適当なマシンから Sun に root でアクセスする。 SunOS 5.9 login: root # useradd -u 2001 -g 201 -d /usr/people/katou -m katou # passwd katou 仮にパスワ−ドを 888passd と付ける。 いったん抜ける。今度は katou ユ−ザでアクセスし、パスワ−ドを自分で変える。 $ telnet 192.168.1.2 SunOS 5.9 login: katou Password: 888passd Sun Microsystems Inc. SunOS 5.9 Generic May 2002 $ $ passwd passwd: katou のパスワードを変更しています 既存のログインパスワードを入力してください: 888passd 新しいパスワード: keroyon passwd: パスワードの最初の 6 文字には、 2 文字以上の英字と、1 文字以上の数字または特殊文字を 指定しなければなりません。 再度実行してください 新しいパスワード: 2pasw999 新しいパスワードを再入力してください: 2pasw999 passwd: katou のパスワードが変更されました ● メ−ルのアカウントの UID のことで `2e/02 * UID の不整合な状態ができていた アカウントをユ−ザ名 susanou を useradd コマンドで作成した。UID は 123を記入した。 しばらくしてその後、別な人がGUIの admintool でユ−ザ名 amatera を作った、しか も同じ UID で。同じ UID 番号を入れたらGUI画面から警告が出て作れないのでないか と思うのだが。ともかくある日のこと /etc/passwd ファイルを見たら、 以下のような状 態になっていた。因み admintool ではアカウント susanou のエントリは表示されなかっ た。useradd コマンドと admintool ではちゃんと連携が取れてないみたいである。 # cd /var/mail # ls -al susanou -rw-rw---- 1 susanou staff 0 2月 18日 11:34 susanou # ls -al amatera -rw-rw---- 1 susanou staff 3205 2月 18日 08:19 amatera # tail /etc/passwd susanou:x:123:101::/usr/people/susanou:/bin/sh amatera:x:123:101::/usr/people/amatera:/bin/csh << 同じ UID になっていた。 メ−ルボックスの amatera ファイルにはメ−ルが1通きていた。中味を見たら Toフィ− ルドに amatera の文字があった。# more /var/mail/amatera 出見れば、ヘッダ−部なん かは読める。UID の整合性がおかしくても、メ−ルの配信には関係ないということか。 * UID の不整合な状態を正常にした その別な人に admintool でユ−ザ名 amatera のアカウントを削除してもらい、UID を変 えて admintool で改めて作ってもらった。 ユ−ザのホ−ムディレクトリは作り直されて いた。メ−ルボックスのファイルはオ−ナ−が変わってなかった、これはコマンドで合う ようにした。/var/mail/amatera ファイルはこの時見たら、サイズ0になっていた。つま りメ−ルソフトで取り込まれたということだろう。 # tail /etc/passwd susanou:x:123:101::/usr/people/susanou:/bin/sh amatera:x:124:101::/usr/people/amatera:/bin/csh # cd /usr/people アカウント amatera を作り直す前はどうだったのか。 # ls -al drwxr-xr-x 2 susanou user 512 2月 6日 12:03 susanou drwxr-xr-x 2 amatera user 512 2月 17日 18:15 amatera # cd /var/mail # ls -al amatera -rw-rw---- 1 susanou staff 0 2月 18日 08:19 amatera # chown amatera amatera # ls -al amatera -rw-rw---- 1 amatera staff 0 2月 18日 08:19 amatera