-ma書き込み可能ファイルにアクセスできません

-ma書き込み可能ファイルにアクセスできません

touch -mこのファイルがグループ書き込み可能でファイルに正しく書き込まれるにもかかわらず、このファイルを実行すると権限が拒否される理由を誰かが説明できますか?

~/test1-> id
uid=1000(plyons) gid=1000(plyons) groups=1000(plyons),4(adm),20(dialout),24(cdrom),46(plugdev),109(lpadmin),110(sambashare),111(admin),1002(webadmin)
~/test1-> ls -ld .; ls -l
drwxrwxr-x 2 plyons plyons 4096 Feb 14 21:20 .
total 4
-r--rw---- 1 www-data webadmin 24 Feb 14 21:29 foo
~/test1-> echo the file is writable >> foo
~/test1-> touch -m foo
touch: setting times of `foo': Operation not permitted
~/test1-> lsattr foo 
-------------e- foo
~/test1-> newgrp - webadmin 
~/test1-> id
uid=1000(plyons) gid=1002(webadmin) groups=1000(plyons),4(adm),20(dialout),24(cdrom),46(plugdev),109(lpadmin),110(sambashare),111(admin),1002(webadmin)
~/test1-> touch -m foo
touch: setting times of `foo': Operation not permitted
~/test1-> echo the file is writable >> foo
~/test1-> 

答え1

からman utime

       The  utime()  system  call changes the access and modification times of
       the inode specified by filename to the actime  and  modtime  fields  of
       times respectively.

       If  times  is  NULL, then the access and modification times of the file
       are set to the current time.

       Changing timestamps is permitted when: either the process has appropri‐
       ate  privileges,  or  the  effective  user ID equals the user ID of the
       file, or times is NULL and the process has  write  permission  for  the
       file.

したがって、ファイル()の変更時間のみを変更するには、そのファイルの所有者である必要がtouch -m fooあります。root

ファイルに書き込むことができる場合は、変更時刻とアクセス時刻を現在時刻に更新する権限のみが付与され、個別に更新したり、別の時刻に設定したりすることはできません。

答え2

それは私も捕まえた。

coreutils ドキュメントまた、次のように言いました。

ファイルのタイムスタンプを現在の時刻に設定すると、ユーザーが所有していないがtouch書き込み権限を持つファイルのタイムスタンプを変更できます。それ以外の場合、ユーザーはファイルを所有する必要があります。一部の古いシステムには追加の制限があります。アクセス時間と変更時間の両方が現在時刻に設定されていない限り、ユーザーはファイルを所有する必要があります。

おそらく、GNU / Linuxはすでに「一部の古いシステム」である可能性があります。

答え3

ファイル所有者ネットワークデータには読み取り権限しかないようです。これによりエラーが発生します。

次の権限を変更してみてください。

chmod 750リッチ

次に、Webデータをsuして実行します。タッチ-m注文する。

または実行タッチ-mroot でコマンドを実行します。

関連情報