我有一个非常基本的困惑。如何sudo
运作?
我注意到,当我运行脚本时它失败了,因为它尝试在具有以下权限的目录中写入文件:
$ ls -l thedir
drwxr--r-- usr grp
但是当我运行脚本时sudo -u usr
它就起作用了。
如果我能够使用 sudo 成功运行脚本,为什么脚本首先会失败?
我的意思是,如果我有足够的权限以该用户身份运行,我想我应该能够首先成功运行脚本。
答案1
仅仅因为您有能力充当另一个用户,这并不会给您当前的用户相同的权限。权限不会根据当前用户帐户充当另一个用户的能力级联到当前用户。sudo
并su
允许您“成为”或“充当”另一个用户。换句话说,当您使用 sudo 时,您实际上暂时成为了该用户。
root
即使您以sudo
或其他用户身份登录计算机su
,作为该用户,您将具有所有相同的限制(和权限),因为对于系统而言,您是该用户,而不是root
。
答案2
我认为第一件事是弄清楚脚本是否像你一样运行。
#!/bin/bash
whoami
调用它的方式与调用您正在处理的脚本(例如 cronjob)的方式相同。如果脚本以另一个用户身份运行,这可能会给您提供线索。