我有一个侦听某个端口的节点 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 部署.sh'
我想知道是否有人知道为什么它不能按预期工作。
统计部署.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 部署.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::---
SUID 对脚本没有影响。这是设计使然。
检查此 Q/A以供参考