- - PR -
javaからのユーザ変更
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-06-10 18:05
以下を実現したいのですが、可能でしょうか?
【やりたいこと】 ユーザAのファイルをユーザBのディレクトリにコピーしたい。 【制約】 ユーザAでアプリケーションを実行する。 shell内でのユーザ変更不可 【問題点】 普通にjavaからコピーしてしまうとユーザBのディレクトリ内に ユーザAがオーナーのファイルが出来てしまう。 【課題】 javaからユーザの変更を行い、ファイルのコピーを行いたい。 【環境】 jdk:1.4 OS:Red Hat Linux いろいろと調べてみましたが、分かりませんでした。 java内でユーザの変更を行うことは可能なのでしょうか? 以下試したソースです。 Runtime rt = Runtime.getRuntime(); Process process = rt.exec("sudo - hoge"); PrintStream ps = new PrintStream(process.getOutputStream(), true); ps.println("hogehoge\n"); ps.flush(); ps.println("copy.sh"); ps.flush(); よろしくお願いします。 |
|
投稿日時: 2008-06-11 00:12
「いろいろと調べてみましたが」だけではわからないので何を調べたか書いた方がいいです。
「制約」の部分も背景を書いた方がいいです。 そっちをクリアした方がいい結果なのかもしれないし。 #ファイルのコピーをわざわざJavaでやるのが理解できません。 sudo -u userB copy.sh でいいんじゃない? 「ユーザBのディレクトリ内に ユーザAがオーナーのファイルが出来てしまう。 」もなぜ問題なのかわかりません。消せないファイルができるから? |
|
投稿日時: 2008-06-11 10:54
Java僧さん
返信&ご指摘ありがとうございます。 私が調べた点は、Runtime#execを利用してユーザ変更できるかどうかを 調べました。 hottp://www.atmarkit.co.jp/bbs/phpBB/viewtpic.php?topic=36858&forum=12&2 も参照してみましたが、解決に至っていません。 オーナーが違うファイルが出来てしまうのが問題となっているのは、 クォータ管理が煩雑になると指摘を受けています。 今回の背景は、あるWEBページの設定を確認用のサーバで行い、 ある時間に本番用のサーバに設定を移行したいと思っています。 確認用のサーバ:UserA 本番用のサーバ:UserB sudo -u UserB copy.sh を実行したところ、やはりパスワード入力待ちになってしまいました。 昨日は、UserAで実行させなければ、という固定観念にとらわれてしまい、 別アプローチの検討がおろそかになっていました。 UserBで実行すれば解決しますので、設計見直したいと思います。 ご指摘ありがとうございました。 |
1