心無痕的博客

          常用鏈接

          統計

          積分與排名

          JAVA技術文檔

          JAVA精典網站

          開發工具

          數據庫

          最新評論

          Tomcat或Resin使用security-manager的問題--轉載

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

               當我認為勝利在望的時候,發現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";
          };
               上面的語句,語法上沒有問題,但就是不起作用。那個codebase目錄下的文件,對本目錄沒有任何權限。

                  resin的官方論壇里面,有人在2001年,針對resin1.2.5就提出了和我一摸一樣的疑問(http://www.caucho.com/support/resin-interest/0105/0106.html),作者發現問題是由于resin的classloader是非安全的,因此改了resin原文件后解決了問題(http://www.caucho.com/support/resin-interest/0105/0112.html),但是我看resin3的源代碼,里面已經基于java.security.SecureClassLoader,因此應該不是這個原因了。
               以下是我的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";
          };

          //以下語句沒有任何作用,/data/ftpdata/user01.test.com/下的jsp對這個目錄沒有讀的權限
          grant codeBase "file:/data/ftpdata/user01.test.com/-" {
           permission java.io.FilePermission "/data/ftpdata/user01.test.com/-", "read,write,delete";
          };

          posted on 2008-03-08 11:46 心無痕 閱讀(841) 評論(0)  編輯  收藏 所屬分類: JAVA

          主站蜘蛛池模板: 民乐县| 姜堰市| 嘉义县| 和静县| 永修县| 榆林市| 吉木萨尔县| 巴青县| 琼海市| 乌苏市| 渭源县| 从化市| 上犹县| 吴江市| 西贡区| 攀枝花市| 洞口县| 育儿| 仁化县| 山西省| 鹤山市| 格尔木市| 开封县| 马关县| 特克斯县| 合肥市| 监利县| 宜宾市| 凤山市| 英吉沙县| 乌审旗| 南漳县| 乳山市| 化州市| 乐至县| 从化市| 洪泽县| 射阳县| 吴桥县| 安吉县| 柳河县|