Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation.
This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
version 2 for more details (a copy is included in the LICENSE file that
accompanied this code).
You should have received a copy of the GNU General Public License version
2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
CA 95054 USA or visit www.sun.com if you need additional information or
have any questions.
\f3rmid �ǵ�ư�����ƥ�ǡ����Ϥ���ȡ����֥������Ȥ��ۥޥ��� (VM) ����Ͽ���Ƶ�ư�Ǥ���褦�ˤʤ�ޤ���
��ư�����ƥ�ǡ����ϡ����Τ褦�˥������ƥ��ݥꥷ���ե��������ꤷ�� rmid ���ޥ�ɤ�¹Ԥ��뤳�Ȥˤ�äƳ��ϤǤ��ޤ���
% rmid -J-Djava.security.policy=rmid.policy
��: Sun �� rmid ������¹Ԥ����硢�ǥե���ȤǤϥ������ƥ��ݥꥷ���ե��������ꤹ��ɬ�פ�����ޤ����������뤳�Ȥǡ���ư���롼���Ѥ� JVM �ε�ư�ˡ��� ActivationGroupDesc ��ξ������ѤǤ��뤫�ɤ����� rmid ����ǧ�Ǥ��ޤ����äˡ� CommandEnvironment �ˤ����ꤵ��륳�ޥ�ɤ䥪�ץ������� ActivationGroupDesc �Υ��ȥ饯�����Ϥ���뤹�٤Ƥ� �ץ�ѥƥ� �ϡ� rmid �ѤΥ������ƥ��ݥꥷ���ե����������Ū�˵��Ĥ��뤳�Ȥ�ɬ�פˤʤ�ޤ����� sun.rmi.activation.execPolicy �ץ�ѥƥ����ͤϡ���ư���롼�פ� JVM �ε�ư�� ActivationGroupDesc ��ξ������ѤǤ��뤫�ɤ�����Ƚ�Ǥ� rmid �����Ѥ���ݥꥷ����������ޤ���
rmid ��ǥե��������Ǽ¹Ԥ��뤳�Ȥˤ�ꡢ�ʲ����Ԥ��ޤ���
2 ���Υ��ޥ�ɤϥ����ƥ��١�����ư����ȤȤ�˥ǥե���ȥݡ��Ȥ� 1098 �������쥸���ȥ�� ���Ϥ���
0
ActivationSystem �� java.rmi.activation.ActivationSystem �Ȥ���̾���������쥸���ȥ��ǥХ���ɤ��ޤ���
rmid -J-Djava.security.policy=rmid.policy -port 1099
���Υ��ޥ�ɤϡ���ư�����ƥ�ǡ����Ϥ����쥸���ȥ�Υǥե���ȥݡ��� 1099 �ǥ쥸���ȥ�Ϥ��ޤ���
���ޥ�ɹԤ��� rmid ��ư���ʤ��ǡ� inetd (Solaris) �ޤ��� xinetd (Linux) �����ꤷ�� rmid ��ɬ�פ˱����Ƶ�ư���뤳�Ȥ��Ǥ��ޤ���
��ư���� rmid �ϡ�System.inheritedChannel ��åɤ�ƤӽФ��� �Ѿ�����ͥ� (inetd/xinetd ����ηѾ�) �� �������ߤޤ��� �Ѿ����줿�����ͥ뤬 \f2null �Ǥ��뤫��\f2java.nio.channels.ServerSocketChannel �Υ����Ǥʤ��ä���硢\f2rmid �Ϥ��Υ����ͥ�� \f2inetd/\f2xinetd �ˤ�äƵ�ư���줿��ΤǤϤʤ���Ƚ�Ǥ������ҤΤ褦�˵�ư���ޤ���
�Ѿ������ͥ뤬 ServerSocketChannel �����ξ�硢 rmid �� ServerSocketChannel ���� �������� java.net.ServerSocket �� �������ݡ��Ȥ����⡼�ȥ��֥������� (java.rmi.activation.ActivationSystem �� �Х���ɤ����쥸���ȥ�� java.rmi.activation.Activator ��⡼�ȥ��֥�������) ���Ф������ ��������륵���Х����åȤȤ��ƻ��Ѥ��ޤ���
���Υ⡼�ɤǤϡ� rmid ��ư��ϡ����Τ��Ȥ��ơ� ���ޥ�ɹԤ��鵯ư��������Ʊ���Ǥ���
2 \(bu System.err ��ɽ���������Ϥϥե�����˥�����쥯�� ����ޤ������Υե�����ϡ���Ƭ����rmid-err�פ������tmp�פ� ���Ѥ��� java.io.tmpdir �����ƥ�ץ�ѥƥ� (�̾� /var/tmp �ޤ��� /tmp) �ǻ��ꤷ���ǥ��쥯�ȥ�ˤ���ޤ���
2 \(bu -port ���ץ����ϵ��Ĥ���Ƥ��ޤ����Υ��ץ���� ���ꤵ��Ƥ����硢 rmid �ϥ��顼��å�������ɽ������ ��λ���ޤ���
2 \(bu -log ���ץ�����ɬ�ܤǤ������Υ��ץ���� ���ꤵ��Ƥ��ʤ���硢 rmid �ϥ��顼��å�������ɽ������ ��λ���ޤ���
ɬ�פ˱����Ƴ��Ϥ��륵���ӥ���������ˡ�ˤĤ��Ƥξܺ٤ϡ� inetd (Solaris) �ޤ��� xinetd (Linux) �Υޥ˥奢��ڡ����� ���Ȥ��Ƥ���������
-C someCommandLineOption rmid �λҥץ?�� (��ư���롼��) ���������줿�Ȥ��ˡ��ƻҥץ?���˥��ޥ�ɹ�� �Ȥ����Ϥ���륪�ץ�������ꤷ�ޤ������Ȥ��С����Τ褦�˻��ꤹ��ȡ���ư�����ƥ� �ǡ����ˤ�ä����������� Java Virtual Machine �˥ץ�ѥƥ����Ϥ����Ȥ��Ǥ��ޤ��� rmid -C-Dsome.property=value ���ޥ�ɹ����ҥץ?�����Ϥ���ǽ�ϡ��ǥХå���Ԥ��ݤ�����Ǥ��� ���Ȥ��С����Τ褦�ʥ��ޥ�ɤ�¹ԤǤ��ޤ��� rmid -C-Djava.rmi.server.logCalls=true ���Υ��ޥ�ɤˤ�äơ����٤Ƥλ� JVM �ǥ����иƤӽФ��Υ?���Ĥ�褦�ˤʤ�ޤ���
-J<someCommandLineOption> rmid ��¹���� java ���ץ���Ϥ����ץ�������ꤷ�ޤ������Ȥ��С� rmid �� rmid.policy �Ȥ���̾���Υݥꥷ���ե��������Ѥ����硢 rmid �Υ��ޥ�ɹԤ� -J ���ץ�����Ȥä� java.security.policy �ץ�ѥƥ���������ޤ�����������ޤ��� rmid -J-Djava.security.policy=rmid.policy
-J-Dsun.rmi.activation.execPolicy=<policy> ��ư���롼�פμ¹��оݤȤʤ� JVM �ε�ư�˻��Ѥ��륳�ޥ�ɤ���ӥ��ޥ�ɹԥ��ץ��������뤿��ˡ� rmid �����Ѥ���ݥꥷ������ꤷ�ޤ������Υ��ץ����ϡ�Sun �� RMI ��ư�ǡ�������������¸�ߤ��뤳�Ȥ���դ��Ƥ������������ޥ�ɹԤˤ��Υץ�ѥƥ�����ꤷ�ʤ���硢��̤� -J-Dsun.rmi.activation.execPolicy=default ����ꤷ������Ʊ���ˤʤ�ޤ��� policy �˻����ǽ���ͤϡ� default �� policyClassName ���ޤ��� none �Ǥ���
2 default (�ޤ��ϡ����Υץ�ѥƥ�����ꤷ�ʤ����)
�ǥե���Ȥ� execPolicy �Ǥϡ����Ѥ��륻�����ƥ��ݥꥷ���ե�������Υ��ޥ�ɤ���ӥ��ץ�����¹Ԥ��븢�¤� rmid ��Ϳ��������ˤΤߡ� rmid ������Υ��ޥ�ɹԥ��ץ�������ꤷ�ƥ��ޥ�ɤ�¹ԤǤ��ޤ��� default �μ¹ԥݥꥷ������ѤǤ���Τϡ� �ǥե���Ȥε�ư���롼���������Ǥ��� rmid �ϡ���ư���롼�פ� JVM ��ư����ݡ�������Ͽ���줿��ư���롼���һҤǤ��� ActivationGroupDesc ��ξ������Ѥ��ޤ������롼���һҤǤϡ����ץ����� ActivationGroupDesc.CommandEnvironment ����ꤷ�ޤ�������ˤϡ���ư���롼�פϤ���֥��ޥ�ɡס�����ӥ��ޥ�ɹԤ��ɲä��� Ǥ�դΥ��ޥ�ɹԡ֥��ץ����פ��ޤޤ�ޤ����ǥե���ȤǤϡ� rmid �� java.home �ˤ��� java ���ޥ�ɤ���Ѥ��ޤ������롼���һҤˤϡ����˼����褦�ˡ����ץ����Ȥ��ƥ��ޥ�ɹԤ� �ɲä����֥ץ�ѥƥ��ץ����С��饤�ɤ�ޤޤ�ޤ��� -D<property>=<value> ���������� com.sun.rmi.rmid.ExecPermission ����Ѥ���ȡ� rmid ���Ф������롼���һҤ� CommandEnvironment �ǻ��ꤵ�줿���ޥ�ɤ�¹Ԥ��Ƶ�ư���롼�פϤ��븢�¤�Ϳ���뤳�Ȥ��Ǥ��ޤ��� ���������� com.sun.rmi.rmid.ExecOptionPermission ����Ѥ���ȡ���ư���롼�פϤ���Ȥ��ˡ� ���롼���һҤǥץ�ѥƥ������С��饤�ɤȤ��ƻ��ꤵ�줿���ޥ�ɹ� ���ץ���ޤ��� CommandEnvironment �ǥ��ץ����Ȥ��ƻ��ꤵ�줿���ޥ�ɹԥ��ץ����� rmid ������ѤǤ��ޤ��� rmid �ˤ��ޤ��ޤʥ��ޥ�ɤ���ӥ��ץ�����¹Ԥ��븢�¤�Ϳ�����硢���������� ExecPermission ����� ExecOptionPermission ������Ū�� (�Ĥޤꡢ���٤ƤΥ����ɥ��������Ф���) ���Ĥ���ɬ�פ�����ޤ���
ExecPermission ExecPermission ���饹�ϡ���ư���롼�פϤ��뤿��� rmid ������Ρ֥��ޥ�ɡפ�¹Ԥ��븢�¤�ɽ���ޤ���
��ʸ
ExecPermission �Ρ�̾���פϡ� rmid �˼¹Ը��¤�Ϳ���륳�ޥ�ɤΥѥ�̾�Ǥ�����/*��(��/�פϥե�������ڤ�ʸ��Ĥޤ� File.separatorChar ) �ǽ����ѥ�̾�ϡ����Υǥ��쥯�ȥ�˴ޤޤ�뤹�٤ƤΥե������ɽ���ޤ�����/-�� �ǽ����ѥ�̾�ϡ����Υǥ��쥯�ȥ�˴ޤޤ�뤹�٤ƤΥե�����ȥ��֥ǥ��쥯�ȥ� (�Ƶ�Ū��) ��ɽ���ޤ����ѥ�̾�����̤ʥȡ������<<ALL FILES>>�פ���ꤷ�����ϡ� Ǥ�դΥե�����˰��פ��ޤ��� ��: ��*�פ� 1 �Ĥ������ꤵ�줿�ѥ�̾�ϡ����ߤΥǥ��쥯�ȥ���Τ��٤ƤΥե������ɽ���� ��-�פ� 1 �Ĥ������ꤵ�줿�ѥ�̾�ϡ����ߤΥǥ��쥯�ȥ���Τ��٤ƤΥե�����ȡ� ���ߤΥǥ��쥯�ȥ�˴ޤޤ�뤹�٤ƤΥե�����ȥ��֥ǥ��쥯�ȥ� (�Ƶ�Ū��) ��ɽ���ޤ���
ExecOptionPermission ExecOptionPermission ���饹�ϡ���ư���롼�פγ��ϻ��� rmid ������Υ��ޥ�ɹԡ֥��ץ����פ���Ѥ��븢�¤�ɽ���ޤ��� ExecOptionPermission �Ρ�̾���פϡ����ޥ�ɹԥ��ץ������ͤǤ���
��ʸ
���ץ����Ǥϡ������դ��磻��ɥ����ɻ��꤬���ݡ��Ȥ���ޤ��� �������ꥹ���ϡ��磻��ɥ����ɥޥå�����ꤷ�ޤ����������ꥹ���ϡ� ���ץ����̾���Τ�ɽ�� (�Ĥޤꡢ���٤ƤΥ��ץ����˰��פ���) ����� ���ѤǤ��ޤ����ޤ�����.�פ���ӡ�=�פμ��˻��ꤹ����ˤΤߡ� ���ץ����̾�κǸ�˥������ꥹ������ѤǤ��ޤ��� ����ޤ�����*�ס���-Dfoo.*�ס���-Da.b.c=*�פ�ͭ��Ǥ�����*foo�ס���-Da*b�� ����ab*�פ�̵��Ǥ���
rmid �Υݥꥷ���ե����� rmid �ˤ��ޤ��ޤʥ��ޥ�ɤ���ӥ��ץ�����¹Ԥ��븢�¤�Ϳ������ϡ����������� ExecPermission ����� ExecOptionPermission ������Ū�� (�Ĥޤꡢ���٤ƤΥ����ɥ��������Ф���) ���Ĥ���ɬ�פ�����ޤ��� �����Υ���������������Τ� rmid �����Ǥ��뤿�ᡢ����Ū�˵��Ĥ��Ƥ�����Ǥ��� rmid �ˤ��ޤ��ޤʼ¹Ը��¤���Ĥ���ݥꥷ���ե����������˼����ޤ���
grant { permission com.sun.rmi.rmid.ExecPermission "/files/apps/java/jdk1.2.2/solaris/bin/java"; permission com.sun.rmi.rmid.ExecPermission "/files/apps/java/jdk1.2.2/solaris/bin/java_g"; permission com.sun.rmi.rmid.ExecPermission "/files/apps/rmidcmds/*"; permission com.sun.rmi.rmid.ExecOptionPermission "-Djava.security.policy=/files/policies/group.policy"; permission com.sun.rmi.rmid.ExecOptionPermission "-Djava.security.debug=*"; permission com.sun.rmi.rmid.ExecOptionPermission "-Dsun.rmi.*"; };�ǽ�� 2 �ĤΥ����������ϡ� rmid ���Ф����ѥ�̾�ˤ���������줿 1.2.2 �С������� java ���ޥ�ɤ�¹Ԥ�����Ĥ�Ϳ���ޤ����ǥե���ȤǤϡ� java.home �ˤ��� java ���ޥ�ɤΥС������ ( rmid �����Ѥ���Τ�Ʊ�����) �����Ѥ���뤿�ᡢ�ݥꥷ���ե�����ǻ��ꤹ��ɬ�פϤ���ޤ��� 3 ���ܤΥ����������ϡ� rmid ���Ф����ǥ��쥯�ȥ� /files/apps/rmidcmds ���Ǥ�դΥ��ޥ�ɤ�¹Ԥ��븢�¤�Ϳ���ޤ��� 4 ���ܤ˵��Ĥ��줿���������� ExecOptionPermission �ϡ� rmid ���Ф����������ƥ��ݥꥷ���ե������ /files/policies/group.policy ��������뵯ư���롼�פϤ��븢�¤�Ϳ���ޤ������Υ����������ϡ���ư���롼�פ� java.security.debug �ץ�ѥƥ�����Ѥ��븢�¤�Ϳ���ޤ����Ǹ�Υ����������ϡ� ��ư���롼�פ� sun.rmi �ץ�ѥƥ�̾�������Ǥ�դΥץ�ѥƥ�����Ѥ��븢�¤�Ϳ���ޤ��� �ݥꥷ���ե������Ȥä� rmid ��ư����ˤϡ� rmid �Υ��ޥ�ɹԤ� java.security.policy �ץ�ѥƥ�����ꤹ��ɬ�פ�����ޤ�����������ޤ��� rmid -J-Djava.security.policy=rmid.policy
2 <policyClassName> �ǥե���Ȥ�ư��ǤϽ�ʬ�ʽ������������ʤ���硢����Ԥ� rmid �ε�ư���ˡ� checkExecCommand ��åɤ��¹Ԥ���륯�饹��̾������ꤹ�뤳�Ȥˤ�ꡢ rmid ���¹Ԥ��륳�ޥ�ɤ��Ǥ��ޤ��� policyClassName �ˤϡ�public �ǰ����ɬ�פȤ��ʤ����ȥ饯���ȤȤ�� public ���饹����ꤷ�ޤ����ޤ������� checkExecCommand ��åɼ�������ꤷ�ޤ���
public void checkExecCommand(ActivationGroupDesc desc, String[] command) throws SecurityException;��ư���롼�פϤ������ˡ� rmid �ϡ��ݥꥷ���� checkExecCommand ��åɤ�ƤӽФ��ơ���ư���롼�פε��һҤ���ӵ�ư���롼�פϤ��봰���� ���ޥ�ɤ�ޤ�������Ϥ��ޤ��� checkExecCommand �� SecurityException �?�����硢 rmid �ϵ�ư���롼�פϤ��������֥������Ȥε�ư���ߤƤ���ƤӽФ�¦�� ActivationException �����?����ޤ���
none sun.rmi.activation.execPolicy �ץ�ѥƥ����ͤ���none�פξ�硢 rmid �ϡ���ư���롼�פγ��ϥ��ޥ�ɤθ��ڤ���ڹԤ��ޤ���
-log " dir" ��ư�����ƥ�ǡ���ǡ����١�������Ӵ�Ϣ��������Τ˻Ȥ��� �ǥ��쥯�ȥ��̾������ꤷ�ޤ����ǥե���ȤǤϡ� rmid ���ޥ�ɤ�¹Ԥ����ǥ��쥯�ȥ�� log �Ȥ����?�ǥ��쥯�ȥ꤬��������ޤ���
-port " port" rmid �Υ쥸���ȥ꤬�Ȥ��ݡ��Ȥ���ꤷ�ޤ�����ư�����ƥ�ǡ����ϡ� java.rmi.activation.ActivationSystem �Ȥ���̾���� ActivationSystem ��쥸���ȥ�˥Х���ɤ��ޤ����������äơ��?����ޥ���� ActivationSystem �ϡ����Τ褦�� Naming.lookup ��åɤ�ƤӽФ����Ȥˤ�äƼ����Ǥ��ޤ���
import java.rmi.*; import java.rmi.activation.*; ActivationSystem system; system = (ActivationSystem) Naming.lookup("//:port/java.rmi.activation.ActivationSystem"); .fl
-stop -port ���ץ����ˤ�äƻ��ꤵ�줿�ݡ��ȤΡ����ߤ� rmid �θƤӽФ�����ߤ��ޤ����ݡ��Ȥλ��꤬�ʤ����ϡ��ݡ��� 1098 �Ǽ¹Ԥ���Ƥ��� rmid ����ߤ��ޤ���
20 "CLASSPATH" �桼��������饹�ؤΥѥ����ƥ�����Τ��뤿��˻��Ѥ��ޤ����ǥ��쥯�ȥ�ϥ����� ���ڤ�ޤ����ʲ�������ޤ���
rmic��CLASSPATH��java