3

私は最近、管理者に昇格しました。つまり、アクティブ ディレクトリのユーザー名には、より多くの権限が与えられました。そのため、サーバーへの読み取り/書き込みのアクセス許可が得られましたが、これは少し厄介です。

以前は、 のようなローカル コードを実行my_remote_file.delete()すると、そのメソッドは無視されていました。(技術的には、false が返されます。) しかし、現在、アクティブ ディレクトリのユーザー名にはサーバーに対するすべてのアクセス許可が与えられているため、Java はそのローカル コードを問題なく実行でき、実際にサーバーに影響を与えます。

ローカル コードを実行するときは常に注意を払う必要があるとは思いたくないので、Eclipse 内でローカル コードを実行する場合にのみ、私のアクセス許可を委譲するアイデアがあるかどうかを知りたいと思いました。つまり、Eclipse 内でローカル コードを実行するときは、すべてのサーバー ディレクトリに対して読み取り専用のアクセス許可が必要です。

私が考えた解決策の 1 つは、Active Directory で読み取り専用のアクセス許可を持つ別のユーザーを単純に作成することでしたが、2 つのアカウントを維持しても、将来的にうまくスケールアウトしないと思います。

4

1 に答える 1

2

これは のようなメソッドを正確に「無視」するわけではありませんがmy_remote_file.delete()、ポリシー ファイルを使用する場合は、一部のアクセス許可を変更できます。これにより、ファイルを削除できなくなります/local/file

grant {
    permission java.io.FilePermission
    "/local/file", "read";
};

次に、次のように呼び出します。

java -Djava.security.manager=default -Djava.security.policy=polfile YourEntryPointClass

(おそらくVM引数の下で、Eclipseでも同様のことを行うでしょう)

または、カスタムSecurityManagerを作成し、SecurityExceptionsをスローするメソッドをcheckDelete()実装することもできます。checkWrite()非特権ユーザーを作成しなくても、ローカルファイルシステムのアクセス許可を物理的に変更するのと同様の結果が得られるでしょう。

于 2012-08-08T01:35:08.567 に答える