« 2004年10月 | メイン | 2005年7月 »

2005年6月17日

プロセスcore の保存場所

質問:

プロセスで障害が発生し、コアダンプを生成した場合にプロセスの作業ディレク
トリに作成されます。コアダンプの保存先を別のディレクトリに変更する方法は
ありますか。また、生成を抑制することも可能でしょうか。
---------------------------------------------

回答:

coreadm コマンドによってプロセスの core ファイルを制御することができます。
具体的には、“core ファイルを作成するかどうか“ と“core ファイルを作成する
場合、どのファイル名で作成するか“ が設定可能です。

現在のシステム全体の設定は、以下のようにして確認することができます。

----------------------------------------------------------------
% coreadm
グローバルコアのファイルパターン: ー *1
init コアのファイルパターン: core ー *2
グローバルコアダンプ: disabled ー global core
プロセス単位コアダンプ: enabled ー per-process core
グローバル setid コアダンプ: disabled ー global setid core
プロセス単位 setid コアダンプ: disabled ー per-process setid core
グローバルコアダンプのロギング: disabled
----------------------------------------------------------------

【core を作成するかどうかの設定】

coreadm コマンドでは、作成される core ファイルのオーナに依存して、global
core と per-process core というように呼び分けています。

global core : ファイルオーナは root
per-process core : ファイルオーナはプロセスのオーナ


出力結果の項目で言うと、global core = グローバルコアダンプ、per-process
core = プロセス単位コアダンプです。各々、enabled になっていれば core を
作成し、disabled になっていると core を作成しません。デフォルトでは、
per-process core は作成、global core は作成しない設定になっています。

また、上記の中でも、特に setid(setuid/setgid) が設定されたプロセスの
core を作成するかどうかを決めているのが、グローバル setid コアダンプと
プロセス単位 setid コアダンプの項目です。これらは、セキュリティ上の理由
から、デフォルトでは作成しない設定になっています。

各 core の enabled/disabled を切り替えるには、-e と -d オプションを使用
します。この設定は、root でのみ設定可能です。

[例] global core を enabled にする。
(* disabled にするためには -d を指定します。)

# coreadm -e global

なお、global core と per-process core の設定はお互いに依存しないため、
両方を enabled にすると、同じ内容でオーナの異なる core ファイルが 2 つ
作成されることになります。


【core の出力先を変更する設定】

global core の出力先は、root ユーザのみ設定可能で、-g オプションを使用
します。coreadm で出力される項目で言うと、グローバルコアのファイルパタ
ーン(*1)が該当します。

# coreadm -g /var/core/core.%p
→ global core を /var/core/core. という名前で作成する

# coreadm << 確認
グローバルコアのファイルパターン: /var/core/core.%p
init コアのファイルパターン: core
:

per-process core の出力先は、デフォルトではカレント・ワーキング・ディレ
クトリに core という名前で作成されるようになっていますが、root あるいは
プロセスのオーナによって変更可能です。

厳密に言うと、core 出力先の設定は、設定後に起動された子プロセスに引き継
がれますので、特に指定しない限り、全てのプロセスは起動時 init プロセスに
指定された per-process core の出力設定(*2)をそのまま使用します。init プ
ロセスへの指定は -i オプションを使用し、root ユーザのみが指定可能です。

# coreadm -i core.%p
→ init に対して per-process core をカレント・ワーキング・
ディレクトリに core. という名前で作成するように指定

# coreadm << 確認
グローバルコアのファイルパターン:
init コアのファイルパターン: core.%p
:

init プロセスから引き継がれた設定ではなく、各プロセスごとに出力先の設定
を変えたい場合は、-p オプションを使用します。-p オプションは、root もし
くはプロセスのオーナが指定可能です。

% coreadm -p core.%f
→ のプロセスに対して、per-process core をカレント・
ワーキング・ディレクトリに core. と
いう名前で作成するように指定

% coreadm << 確認
: core.%f


【ユーザごとに出力先の設定を行いたい場合】

前述の通り、core の出力設定は、システム全体で行うもの(global core、あるい
は per-process core のデフォルト設定)と、プロセスごと(プロセス別の per-
process core 設定)に行うものの2種類となります。

ただし、ユーザのログインシェルのプロセスに対して per-process core の設定
を行うことで、ユーザごとの core 出力先を変更することができます。

