在 Ubuntu 16.04.1 上:
test.sh
脚本:
#!/bin/bash
IAM=$(whoami)
ID=$(id -u $IAM)
echo "${IAM}"
echo "${ID}"
Andromeda $ ls -al | grep test.sh
-rwsrwxrwx 1 pkaramol pkaramol 71 Δεκ 8 07:52 test.sh
作为pkaramol
( uid
=1000)
Andromeda $ ./test.sh
pkaramol
1000
作为testuser
( uid
=1001)
Andromeda $ su testuser
Password:
testuser@Andromeda:/home/pkaramol/Desktop$ ./test.sh
testuser
1001
既然suid
已经设置了,为什么在第二次运行中我们没有在输出中看到pkaramol
和1000
?脚本不是应该使用文件所有者的 ID 来执行吗?
答案1
Linux ignores the set-user-ID and set-group-ID bits on scripts.
另请参阅: