背景:我有一个 cron 任务,用于 chown 新用户的目录。通常情况下,这些用户在任务执行之前就已经将文件上传到服务器了。
那么,如果文件正在上传,它们的所有权是否会成功改变?
答案1
我有一个 cron 作业,用于 chown 新用户的目录。
我认为您的意思是这些新用户的目录以及这些目录的所有内容(即chown -R newuser:newuser /home/newuser-dir
)。
这是一个竞争条件,很像编程,只不过你是在系统级别而不是进程级别遇到它,但它仍然是一个安全风险。
莫是正确的,除非你有一个非常奇怪的要求,否则最好使用不需要这样的后台任务来更改文件所有权的上传过程。
因为从某种意义上说,你正在获取未经验证的数据(上传的文件),并自动将信任级别设置为与另一个可能更受信任的用户相同,而不一定能确保文件的安全性。这就有可能滥用这种竞争条件,例如,如果新用户可以创建指向系统文件的符号或硬链接(例如/etc/shadow
),这样他们就可以获得散列密码,然后安装离线密码破解攻击。那会很悲哀。
答案2
所有权信息在文件创建时设置。如果此后更改,则除非程序事后再次重写所有权信息,否则它将保留。
答案3
假设您正在执行递归chown
,并且文件写在您正在递归更改所有权的树中的某个地方,那么是的。
但是他们以哪个用户的身份上传文件?如果目录尚未chown
编辑,他们如何拥有写入权限?为什么不在授予他们访问权限之前设置正确的权限?