当对正在写入的文件进行 chown 时会发生什么?

当对正在写入的文件进行 chown 时会发生什么?

背景:我有一个 cron 任务,用于 chown 新用户的目录。通常情况下,这些用户在任务执行之前就已经将文件上传到服务器了。

那么,如果文件正在上传,它们的所有权是否会成功改变?

答案1

我有一个 cron 作业,用于 chown 新用户的目录。

我认为您的意思是这些新用户的目录以及这些目录的所有内容(即chown -R newuser:newuser /home/newuser-dir)。

这是一个竞争条件,很像编程,只不过你是在系统级别而不是进程级别遇到它,但它仍然是一个安全风险。

是正确的,除非你有一个非常奇怪的要求,否则最好使用不需要这样的后台任务来更改文件所有权的上传过程。

因为从某种意义上说,你正在获取未经验证的数据(上传的文件),并自动将信任级别设置为与另一个可能更受信任的用户相同,而不一定能确保文件的安全性。这就有可能滥用这种竞争条件,例如,如果新用户可以创建指向系统文件的符号或硬链接(例如/etc/shadow),这样他们就可以获得散列密码,然后安装离线密码破解攻击。那会很悲哀。

答案2

所有权信息在文件创建时设置。如果此后更改,则除非程序事后再次重写所有权信息,否则它将保留。

答案3

假设您正在执行递归chown,并且文件写在您正在递归更改所有权的树中的某个地方,那么是的。

但是他们以哪个用户的身份上传文件?如果目录尚未chown编辑,他们如何拥有写入权限?为什么不在授予他们访问权限之前设置正确的权限?

相关内容