我試圖使用連結、bash 腳本和 SUID 提供對某些功能的有限存取。 SUID 腳本不能以 root 存取權限執行

我試圖使用連結、bash 腳本和 SUID 提供對某些功能的有限存取。 SUID 腳本不能以 root 存取權限執行

編輯:這個啟用黏滯位的腳本無法寫入根文件似乎是類似的問題

編輯:如何在 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)

相關內容