編輯:這個啟用黏滯位的腳本無法寫入根文件似乎是類似的問題
編輯:如何在 shell 腳本上使用 SetUID 以非 root 使用者身分執行?也非常相似。
我有一個腳本,我們稱之為 read.sh。我有一個文件,姑且稱之為秘密吧。
# cd /home/normie
# echo "some stuff" > secret
# echo "#!/bin/bash" > read.sh
# echo "cat secret" >> read.sh
# chmod 600 secret
# chmod 4755 read.sh
# su normie
$ ./read.sh
<<Error about not having access to secret>>
我錯過了什麼?我認為 SUID 位元使腳本以所有者身份運行?當我運行以下命令時
# echo "touch newfile" > sumfile.sh
# chmod 4755 sumfile.sh
# su normie
$ ./sumfile.sh
$ ls -alh
<<newfile shows as owned by root>>
這裡發生了什麼,我該如何讓它按照我想要的方式工作?按照我想要的方式,我希望普通使用者能夠以完全 root 存取權限執行特定腳本。 (我認為這就是 suid 位所做的)
答案1
安裝須藤apt install sudo
讓相關使用者成為某個群組的一部分groupadd group && usermod -g group user
將以下內容新增至 /etc/sudoers%group (ALL)=(root:root) NOPASSWD:/path/to/script.sh
向 .bashrc 新增別名alias ALIAS='sudo /path/to/script.sh'" >> ~user/.bashrc
群組中的所有成員現在都可以以 root 身分執行相關腳本。
答案無恥地被盜如何在 shell 腳本上使用 SetUID 以非 root 使用者身分執行?(用戶9517)