web-dev-qa-db-ja.com

書き込み権限-ローカルホスト-Mac OSX

私はMacの世界に不慣れで、ウェブサーバーをセットアップしています。以下のガイドを使用しました: https://alan.ivey.dev/posts/2011/os-x-10.7-lion-development-native-mamp-with-mysql-installer/

サイトとデータベースを転送しましたが、すべて順調に進んでいます。私が持っている唯一の問題は、書き込み権限にあります。たとえば、書き込みが必要な構成ファイルがあり、右クリックして[情報を見る]に移動し、スタッフと全員に対して読み取りと書き込みを有効にする必要がありました。

すべてのファイル/フォルダーに対してこれらの書き込み権限を手動で実行して有効にすることはできません。 WAMPを使用してこれを行う必要がなかったため、開発を大幅に迅速化できました。

したがって、考えられる2つの解決策について考えます:a)ローカルホストのホワイトリストにユーザーアカウントを追加して、644の特権で十分ですb)書き込み特権を再帰的に設定します

22
Paul Mason

最良の解決策は、Apacheのユーザーとグループの設定を変更することでした。手順は次の場所にあります http://paulmason.name/item/change-Apache-user-group-in-lion-os-x

  1. ターミナルを開いて入力

    Sudo nano /private/etc/Apache2/httpd.conf
    
  2. Http.confコードを見つけて変更します

    User _www
    Group _www
    

    User your_mac_username
    Group staff
    

    注:Leopardなどの以前のバージョンでは、スタッフを大文字に変換します。 「id」と入力してターミナルでEnterキーを押すと、ユーザー名とグループを取得できます

  3. Apacheを再起動します

    Sudo apachectl restart
    
49
Paul Mason

上記のブログ投稿の作成者です。 Webサーバーのファイル権限については、_wwwユーザーにファイルの書き込みアクセス権を付与する必要があります。 config.inc.phpの場合、いくつかの方法で設定します。

_wwwにファイルを所有させ、書き込み権限を与えます。

$ Sudo chown _www config.inc.php
$ chmod u+w config.inc.php

ユーザーにファイルを所有させ、グループを_wwwに変更して、グループに書き込み権限を付与します。

$ Sudo chgrp _www config.inc.php
$ chmod g+w config.inc.php

または、セキュリティ上の理由からお勧めしませんが、すべてのユーザーに書き込みを許可してもかまわない場合は、すべてのユーザーに書き込み権限を付与します。

$ chmod a+w config.inc.php

_wwwユーザーがフォルダー全体を書き込む必要がある場合は、フォルダーとすべてのファイルを所有できます。

$ Sudo chown -R _www:_www folder/

または、フォルダに書き込み権限と実行権限をすべて付与することもできます。

$ chmod a+wx folder/

chmod 774が禁止されたエラーを表示した理由は、_wwwユーザーが「4」権限(「読み取り専用」)に該当したためです。ディレクトリの場合、ユーザーはフォルダに移動するために「実行」する必要があります。 chmod 775は、ユーザーとグループにrwxを許可し、他のユーザーとグループにr-xを許可します。 nixファイルのアクセス許可に関する詳細情報

また、アクセス制御リストを使用してすべてのユーザーのアクセスレベルを変更する代わりに、ユーザーが完全な所有権を保持し、_wwwユーザーに特定の権限を追加することもできます。

$ Sudo chmod -R +a '_www allow read,write,delete,add_file,add_subdirectory,file_inherit,directory_inherit' folder
$ Sudo chmod +a '_www allow read,write' config.inc.php

ACLのルートを使用する場合は、もう少し読んで、実際に提供する必要があるアクセスのレベルを確認することをお勧めします。 ここから始めるのに最適な場所

23
Alan Ivey

私はOSXでApacheを実行していますが、これで修正されました。

_Sudo chown -R _www:_www <mywebfolder>
Sudo chmod -R 775 <mywebfolder>
_

アップデート#1:

構文:_Sudo chown <user>:<group> <file-or-folder>_。 OSXのApacheユーザーは__www_です。

所有権は保持するがApache r-w-x権限を付与するには:

_Sudo chown -R <your-username>:_www <mywebfolder>
Sudo chmod -R 775 <mywebfolder>
_

アップデート#2:

私はこの方法が一番好きです。 Apacheを実行するように設定します。

  1. 端末でidと入力してuid=123(Myname)を取得します。

  2. /etc/Apache2/httpd.confを開き、ユーザー名を使用するように編集します。

    _<IfModule unixd_module>
       User Myname
       Group staff
    </IfModule>
    _
  3. ターミナルに戻る:_Sudo apachectl restart_

10
Justin

書き込み権限を再帰的にWebルートに設定することをお勧めします。

コンソール/ターミナルからchmod -R 774 /my/web/rootを使用してこれを行うことができます。私の場合、所有者とグループはwww-data:myUserNameに設定されています。これは、chownを使用して設定できます。最初にWebユーザーを確認することを忘れないでください。

編集:理解を深めるために、アクセスできない理由:

Chmod 774、各番号は特定の権利を表します:ユーザー、グループ、その他。ユーザーがwww-dataに設定され、グループがwww-dataに設定されている場合(UNIXシステムのほとんどのユーザーは、ユーザー名で名前が付けられたグループに属しています)。したがって、グループwww-dataに参加していない場合は、グループに参加するか、所有者を変更する(chown)か、権限を変更する(chmod)必要があります。詳細については、いくつかのチュートリアルがあります。

2
sascha

上記の解決策は私にはうまくいきませんでした。私がしたことは:

フォルダを右クリック->情報を見る

enter image description here

一番下に特権設定があります。

EveryoneRead&Writeに変更します。

0
Sayka