Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 如何允许多人通过sftp更改文件的mtime -timestamp?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我有一个多个用户可以访问的目录.他们更改,上传和删除目录中的文件.它们都属于同一个用户组.目录中的文件具有660的访问权限. 问题是如果用户不是该文件的所有者,则用户无法设置文件的修改时间. 例如,用户AAA上传文件’EXAMPLE.jpg’,用户BBB下载它,修改它并再次上传它.该文件的“上次修改”时间戳将是BBB上传时间的时间,而不是上次修改时的时间戳.我尝试将文件的权限设置为777,但它没有
我有一个多个用户可以访问的目录.他们更改,上传删除目录中的文件.它们都属于同一个用户组.目录中的文件具有660的访问权限.

问题是如果用户不是该文件的所有者,则用户无法设置文件修改时间.

例如,用户AAA上传文件’EXAMPLE.jpg’,用户BBB下载它,修改它并再次上传它.该文件的“上次修改”时间戳将是BBB上传间的时间,而不是上次修改时的时间戳.我尝试将文件的权限设置为777,但它没有帮助.

该问题在sftp-logs中显示为:

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

Winscp会因为上传文件’example.jpg’成功而抱怨,但在设置权限和/或时间戳时发生错误.如果问题仍然存在,请启用“忽略权限错误”.警告很容易被忽略,但如果我想让我的用户通过在文件上传后编辑它们来“保留”时间戳呢?

已经有a similar question了,但已经没有答案了:(.

解决方法

出于某种神秘的原因,Unix / Linux系统尽可能强地保护mtime.只有所有者[*]才能满足您的需求.即使使用ACL(man setfacl),也无法控制它.

我能想到的一个解决方法是使用具有dos filemode选项的Samba.它完全符合您的要求(名称不是很明显).当然,我远没有推荐samba超过sftp;桑巴是一场行政噩梦.

事实上,如果我是你,我会去寻找一个非常非常丑陋的黑客.编写一个脚本,扫描sftp-log文件中的set … modtime行,并为每个这样的行立即尝试运行touch –mtime.显然,脚本需要以root身份运行,因此请确保代码注入是安全的(例如文件名和包含’或’或;或$字符的日期).

[*]实际上,用户也拥有CAP_FowneR(例如root),但这是系统范围的功能,因此不适用于您的情况.

大佬总结

以上是大佬教程为你收集整理的linux – 如何允许多人通过sftp更改文件的mtime -timestamp?全部内容,希望文章能够帮你解决linux – 如何允许多人通过sftp更改文件的mtime -timestamp?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。