我有一个在某个端口上监听的 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 对脚本没有影响。这是设计使然。
查看此问答以供参考