Centos7

setuid 沒有按預期工作

  • February 26, 2020

我有一個偵聽某個埠的節點 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以供參考

引用自:https://serverfault.com/questions/1004688