não pode tocar em -m um arquivo gravável

3

Alguém pode explicar por que eu recebo permissão negada quando estou executando touch -m neste arquivo, mesmo que seja grupo gravável e eu possa escrever no arquivo.

~/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-> 
    
por Peter Lyons 15.02.2013 / 05:34

2 respostas

6

De 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.

Portanto, para alterar apenas o tempo de modificação do arquivo ( touch -m foo ), você precisa ser root ou o proprietário do arquivo.

Ser capaz de gravar no arquivo só lhe dá permissão para atualizar os horários modificados e de acesso para a hora atual; você não pode atualizar separadamente, nem configurá-los para um horário diferente.

    
por 15.02.2013 / 06:04
-1

Parece que os dados da web do proprietário do arquivo só têm permissão de leitura por isso que você está recebendo erros.

Tente alterar a permissão como

chmod 750 foo

depois, su web-data e, em seguida, execute o comando touch -m .

ou execute o comando touch -m como raiz.

    
por 15.02.2013 / 07:21