setuid 没有按预期工作

setuid 没有按预期工作

我有一个在某个端口上监听的 node js 脚本。

如果该脚本收到一个 json 文件,它需要在用户主目录中执行一个部署脚本。

节点脚本在node_user下运行。

主目录是user_b。

我设置了一个 acl,以便用户“node_user”可以访问用户“user_b”目录并执行部署脚本。

setfacl -mu:node_user:rx deploy.sh

还要在部署脚本上设置 uid,以便它应该在其所属的用户 (user_b) 下执行:chmod u+s deploy.sh

当我测试它时,部署脚本被执行,因此有足够的权限,但脚本仍然以 node_user 的身份执行,而不是以其所有者(user_b)的身份执行

我使用以下命令验证了这一点:watch -n1 'lsof | grep deploy.sh'

我想知道是否有人知道为什么它不能按预期工作。

stat 部署.sh

  File: ‘deploy.sh’
  Size: 918             Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 25242546    Links: 1
Access: (4750/-rwsr-x---)  Uid: ( 1003/ user_b)   Gid: ( 1005/ user_b)

getfacl deploy.sh:

# file: deploy.sh
# owner: user_b
# group: user_b
# flags: s--
user::rwx
user:node_user:r-x
group::r-x
mask::r-x
other::---

答案1

SUID 对脚本没有影响。这是设计使然。

查看此问答以供参考

相关内容