% coreadm -p $HOME/core.%p $$

% coreadm $$
748: /export/home/test/core.%p

上記は、現在実行中のシェルプロセスに対して per-process core の設定を行っ
ていますが、この記述をログイン時に読み込まれるプロファイルに追加します。
($$ は実行中のシェルプロセスの pid を意味する)

プロファイルは、csh の場合 $HOME/.login、sh/ksh の場合は $HOME/.profile
が良いと思います。

[例]
% vi $HOME/.login
:
coreadm -p $HOME/core.%p $$


【各オプションが有効になるタイミング】

前述のオプション(-e/-d, -g, -i, -p)は、すべて実行した時即座にに有効と
なります。ただし、-p だけが一時的な変更であるのに対し、他のオプション
は /etc/coreadm.conf ファイルに保存されて、リブート後も有効となります。

投稿者 AJ : 17:47トラックバック (0)

2005年6月 9日

FTP 専用のユーザアカウントの登録

質問:

/etc/passwd に通常通りにアカウントを登録すると
telnet, rlogin が出来ますが、ftp によるアクセス
だけを許可し、ローカル及びリモートに関係なく、
他のログインを拒否するための設定方法を教えて
いただけますでしょうか。
---------------------------------------------
回答:

ご要望の動作を実現する一般的な方法としましては、
該当アカウントに対して無効なログイン・シェルを
設定する方法がございますので、ご紹介させていた
だきます。


設定手順:

 1. 該当ユーザーのログイン・シェルを無効なものに設定する。

例えば /nosuchshell のように存在しないファイルを設定したり、
/bin/true のように即座に終了するコマンドを指定します。

    # vi /etc/passwd
:
    ftp-only:x:1000:100:ftp access only:/tmp:/nosuchshell


 2. 設定した無効なシェルを、/etc/shells に登録する

   登録したシェルがログイン・シェルとして利用可能なものになる
ように /etc/shells に登録しておく必要があります。(登録し忘
れますと、ログイン出来なくなるだけではなく、ftp によるアク
セスも出来なくなってしまいます)

    # vi /etc/shells
      :
    /bin/sh
    /bin/csh
      :
    /nosuchshell

   [ 注意事項 ]
   /etc/shells ファイルには、/nosuchshell だけではなく、標準で
   提供されておりますシェル(/bin/sh, /bin/csh 等)も登録して
   おく必要があります。/etc/shells ファイルが存在する場合に、
   デフォルトのシェルを登録し忘れますと、そのシェルを利用して
   いるユーザの ftp が出来なくなります。
   デフォルトのシェルについては、man shells に記載がございます
   ので、ご参照下さい。


検証結果:

・/etc/shells に /nosuchshell を登録し、ftp を実施

 local% ftp remote_host
 Connected to remote_host.
 220 remote_host FTP server (SunOS 5.8) ready.
 Name (remote_host:user1): ftp-only
 331 Password required for ftp-only.
 Password:
 230 User ftp-only logged in.
 Remote system type is UNIX.
 Using binary mode to transfer files.
 ftp> pwd
 257 "/tmp" is current directory.
 ftp> dir
 229 Entering Extended Passive Mode (|||32791|)
 150 ASCII data connection for /bin/ls (fe80::a00:20ff:xxxx:xxxx,32960) (0 bytes).
 合計 98
 drwxrwxrwt 6 root sys 314 6月 6日 11:05 .
 drwxr-xr-x 30 root root 1024 1月 27日 16:50 ..
 drwxrwxr-x 2 root root 104 6月 6日 11:05 .X11-pipe
 drwxrwxr-x 2 root root 104 6月 6日 11:05 .X11-unix
 drwxrwxrwx 2 root root 107 6月 6日 11:05 .pcmcia
 srwxrwxrwx 1 root root 0 6月 6日 11:05 jd_sockV6
 -rw-rw-r-- 1 root sys 6448 6月 6日 11:04 ps_data
 drwx------ 2 root root 110 6月 6日 11:05 smc898
 226 ASCII Transfer complete.
 539 bytes received in 0.028 seconds (18.55 Kbytes/s)
 ftp> bye
 221 Goodbye.
 local%

