【发布时间】:2021-04-20 17:48:52
【问题描述】:
我创建了这个简单的脚本,以允许用户在不给他“su”的情况下删除由 Web 服务器在其主目录中创建的文件。两个脚本都设置了"chmod 4750"。
最疯狂的是,它们确实有效,而现在却无效。这是脚本:
#!/bin/bash
# Ask for directory to delete
echo "Enter the file or directory you would like to delete, the assumed path is /home/user"
read DIRECTORY
rm -rf /home/user/"$DIRECTORY"
echo "Deleting /home/user/$DIRECTORY ..."
exit 0
2:
#!/bin/bash
# Reset permissions
echo "Resetting the ownership of the contents of /home/user to user."
chown -R user /home/user
exit 0
我会让它们更高级一点,并为多个用户工作,但现在我什至无法让简单版本工作。当然,它在以 root 身份运行时有效。它曾经在以用户“用户”身份运行时工作,但现在不行。我明白了:
user@dev:/home/user$ delete.sh
Enter the file or directory you would like to delete, the assumed path is /home/user/[your input]
test-dir
rm: cannot remove ‘/home/user/test-dir/test-file’: Permission denied
Deleting /home/user/test-dir ...
和
chown: changing ownership of ‘/home/user/test-dir’: Operation not permitted
可能是什么问题?
-rwsr-x--- 1 root user 291 Nov 6 05:23 delete.sh
-rwsr-x--- 1 root user 177 Nov 6 05:45 perms.sh
【问题讨论】:
-
检查 SUID 是否工作 添加脚本:
echo whoami输出根目录? . -
作为一种安全措施,大多数系统不允许设置 shell 脚本。不过,不知道他们为什么过去工作。
-
奇怪的是它今天早些时候在同一个系统上工作。我不知道我改变了什么或改变了什么。我会试试这个。
-
你猜对了,但是我该如何解决它,为什么它之前会起作用?
-
是什么阻止有人将
../../etc/passwd输入DIRECTORY以重置所有密码(包括root)?
标签: bash permissions chmod chown setuid