如果我尝试同时设置S_ISUID和所有者,为什么nfsd清除SETATTR中的S_ISUID位?

时间:2017-03-16 05:41:12

标签: linux-kernel nfs

NFSv3协议specifies,SETATTR可以同时设置文件/目录模式和所有者(以及其他一些东西)。然而,Linux implementation的nfsd表现得非常奇怪:

unstack(stack(tmp_v))
## $a
## [1] 1 2 3 4
## 
## $b
## [1] 2
## 
## $c
## [1] 0 4
## 

identical(unstack(stack(tmp_v)), tmp_l)
## [1] TRUE

这是什么原因?我花了很多时间在一些旧应用程序中跟踪它(由于某种原因,它无法通过NFS复制文件而不会丢失suid位)。这是一个错误吗?即使新主人是相同的,也会发生这种情况。

2 个答案:

答案 0 :(得分:0)

禁用SUID是针对不受信任的 NFS服务器的某种保护:如果本地计算机的管理员不信任NFS服务器,则无法从具有root权限的服务器执行文件。另见文章NFS, no_root_squash and SUID - Basic NFS Security

答案 1 :(得分:0)

这是NFS服务器的Linux实现中的一个错误。请参阅NFS specs