脚本 mycmd 需要根特权,普通帐户通过 sudo 运行。
问题,在 mycmd 中能否获知是哪个帐户通过 sudo 来启动的自己?
不能让调用方通过参数传入,防欺诈。
是否可以获知是谁通过 sudo 运行的我
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
- vickycq
- 帖子: 4507
- 注册时间: 2011-03-20 13:12
- 系统: Debian
- 来自: 山东省寿光县
- 联系:
Re: 是否可以获知是谁通过 sudo 运行的我
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
欢迎所有 Debian GNU/Linux 用户
- lilydjwg
- 论坛版主
- 帖子: 4249
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 是否可以获知是谁通过 sudo 运行的我
sudo env | grep SUDO
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
Re: 是否可以获知是谁通过 sudo 运行的我
vickycq, SUDO_UID、SUDO_USER 的确可以。但,如果是通过 su 来运行的,就失效了。
另,我很奇怪,id --real 为何会失效。
另,我很奇怪,id --real 为何会失效。
-
- 帖子: 2284
- 注册时间: 2013-05-26 6:58
- 系统: Debian 9
Re: 是否可以获知是谁通过 sudo 运行的我
我想应该可以用MD5之类的方法来防止欺诈不能让调用方通过参数传入,防欺诈。
这样除非某用户知道其它用户的"密码"否则无法假冒
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
Re: 是否可以获知是谁通过 sudo 运行的我
馊主意科学之子 写了:我想应该可以用MD5之类的方法来防止欺诈不能让调用方通过参数传入,防欺诈。
这样除非某用户知道其它用户的"密码"否则无法假冒
- vickycq
- 帖子: 4507
- 注册时间: 2011-03-20 13:12
- 系统: Debian
- 来自: 山东省寿光县
- 联系:
Re: 是否可以获知是谁通过 sudo 运行的我
猜测可能原因 su 进入其它用户的提示符后不会设定环境变量 SUDO_*自由建客 写了:但,如果是通过 su 来运行的,就失效了。
可通过 logname 得出之前的用户名。
代码: 全选
$ whoami
vicky
$ su
Password:
# whoami
root
# logname
vicky
猜测可能原因 无论是 sudo id -u --real 还是 su 后 id -u --real,id -u --real 的父进程 ruid 均为 0自由建客 写了:另,我很奇怪,id --real 为何会失效。
对于前者,进程 sudo 在运行 id -u --real 时的 ruid 为 0 (但在运行 id 之前,进程 sudo 的 ruid=1000)
对于后者,进程 bash 的 ruid 为 0 (未继承进程 su 的 ruid=1000)
参考
https://en.wikipedia.org/wiki/User_identifier
http://www.beautifulwork.org/id-print-r ... -group-ids
https://intelligea.wordpress.com/2014/0 ... -group-id/
http://stackoverflow.com/questions/2050 ... s-can-have
http://stackoverflow.com/questions/3245 ... ed-user-id
http://unix.stackexchange.com/questions ... -from-euid
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
欢迎所有 Debian GNU/Linux 用户
- lilydjwg
- 论坛版主
- 帖子: 4249
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 是否可以获知是谁通过 sudo 运行的我
其实能 su 的话,再怎么弄也没用。实在不行,su 成别的用户再 su 回 root。有完整的 root 权限什么手段都能绕过的。
sudo 可以指定只能执行特定的命令,所以才需要能够安全地判断是谁在 sudo。
sudo 可以指定只能执行特定的命令,所以才需要能够安全地判断是谁在 sudo。