[tomoyo-users 646] 再帰指定の方法について

Back to archive index

Tetsuo Handa from-****@I-lov*****
2009年 9月 13日 (日) 21:20:52 JST


 熊猫です。

 何度も要望の出ていた「パス名を再帰的に指定する」方法をサポートすることに
なりました。大きな変化なので tomoyo-users でも事前にお知らせとご意見募集を
行います。



 現在、 /\{dir\}/ というパターンを "/" + " dir/ の1回以上の繰り返し" に
一致させる方向で進んでいます。例えば、

 allow_read /var/www/html/\{\*\}/\*.html

という指定は

 allow_read /var/www/html/\*/\*.html
 allow_read /var/www/html/\*/\*/\*.html
 allow_read /var/www/html/\*/\*/\*/\*.html
 allow_read /var/www/html/\*/\*/\*/\*/\*.html
 allow_read /var/www/html/\*/\*/\*/\*/\*/\*.html
 (以下省略)

のように機能します。また、

  path_group SVN_FILES /home/kumaneko/SVN/\{\*\-.svn\}/\*

という指定は

 path_group SVN_FILES /home/kumaneko/SVN/\*\-.svn/\*
 path_group SVN_FILES /home/kumaneko/SVN/\*\-.svn/\*\-.svn/\*
 path_group SVN_FILES /home/kumaneko/SVN/\*\-.svn/\*\-.svn/\*\-.svn/\*
 path_group SVN_FILES /home/kumaneko/SVN/\*\-.svn/\*\-.svn/\*\-.svn/\*\-.svn/\*
 path_group SVN_FILES /home/kumaneko/SVN/\*\-.svn/\*\-.svn/\*\-.svn/\*\-.svn/\*\-.svn/\*
 (以下省略)

のように機能します。



 しかし、1回以上の繰り返しなので、

 allow_read /var/www/html/\*.html

や

 path_group SVN_FILES /home/kumaneko/SVN/\*

のようには機能しません。そのため、

 /var/www/html/ 以下の全ての \*.html を読み込みモードでオープンしてよい

という指定を行いたい場合には

 allow_read /var/www/html/\*.html
 allow_read /var/www/html/\{\*\}/\*.html

のように2行に分けて指定する必要があります。
行数を減らすために /var/www/html/\{\*\}/\*.html が /var/www/html/\*.html
( \*/ の0回繰り返し)を包含してほしいと考えている方もいるようです。



 もし、0回以上の繰り返しにした場合、 /tmp/ 以下の全てのディレクトリを
指定するつもりで

 allow_rmdir /tmp/\{\*\}/

のように指定してしまうと /tmp/ ディレクトリ自身も含まれてしまうことになり、
期待していたものよりも広い許可を与えてしまう危険があります。

 0回以上の繰り返しにした場合でも、 /\{dir\}/ というパターンで終わる指定を
禁止するという制約を付ければ、明示的に

 allow_rmdir /tmp/\{\*\}/\*/

のような指定を行うことになるため、 /tmp/ ディレクトリ自身が含まれてしまうことを
回避できるかと思います。



 そこで、ご意見募集です。 /\{dir\}/ というパターンは

(1) "/" + " dir/ の1回以上の繰り返し" に一致させる

(2) "/" + " dir/ の0回以上の繰り返し" に一致させる

(3) "/" + " dir/ の0回以上の繰り返し" に一致させるが、 /\{dir\}/ という
  パターンで終わる指定を禁止するという制約を付ける

のどれが良いと思いますか?




tomoyo-users メーリングリストの案内
Back to archive index