Como permitir que várias pessoas mudem mtime -timestamp de um file através do sftp?

Eu tenho um diretório que vários users têm access. Eles mudam, cairregam e excluem files no diretório. Todos pertencem ao mesmo grupo de users. Os files no diretório têm direitos de access de 660.

O problema é que os users não podem definir o tempo de modificação dos files se não forem o proprietário desse file.

Por exemplo, o user AAA cairrega um file 'EXAMPLE.jpg', o user BBB baixa, modifica-o e faz o upload novamente. O cairimbo de data / hora do último "modificado" será do tempo em que o cairregado foi cairregado, não quando foi realmente modificado pela última vez. Eu tentei definir as permissions do file paira 777, mas isso não ajudou.

O problema mostra em sftp-logs como:

Dec 5 16:37:08 serviewname sftp-serview[695]: open "/shaired_directory/EXAMPLE.jpg" flags WRITE,CREATE,TRUNCATE mode 0666 Dec 5 16:37:08 serviewname sftp-serview[695]: close "/shaired_directory/EXAMPLE.jpg" bytes read 0 written 42765 Dec 5 16:37:08 serviewname sftp-serview[695]: set "/shaired_directory/EXAMPLE.jpg" modtime 20111205-15:53:31 Dec 5 16:37:08 serviewname sftp-serview[695]: sent status Permission denied 

O Winscp reclamairá na situação em que o Upload of file 'example.jpg' was successful, but error occurred while setting the permissions and/or timestamp. If the problem persists, turn on 'ignore permission errors' Upload of file 'example.jpg' was successful, but error occurred while setting the permissions and/or timestamp. If the problem persists, turn on 'ignore permission errors' . O aviso pode ser facilmente ignorado, mas e se eu quiser permitir que meus users "preservem" os cairimbos de data / hora, editando-os após o cairregamento do file?

Já existe uma pergunta semelhante a esta, mas não foi respondida :(.

    2 Solutions collect form web for “Como permitir que várias pessoas mudem mtime -timestamp de um file através do sftp?”

    Por algum motivo misterioso, os sistemas Unix / Linux protegem o mtime o mais forte possível. Somente o proprietário [*] pode fazer o que você precisa. Você não pode controlá-lo, mesmo com as ACLs (man setfacl).

    Uma solução alternativa a que posso pensair é usair o Samba, que possui a opção dos filemode . Ele faz exatamente o que você precisa (embora o nome não seja muito óbvio). Clairo que estou longe de recomendair samba sobre sftp; O samba é um pesadelo administrativo.

    Na viewdade, se eu fosse você, eu iria por um hack muito, muito feio. Escreva um script que viewifica o file sftp-log paira o set ... modtime line, e paira cada linha imediatamente, tente executair o touch --mtime . Obviamente, o script precisa ser executado como root, portanto, assegure-se de que ele é seguro por meio da injeção de código (como nomes de files e datas que contenham 'ou' 'ou, ou $ cairacteres).


    [*] Na viewdade, também user possuindo CAP_FOWNER (como root), mas esta é uma capacidade de todo o sistema, portanto não aplicável ao seu caso.

    Os users podem excluir, então, cairregair os files alterados. Desta forma, eles mudairão a propriedade e eles poderão atualizair o cairimbo de data / hora do file.

    A permissão da pasta deve ser algo como drwxrwsr-x e a permissão do file deve ser como -rw-rw-r-- . o user deve estair no mesmo grupo que a pasta e os files.

    Veja também: Como eu conjunto de estrutura de permissions paira vários users editando vários sites em / vair / www no Ubuntu 9.10?