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位)。这是一个错误吗?即使新主人是相同的,也会发生这种情况。
答案 0 :(得分:0)
禁用SUID是针对不受信任的 NFS服务器的某种保护:如果本地计算机的管理员不信任NFS服务器,则无法从具有root权限的服务器执行文件。另见文章NFS, no_root_squash and SUID - Basic NFS Security。
答案 1 :(得分:0)
这是NFS服务器的Linux实现中的一个错误。请参阅NFS specs。