web-dev-qa-db-ja.com

Linux、グループのアクセス許可を持っているのに、なぜ書けないのですか?

私が所属するスタッフグループが所有するディレクトリにファイルを作成したい。なぜこれができないのですか?

bmccann@bmccann-htpc:~$ ls -l /usr/local/lib/R/
total 4
drwxrwsr-x 2 root staff 4096 2010-07-31 16:21 site-library
bmccann@bmccann-htpc:~$ id -nG bmccann
bmccann adm dialout cdrom plugdev staff lpadmin admin sambashare
bmccann@bmccann-htpc:~$ touch /usr/local/lib/R/site-library/tmp
touch: cannot touch `/usr/local/lib/R/site-library/tmp': Permission denied
100
Ben McCann

グループを変更した後、ログアウトして再度ログインしましたか?見る:
タッチ許可の失敗を含むスーパーユーザーの回答

191
AdamJonR

Linuxユーザーが自分が所属するグループのファイルを編集できないのはなぜですか

私はUbuntu 12.04を使用していますが、ユーザーがグループアクセスを許可されているファイルに書き込むことができないという同じ問題がありました。例えば:

whoami                                        //I am user el
  el                                            

touch /foobar/test_file                       //make a new file

Sudo chown root:www-data /foobar/test_file    //User=root  group=www-data

Sudo chmod 474 /foobar/test_file              //owner and others get only read, 
                                              //group gets rwx


Sudo groupadd www-data                        //create group called www-data    

groups                                        //take a look at the groups and see
 www-data                                     //www-data exists.

groups el                                     //see that el is part of www-data
  el : www-data                               

ここでターミナルを再起動して、ユーザーとグループが有効になっていることを確認します。 elとしてログインします。

vi /foobar/test_file                          //try to edit the file.

警告を生成します:

Warning: W10: Warning: Changing a readonly file"

何?私はすべてを正しくしましたが、なぜうまくいかないのですか?

回答:

コンピューターを完全に再起動します。これらの問題を解決するには、ターミナルを停止するだけでは不十分です。

Apache2もwww-dataグループを使用しているので、ユーザーとグループが正しく強制されるのを何らかの形で妨げるタスクだったと思います。ログアウトするだけでなく、グループを使用するサービスを停止して再起動する必要があります。再起動しても取得できない場合は、より大きな問題が発生しています。

14
Eric Leschinski

同じ問題がありましたフォルダーにACLルールがまだあるかどうかを確認してください!

フォルダを一覧表示するときに+(プラス記号)が表示される場合、それは特別なアクセスルールがあることを意味します。例えば:

[user_in_Apache_group@web02 html]$ ls -l
total 16
drwxrwxr-x  16 Apache apache 4096 Sep  4 13:46 ilias
drwxrwxr-x+ 15 Apache apache 4096 Sep  4 13:46 ilias5

許可を表示します。

[user_in_Apache_group@web02 html] getfacl ilias5
# file: ilias5
# owner: Apache
# group: Apache
user::rwx
user:user_in_Apache_group:r-x
group::rwx
mask::rwx
other::r-x

つまり、ユーザー(user_in_Apache_group)にはそのフォルダーに対する書き込み権限がありません。

解決策は@techtonikが言ったことであり、ユーザーに書き込み許可を追加します。

[user_in_Apache_group@web02 html]$ Sudo setfacl -m u:user_in_Apache_group:rwx ./ilias5

許可を再度確認します。

[user_in_Apache_group@web02 html] getfacl ilias5
...
user:user_in_Apache_group:rwx
...

それが役に立てば幸い。 ;)

11
Laszlo Lugosi

Linux ACL(アクセス制御リスト)を使用します-これは許可システムのよりきめの細かいバージョンです。

setfacl -R -m 'group:staff:rwx' -m 'd:group:staff:rwx' /usr/local/lib/R/

これにより、ディレクトリのアクティブな権利と、内部で作成されたすべてのデフォルトの権利の両方が設定されます。

staffグループに自分を追加したばかりの場合、これは再ログインなしでは機能しませんが、現在のセッションに対してのみ自分に許可を設定できます。

7

ユーザーがbarディレクトリへのアクセス権を持っていなかったため、ユーザーが許可を持っていても/foo/bar/bazディレクトリにアクセスできないという問題がありました。

5
Kolyunya

そのファイルにコンテンツを追加する前に、親ディレクトリに権限があるかどうかを確認してください

Sudo chmod -R 777 /yourDir/file.log
0
Mani P