当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 8 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 是否可以获知是谁通过 sudo 运行的我
帖子发表于 : 2016-10-28 20:00 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
脚本 mycmd 需要根特权,普通帐户通过 sudo 运行。
问题,在 mycmd 中能否获知是哪个帐户通过 sudo 来启动的自己?
不能让调用方通过参数传入,防欺诈。


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 是否可以获知是谁通过 sudo 运行的我
帖子发表于 : 2016-10-28 20:16 
头像

注册: 2011-03-20 13:12
帖子: 4521
地址: 山东省寿光县
系统: Debian
送出感谢: 105
接收感谢: 997
尝试在脚本中检查 SUDO_UID, SUDO_USER 二变量的内容

参考 http://unix.stackexchange.com/questions/137175/how-to-get-the-name-of-the-user-who-executed-a-bash-script-as-sudo


_________________
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 是否可以获知是谁通过 sudo 运行的我
帖子发表于 : 2016-10-28 20:18 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
sudo env | grep SUDO


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 是否可以获知是谁通过 sudo 运行的我
帖子发表于 : 2016-10-28 20:26 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
vickycq, SUDO_UID、SUDO_USER 的确可以。但,如果是通过 su 来运行的,就失效了。
另,我很奇怪,id --real 为何会失效。
附件:
1.png
1.png [ 39.35 KiB | 被浏览 824 次 ]



_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 是否可以获知是谁通过 sudo 运行的我
帖子发表于 : 2016-10-28 20:54 

注册: 2013-05-26 6:58
帖子: 2154
系统: Debian 9
送出感谢: 893
接收感谢: 30
引用:
不能让调用方通过参数传入,防欺诈。

我想应该可以用MD5之类的方法来防止欺诈
这样除非某用户知道其它用户的"密码"否则无法假冒


_________________
Linux桌面优化综合贴[2017.09.18](欢迎各位补充或指正误区)
[2016.03.10]会C语言但看不懂英文文档的点这里,一个用C语言编写的简陋学习工具
单硬盘通过iso文件实机安装Debian的方法
重启或操作fcitx时失去响应的一个解决方法,不妨试试看


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 是否可以获知是谁通过 sudo 运行的我
帖子发表于 : 2016-10-28 20:56 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
科学之子 写道:
引用:
不能让调用方通过参数传入,防欺诈。

我想应该可以用MD5之类的方法来防止欺诈
这样除非某用户知道其它用户的"密码"否则无法假冒

馊主意


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 是否可以获知是谁通过 sudo 运行的我
帖子发表于 : 2016-10-28 21:15 
头像

注册: 2011-03-20 13:12
帖子: 4521
地址: 山东省寿光县
系统: Debian
送出感谢: 105
接收感谢: 997
自由建客 写道:
但,如果是通过 su 来运行的,就失效了。

猜测可能原因 su 进入其它用户的提示符后不会设定环境变量 SUDO_*
可通过 logname 得出之前的用户名。
代码:
$ whoami
vicky
$ su
Password:
# whoami
root
# logname
vicky

参考 http://stackoverflow.com/questions/4598001/how-do-you-find-the-original-user-through-multiple-sudo-and-su-commands

自由建客 写道:
另,我很奇怪,id --real 为何会失效。

猜测可能原因 无论是 sudo id -u --real 还是 su 后 id -u --real,id -u --real 的父进程 ruid 均为 0
对于前者,进程 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-real-and-effective-user-and-group-ids
https://intelligea.wordpress.com/2014/02/11/effective-user-id-and-group-id-vs-real-user-id-and-group-id/
http://stackoverflow.com/questions/205070/whats-the-deal-with-all-the-different-uids-a-process-can-have
http://stackoverflow.com/questions/32455684/difference-between-real-user-id-effective-user-id-and-saved-user-id
http://unix.stackexchange.com/questions/202322/how-to-start-or-find-a-process-with-ruid-different-from-euid


_________________
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户



_________________
评价: 3.7% 科学之子
 
页首
 用户资料  
 
8 楼 
 文章标题 : Re: 是否可以获知是谁通过 sudo 运行的我
帖子发表于 : 2016-10-28 22:00 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
其实能 su 的话,再怎么弄也没用。实在不行,su 成别的用户再 su 回 root。有完整的 root 权限什么手段都能绕过的。
sudo 可以指定只能执行特定的命令,所以才需要能够安全地判断是谁在 sudo。


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 8 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译