web-dev-qa-db-ja.com

Macでシンボリックリンクの権限を変更できないのはなぜですか?

簡単な質問とおそらく簡単な答えがあります。

ホームフォルダにいくつかのディレクトリがあり、Webサーバーのディレクトリとして利用できるようにします。だから、私がしたことはシンボリックリンクを作成することでした:

iMac:/Library/WebServer/Documents/ ls -ltr
-rw-rw-r--  1 root      admin     44 Nov 20  2004 index.html.en
-rw-rw-r--  1 root      admin  31958 May 18  2009 PoweredByMacOSXLarge.gif
-rw-rw-r--  1 root      admin   3726 May 18  2009 PoweredByMacOSX.gif
-rwxr-xr-x  1 mego  admin      0 Jan  6  2011 favicon.ico
lrwxrwxr-x  1 mego  admin     52 Jul 26 13:45 myadmin -> /Users/mego/Downloads/phpMyAdmin-3.4.3.2-english
iMac:/Library/WebServer/Documents/ ln -s /Users/mego/opt/rel/src/main/web/ rel
iMac:/Library/WebServer/Documents/ ls -ltr
-rw-rw-r--  1 root      admin     44 Nov 20  2004 index.html.en
-rw-rw-r--  1 root      admin  31958 May 18  2009 PoweredByMacOSXLarge.gif
-rw-rw-r--  1 root      admin   3726 May 18  2009 PoweredByMacOSX.gif
-rwxr-xr-x  1 mego  admin      0 Jan  6  2011 favicon.ico
lrwxrwxr-x  1 mego  admin     52 Jul 26 13:45 myadmin -> /Users/mego/Downloads/phpMyAdmin-3.4.3.2-english
lrwxrwx---  1 mego  admin     47 Oct 12 09:58 rel -> /Users/mego/opt/rel/src/main/web/

/ Users/mego/opt/relの権限は再帰的にa + rxに設定されるため、誰でも読み取りと実行ができます。

権限を変更しようとすると、つまり "chmod a + rx rel"および "chmod -R a + rx/Users/mego/opt/rel"、ゼロ効果。

の出力

ls -ld / /Users /Users/mego /Users/mego/opt /Users/mego/opt/rel /Users/mego/opt/rel/src /Users/mego/opt/rel/src/main /Users/mego/opt/rel/src/main/web

iMac:~/ ls -ld / /Users /Users/mego /Users/mego/opt /Users/mego/opt/rel /Users/mego/opt/rel/src /Users/mego/opt/rel/src/main /Users/mego/opt/rel/src/main/web
drwxrwxr-t@ 39 root      admin  1394 Sep 14 15:30 /
drwxr-xr-x   7 root      admin   238 Aug 29 10:04 /Users
drwxr-xr-x+ 98 mego  staff  3332 Oct 15 10:59 /Users/mego
drwxrwxr-x  19 mego  staff   646 Oct 14 20:47 /Users/mego/opt/rel
drwxrwxr-x   5 mego  staff   170 May 31 08:01 /Users/mego/opt/rel/src
drwxrwxr-x   6 mego  staff   204 Oct 12 08:42 /Users/mego/opt/rel/src/main
drwxrwxr-x   5 mego  staff   170 Oct 12 08:42 /Users/mego/opt/rel/src/main/web
iMac:~/ 

ユーザーのホームフォルダに関連するものである必要があります。しかし不思議なことに、別のフォルダ "myadmin"には正しい権限があり、機能します。私は何が間違っているのですか?

前もって感謝します。

5
user11498

/Users/megoには [〜#〜] acl [〜#〜] があり、アクセスを妨げている可能性があります。これは、このディレクトリの+の出力に対する従来のunixパーミッションの後のls -lが示していることです。 ls -lde /Users/megoを実行して、このACLを表示します。

ユーザーが/Users/megoへのアクセスを拒否された場合(重要なのは 実行可能ビット )、その下にあるものにはアクセスできないことに注意してください。したがって、Webサーバーユーザーに実行権限/Users/megoがない場合、/Users/mego/opt/relが誰でも読み取り可能であるかどうかは関係ありません。Webサーバーユーザーはそこまで到達できません。シンボリックリンクが含まれていることも問題ではありません。シンボリックリンクを介したアクセスには、ターゲットへのパスのトラバースが含まれます。

chmod を使用してACLを操作します。 manページの例でうまくいくはずです(例から必要なものがわからない場合は、ここで質問して、ls -lde /Users/megoの出力を投稿してください)。

 man chmod 

.。

-hファイルがシンボリックリンクの場合は、リンクが指すファイルではなく、リンク自体のモードを変更します。

.。

だから次のようなもの:

 chmod -h /Users/mego/opt/rel

動作するはずです。

2
Jistanidiot

chmodは、シンボリックリンクで使用された場合にのみ、ターゲットファイル/ディレクトリのアクセス許可に影響を与えると思います。 lchmodは、実際のシンボリックリンクの権限を変更する必要があります。

0
Mike Covington