Linux、グループ権限があるのに書けないのはなぜ?


108

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

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

1
/ usr / local / lib / Rのサイトライブラリディレクトリへの書き込み権限がありますか?
テッドホップ、2011

1
私が投稿した最初のコマンドは、グループに書き込み権限があることを示していませんか?
ベンマッキャン、

3
すでにsite-library/tmpファイル/ディレクトリが存在していますか?
エレミヤ・ウィルコック、2011

回答:


200

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


1
新しいターミナルウィンドウを開いた場合、それは新しいプロセスと見なされませんか?私はそれを試してみて、それが私をログアウトすることを強いるように働かなかったと確信しています
ベンマッキャン

7
@Ben:新しいプロセスを開始すると、その親からuid / gidsが継承されます。あなたは(のような特権プログラムを必要とするloginsu実際のUID / GIDを設定するなど)。
ephemient

4
上記で暗示されているように、ログアウト/ログインするのが不便な場合は、ターミナルでこれを行うことができますsu your-user-name。結果のシェルには、更新されたグループ権限が含まれます。
TJクラウダー

2
これをありがとう!髪を抜くのに15分ほどかけて、なぜフォルダにグループ権限がないのかを理解しようとしました。
ジェレミースペンサー、

2
ログアウトして再度ログインするだけでなく、Ubuntu 16.04 x64での再起動が必要でした
Kartikey Tanna

15

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グループを使用しているので、ユーザーとグループが正しく実行されないようにタスクが妨げられていると思います。ログアウトする必要があるだけでなく、グループを使用するサービスを停止して再起動する必要があります。再起動してもうまくいかない場合は、さらに大きな問題が発生しています。


1
「より大きな問題」とは何ですか?
Ejaz

13

同じ問題が発生しました。フォルダに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
...

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


8

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

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

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

自分をstaffグループに追加した直後の場合、これは再ログインなしでは機能しませんが、現在のセッションに対して自分だけの権限を設定できます。


5

ユーザーが/foo/bar/bazディレクトリへのアクセス権を持っていなかったために、ユーザーが権限を持っていてもディレクトリにアクセスできない場合、問題が発生しましたbar


-2

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

sudo chmod -R 777 /yourDir/file.log
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.