・ftp-only ユーザで rlogin が失敗することを確認します。

 local% rlogin remote_host -l ftp-only
 Password:
 Last login: Mon Jun 6 11:11:42 from fe80::a00:20ff:
 No shell
 remote_host への接続を切断しました。
 local%


・/etc/shells に nosuchshell を登録しない場合、ftp が失敗します。

 local% ftp remote_host
 Connected to remote_host.
 220 remote_host FTP server (SunOS 5.8) ready.
 Name (remote_host:user1): ftp-only
 331 Password required for ftp-only.
 Password:
 530 Login incorrect.
 Login failed.
 Remote system type is UNIX.
 Using binary mode to transfer files.
 ftp> bye
 221 Goodbye.
 local%

投稿者 AJ : 17:20トラックバック (0)

2005年6月 2日

削除したユーザが、repquota で表示されるのを削除

質問:

/export/home ファイルシステムに quota の設定を行っている環境で、
user1 のユーザアカウントとホームディレクトリを削除したのですが、
repquota コマンドを実行すると、user1 に割り当てていた UID(2542)
で情報が残っています。
既に存在しないアカウントなので、削除したいのですが、どのように
して削除すれば良いのでしょうか。

# repquota -va /export/home
/dev/dsk/c0t1d0s7 (/export/home):
Block limits File limits
User used soft hard timeleft used soft hard timeleft
#2542 -- 0 100 150 0 100 110
^^^^^
user2 -- 5995 0 6000 8 0 0
#
------------------------------------------------------------------------------
回答:

お問い合わせいただきました件について調査しましたところ、Sun から
同様の事象に対する資料が出ておりましたが、それによりますと、次の
ようにして削除することが可能です。

 # /usr/sbin/edquota -p nobody 2542

以下に弊社での検証結果と Sun の資料を添付致しますので、ご参照下さい。

検証結果)

※ user1 の UID は、2542 としています。

1.user1 のアカウントが存在する状況での repquota の出力

  # repquota -va /export/home
  /dev/dsk/c0t1d0s7 (/export/home):
   Block limits File limits
  User used soft hard timeleft used soft hard timeleft
  user1 -- 1 100 150 1 100 110
  test1 -- 5995 0 6000 8 0 0
  #

2.user1 のアカウントとホームディレクトリを削除後の repquota の出力

  # repquota -va /export/home
  /dev/dsk/c0t1d0s7 (/export/home):
   Block limits File limits
  User used soft hard timeleft used soft hard timeleft
  #2542 -- 0 100 150 0 100 110
  test1 -- 5995 0 6000 8 0 0
  #

3.UID=2542 のエントリを削除します。

  # /usr/sbin/edquota -p nobody 2542

4.repquota で削除されていることを確認します。

  # repquota -va /export/home
  /dev/dsk/c0t1d0s7 (/export/home):
   Block limits File limits
  User used soft hard timeleft used soft hard timeleft
  test1 -- 5995 0 6000 8 0 0
  #


参考資料)
Document Audience: SPECTRUM
Document ID: 15532
Title: QUOTA:How to remove user from quota
Update Date: Thu May 26 00:00:00 MDT 2005
Products: Solaris

Document:

When a user has been deleted, repquota still reports user's UID
For example:

# /usr/sbin/repquota -v /export/home
/dev/dsk/c0t3d0s7 (/export/home):
Block limits File limits
User used soft hard timeleft used soft hard timeleft
celiza -- 49 15000 20000 32 90 100
hen -- 2 45000 40000 2 90 100

After user (hen) and its directory removed

# /usr/sbin/repquota -v /export/home
/dev/dsk/c0t3d0s7 (/export/home):
Block limits File limits
User used soft hard timeleft used soft hard timeleft
celiza -- 49 15000 20000 32 90 100
#1003 -- 2 45000 40000 2 90 100


To remove the user (1003) from quota report

# /usr/sbin/edquota -p nobody 1003

# /usr/sbin/repquota -v /export/home
/dev/dsk/c0t3d0s7 (/export/home):
Block limits File limits
User used soft hard timeleft used soft hard timeleft
celiza -- 49 15000 20000 32 90 100
#

投稿者 AJ : 17:15トラックバック (0)

 
Powered by Movable Type 4.27-ja | RSS1.0 | RSS2.0 | ATOM