yuu_nkjm blog


2013-11-18(Mon) [長年日記] 編集

[Apache] Apacheで特定のシンボリックリンクがたどれない(SymLinksIfOwnerMatch)

ルートディレクトリから対象となるディレクトリまでのパーミッションも問題ないし,FollowSymLinksの設定もしているのに,特定のシンボリックリンクをたどってWebコンテンツが見えない場合は,SymLinksIfOwnerMatchを疑ってみる.

Optionsディレクティブ - core - Apache HTTP サーバによると,以下の様に書かている.
SymLinksIfOwnerMatch

シンボリック先のファイルまたはディレクトリが、 シンボリックリンクの所有ユーザ ID と同じ場合にのみシンボリックリンクを たどれるようにします。

サーバの設定を確認してみると,以下の様に~/pulic_htmlにはSymLinksIfOwnerMatchが設定されていた.

[root@host /etc/apache2]$ grep -R "SymLinksIfOwnerMatch" .
mod_userdir.conf:               Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

/home/nkjm以下のコンテンツは全てnkjmが所有しているとすると,SymLinksIfOwnerMatchが設定されている場合,以下の1例目のdevは辿ることができて,以下の2例目のdevは辿ることができない.

[nkjm@host /home/nkjm/public_html]$ ls -la
lrwxrwxrwx  1 nkjm users   50 11月 14 11:03 client -> /home/nkjm/client/
lrwxrwxrwx  1 root root    68 11月 19 23:00 dev -> /home/nkjm/dev
;; シンボリックリンクの所有ユーザIDとシンボリックリンク先の所有ユーザIDが同じでないからたどれない!
[nkjm@host /home/nkjm/public_html]$ ls -la
lrwxrwxrwx  1 nkjm users   50 11月 14 11:03 client -> /home/nkjm/client/
lrwxrwxrwx  1 nkjm users   68 11月 19 23:11 dev -> /home/nkjm/dev
;; シンボリックリンクの所有ユーザIDとシンボリックリンク先の所有ユーザIDが同じなのでたどれる!

2013-11-19(Tue) [長年日記] 編集

[openSUSE][PHP][Troubleshooting] php.iniの初期設定

タイムゾーンの設定をしていないと後になってこけることがある.

;; date.timezone = 'UTC'
date.timezone = 'Asia/Tokyo'

2013-11-22(Fri) [長年日記] 編集

[PHP][gdb] phpのプログラムに対してgdbを使う

phpで書いたプログラムが謎な落ち方をして,エラーログを見ても何も出てない!って時にgdbを使って見た.

PHPでのデバッグ方法 - Yahoo! JAPAN Tech Blogの通りやってみたらうまく行った.


2013-11-23(Sat) [長年日記] 編集

[Kawa][Scheme] グローバル定義の変数やローカル定義の変数をこねくりまわす

Schemeの練習.元々はset!じゃなくてdefineでやりたいんだった….

(define a "hoge")
(define b 'a)
 
(define set-in-func1! (lambda(x) 
  name: 'set-in-func1!
  (display x)     ;; a
  (set! x "pyo")  ;; x=>"pyo"
  (display x)     ;; pyo
))
(trace set-in-func1!)
(set-in-func1! b);; (set-in-func1! a)
a        ;; hoge
b        ;; a
(eval b) ;; b=>a=>"hoge"
 
(define x "hoge")
(define y 'x)
 
(define set-in-func2! (lambda(z) 
  name: 'set-in-func2!
  (display z)             ;; x
  (eval `(set! ,z "pyo")) ;; (eval (set! x "pyo"))
  (display z)             ;; x
))
 
(trace set-in-func2!)
(set-in-func2! y)  ;; y=>x  ===> (set-in-func2! x)
x  ;; "pyo"
y  ;;  x
 
(define m "hoge")
(define n "moge")
 
(define set-in-func3! (lambda(n) 
  name: 'set-in-func3!
  (display n)             ;; "hoge"
  (eval `(set! n "pyo"))  ;; (eval (set! n "pyo")) evalはレキシカルな環境の影響を受けない
  ;;(eval `(set! ,n "bar")) は,(eval (set! "foo" "bar"))となるのでエラー
  (display n)             ;; "hoge"
))
(trace set-in-func3!)
(set-in-func3! m) ;; n=>m=>"foo" ===> (set-in-func3! "foo")
m ;;hoge
n ;;pyo
 
(define x "global")
(define y 'x)
 
(define set-with-macro! (lambda ()
  name: 'set-with-macro!
  (define-macro (macroset! x msg)
     (let ((t (eval x)))
      `(set! ,t ,msg)))
  (define x "local")
  (define y 'x)
  (define set-in-func4! (lambda(z) 
    name: 'set-in-func4!
    (display x)             ;; local
    (macroset! y "change local var")
    (display x)             ;; change local var
  ))
  (set-in-func4! y)
))
 
(trace set-with-macro!)
(set-with-macro!)
x  ;; "global"
y  ;;  x

関連ページ


トップ «前月 最新 翌月» 追記 設定
2006|01|06|12|
2007|06|09|
2008|01|03|04|06|07|08|09|10|12|
2009|01|02|05|06|07|08|10|11|12|
2010|03|04|05|06|07|08|09|10|11|
2011|01|02|03|04|05|06|07|08|09|11|12|
2012|01|02|04|06|07|08|10|11|12|
2013|01|02|03|07|08|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|
2015|01|02|07|11|12|
2016|01|03|05|07|08|09|