Bob*_*Bob 7 permissions bash setuid chmod chown
我创建了这个简单的脚本,以允许用户删除 Web 服务器在其主目录中创建的文件,而无需给他“su”。两个脚本都设置为"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
Run Code Online (Sandbox Code Playgroud)
2:
#!/bin/bash
# Reset permissions
echo "Resetting the ownership of the contents of /home/user to user."
chown -R user /home/user
exit 0
Run Code Online (Sandbox Code Playgroud)
我会让它们更高级一些并为多个用户工作,但现在我什至无法让简单的版本工作。当然,它在以 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 ...
Run Code Online (Sandbox Code Playgroud)
和
chown: changing ownership of ‘/home/user/test-dir’: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?
-rwsr-x--- 1 root user 291 Nov 6 05:23 delete.sh
-rwsr-x--- 1 root user 177 Nov 6 05:45 perms.sh
Run Code Online (Sandbox Code Playgroud)
https://unix.stackexchange.com/questions/364/allow-setuid-on-shell-scripts有一个非常全面的答案
最重要的是,有两个要点反对它:
从历史上看,原始 Bourne shell 中有一个著名的错误(至少在 4.2BSD 上,这是我在那里看到的),它允许任何人通过创建一个调用-isuid shell 脚本的符号链接来获得交互式 root shell 。这可能是被禁止的最初触发因素。
编辑:回答“我如何修复它” - 配置sudo为仅允许用户以 user 身份执行这些脚本root,并且可能使用/sf/answers/321868851/ 中的技巧来查找原始用户名并在他们自己的主目录上强制操作,而不是让他们传入任何任意输入(即在当前状态下,您在问题中包含的脚本中的任何内容都不会阻止user1执行脚本并传递它们users2的目录或任何目录那件事)
| 归档时间: |
|
| 查看次数: |
13422 次 |
| 最近记录: |