分页: 1 / 2

用sudo进行操作 和用真正的root身份来操作有没有区别?

发表于 : 2008-09-03 14:13
crossie
sudo的权限和root的权限是不是完全一样的?

发表于 : 2008-09-03 14:15
yaoms
没什么区别的。

发表于 : 2008-09-03 14:58
izee
有区别
root,是以root用户身份运行
sudo,授予当前用户"root组权限"使用权,以当前登录用户身份运行

发表于 : 2008-09-03 15:14
diony
如果sudoer设置的权限完全放开,那应该在权限上没什么区别。

只是环境变量之类的东西还是普通用户的。不过好像sudoer里也有环境变量相关的设置。

发表于 : 2008-09-03 16:20
yaska
还有一个
root的HOME是 /root
sudo 的话 HOME还是 当前用户

:D

发表于 : 2008-09-03 16:59
hubert_star
echo $UID

sudo echo $UID

发表于 : 2008-09-03 17:50
BigSnake.NET
从 EUID 上讲没有区别

发表于 : 2008-09-03 19:33
delectate
yaska 写了:还有一个
root的HOME是 /root
sudo 的话 HOME还是 当前用户

:D
ls ~/

你就会发现sudo的时候是home

root执行ls会发现是/root

发表于 : 2008-09-03 19:40
aerofox
hubert_star 写了:echo $UID

sudo echo $UID
这是一个错误的比较,因为在执行 echo 命令之前 $UID 就已经被 SHELL 扩展了,所以结果必然一样。

发表于 : 2008-09-03 20:58
happyaron
没有任何区别,sudo=Super User DO

发表于 : 2008-09-03 21:02
milujite
有区别的,有时候做定向操作sudo很郁闷,得借助tee

发表于 : 2008-09-03 21:13
Amankwah
楼上说得很有道理,sudo的权限会被管道或者重定向截断,有时候就很郁闷。
比如打开内核的IP转发:
sudo echo '1' >/proc/sys/net/ipv4/ip_forward
是不行的,而root就可以。
要用sudo的话我目前只知道这样解决:
echo '1'|sudo tee /proc/sys/net/ipv4/ip_forward

而且sudo执行的uid一般是当前执行sudo的用户ID,而root直接执行的uid应该是0

发表于 : 2008-09-03 21:17
BigSnake.NET
Amankwah 写了:楼上说得很有道理,sudo的权限会被管道或者重定向阶段,有时候就很郁闷。
比如打开内核的IP转发:
sudo echo '1' >/proc/sys/net/ipv4/ip_forward
是不行的,而root就可以。
要用sudo的话我目前只知道这样解决:
echo '1'|sudo tee /proc/sys/net/ipv4/ip_forward

而且sudo执行的uid一般是当前执行sudo的用户ID,而root直接执行的uid应该是0
错, sudo 执行的东西当然是 EUID 0,问题出在你那个 > ,那个是当前 shell 给你重定向的,当然就不是 root 身份

发表于 : 2008-09-03 21:18
xeoc
diony 写了:如果sudoer设置的权限完全放开,那应该在权限上没什么区别。

只是环境变量之类的东西还是普通用户的。不过好像sudoer里也有环境变量相关的设置。
正解

发表于 : 2008-09-03 21:27
hubert_star
aerofox 写了:
hubert_star 写了:echo $UID

sudo echo $UID
这是一个错误的比较,因为在执行 echo 命令之前 $UID 就已经被 SHELL 扩展了,所以结果必然一样。
讲得对,欠考虑了

核心问题还是环境变量的问题,当前用户没有被切换,但是却是以0用户的身份执行操作

env

sudo env

应该能够看出来了