Ginew.Z 的博客

          一切,為了讓生活更簡(jiǎn)單、更自然

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            21 Posts :: 0 Stories :: 14 Comments :: 0 Trackbacks

          ???? 我們打算為用戶(hù)架設(shè)單獨(dú)的虛擬主機(jī)服務(wù)器,可以讓企業(yè)自主上傳jsp、htm、php等程序。其中resin用來(lái)做jsp的容器。
          ???? 由于是用戶(hù)自主通過(guò)FTP上傳程序,我們必須控制這些程序可以執(zhí)行的權(quán)限,不能讓用戶(hù)隨便瀏覽硬盤(pán)上的文件,但又要能讓resin可以正常運(yùn)行。比如:/data/user_a目錄中的程序,只能在/data/user_a目錄及其子目錄中讀寫(xiě),如果想要訪問(wèn)其他目錄,就沒(méi)有權(quán)限。
          ???? 通過(guò)研究resin的文檔以及JAVA的機(jī)制,我認(rèn)為要實(shí)現(xiàn)以上構(gòu)想,可以通過(guò)使用java權(quán)限管理器來(lái)構(gòu)建一個(gè)resin的沙箱來(lái)對(duì)java的具體操作進(jìn)行授權(quán)。
          參考文檔:http://www.caucho.com/resin-3.0/security/securitymanager.xtphttp://www.jscud.com/srun/news/viewhtml/3_2005_10/148.htm

          ???? 當(dāng)我認(rèn)為勝利在望的時(shí)候,發(fā)現(xiàn)resin好像不支持grant codeBase "file:xxxx 。

          grant codeBase "file:/data/ftpdata/user01.test.com/-" {
          ?permission java.io.FilePermission "/data/ftpdata/user01.test.com/-", "read,write,delete";
          };
          ???? 上面的語(yǔ)句,語(yǔ)法上沒(méi)有問(wèn)題,但就是不起作用。那個(gè)codebase目錄下的文件,對(duì)本目錄沒(méi)有任何權(quán)限。

          ??????? resin的官方論壇里面,有人在2001年,針對(duì)resin1.2.5就提出了和我一摸一樣的疑問(wèn)(http://www.caucho.com/support/resin-interest/0105/0106.html),作者發(fā)現(xiàn)問(wèn)題是由于resin的classloader是非安全的,因此改了resin原文件后解決了問(wèn)題(http://www.caucho.com/support/resin-interest/0105/0112.html),但是我看resin3的源代碼,里面已經(jīng)基于java.security.SecureClassLoader,因此應(yīng)該不是這個(gè)原因了。
          ???? 以下是我的resin.policy文件:

          grant codeBase "file:${java.home}/lib/-" {
          ?permission java.security.AllPermission;
          };

          grant codeBase "file:${java.home}/jre/lib/-" {
          ?permission java.security.AllPermission;
          };

          grant codeBase "file:${resin.home}/lib/-" {
          ?permission java.security.AllPermission;
          };

          grant {
          ?permission java.util.PropertyPermission "*", "read";
          ?permission java.io.SerializablePermission "enableSubstitution";
          ?permission java.lang.reflect.ReflectPermission "suppressAccessChecks";?
          ?permission java.lang.RuntimePermission "accessClassInPackage.*";
          ?permission java.lang.RuntimePermission "getClassLoader";
          ?permission java.lang.RuntimePermission "accessDeclaredMembers";
          ?permission java.lang.RuntimePermission "modifyThreadGroup";
          ?permission java.lang.RuntimePermission "setContextClassLoader";
          ?permission java.lang.RuntimePermission "setIO";
          ?permission java.lang.RuntimePermission "stopThread";
          ?permission java.lang.RuntimePermission "createClassLoader";
          ?permission java.lang.RuntimePermission "getProtectionDomain";
          ?permission java.lang.RuntimePermission "defineClassInPackage";
          ?permission java.security.SecurityPermission "putProviderProperty.SunJCE";
          ?permission java.security.SecurityPermission "insertProvider.SunJCE";
          ?permission java.util.logging.LoggingPermission "control";
          ?permission java.lang.RuntimePermission "getAttribute";
          ?permission java.util.PropertyPermission "jaxp.debug", "read";
          ?permission ognl.OgnlInvokePermission "invoke.*";
          ?permission java.net.SocketPermission "localhost:3306","connect";
          ?permission java.io.FilePermission "${resin.home}/-", "read";
          ?permission java.io.FilePermission "${java.home}/-", "read";
          ?permission java.io.FilePermission "/tmp/-","read,write,delete";
          ?permission java.io.FilePermission "/tmp","read,write,delete";
          ?permission java.io.FilePermission ".","read";
          ?permission java.io.FilePermission "/home/apps/java/jdk/lib/tools.jar","read";
          ?permission java.io.FilePermission "/bin/sh", "read,execute";
          };

          //以下語(yǔ)句沒(méi)有任何作用,/data/ftpdata/user01.test.com/下的jsp對(duì)這個(gè)目錄沒(méi)有讀的權(quán)限
          grant codeBase "file:/data/ftpdata/user01.test.com/-" {
          ?permission java.io.FilePermission "/data/ftpdata/user01.test.com/-", "read,write,delete";
          };

          posted on 2006-06-09 11:00 無(wú)風(fēng)之雨 閱讀(692) 評(píng)論(2)  編輯  收藏 所屬分類(lèi): JavaServer

          Feedback

          # re: resin使用security-manager的問(wèn)題 2007-01-31 15:59 idosi
          您的問(wèn)題解決了嗎? 我也遇到同樣的問(wèn)題  回復(fù)  更多評(píng)論
            

          # re: resin使用security-manager的問(wèn)題 2007-02-09 09:27 ginew
          @idosi

          沒(méi)有,不過(guò)可以試試用tomcat  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 万载县| 抚顺市| 宾阳县| 延吉市| 萍乡市| 五原县| 施秉县| 大埔区| 昭觉县| 开鲁县| 安化县| 独山县| 泰来县| 扬州市| 江陵县| 武隆县| 尖扎县| 沙雅县| 恭城| 肥东县| 申扎县| 开远市| 博白县| 许昌县| 海门市| 包头市| 墨江| 梓潼县| 沁水县| 巩留县| 竹溪县| 肥西县| 德昌县| 行唐县| 西平县| 宁陵县| 色达县| 晋州市| 古交市| 静安区| 越西县|