系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
Amankwah
- 帖子: 624
- 注册时间: 2006-10-16 7:24
- 来自: 安康/西安/广州
-
联系:
#16
帖子
由 Amankwah » 2008-09-03 21:30
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 身份
那sudo echo $UID和sudo echo $EUID的结果呢?
你可以试试~
而且你看红字部分!我过了,只不过不小心吧“截断”打成“阶段”了,不好意思。
读书取正,读易取变,读骚取幽,读庄取达,读汉文取坚,最有味卷中岁月。
与菊同野,与梅同疏,与莲同洁,与兰同芳,与海棠同韵,定自称花里神仙。
-
BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
-
联系:
#17
帖子
由 BigSnake.NET » 2008-09-03 21:35
Amankwah 写了: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 身份
那sudo echo $UID和sudo echo $EUID的结果呢?
你可以试试~
代码: 全选
echo sudo echo $UID
echo sudo echo $EUID
那个 $UID 是当前shell给你扩展的,换句话说你执行的就是 sudo echo 1000 ...
假设你的UID是1000
为什么不截断呢, 你要明白管道和重定向是当前 shell 的功能,不关 sudo 事
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
yjcong
- 帖子: 2470
- 注册时间: 2006-02-28 3:11
#18
帖子
由 yjcong » 2008-09-03 21:37
diony 写了:
只是环境变量之类的东西还是普通用户的。不过好像sudoer里也有环境变量相关的设置。
对吗??
一梦三年,
松风依旧,
萝月何曾老.
灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.
-
Amankwah
- 帖子: 624
- 注册时间: 2006-10-16 7:24
- 来自: 安康/西安/广州
-
联系:
#19
帖子
由 Amankwah » 2008-09-03 21:42
BigSnake.NET 写了:Amankwah 写了: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 身份
那sudo echo $UID和sudo echo $EUID的结果呢?
你可以试试~
代码: 全选
echo sudo echo $UID
echo sudo echo $EUID
那个 $UID 是当前shell给你扩展的,换句话说你执行的就是 sudo echo 1000 ...
假设你的UID是1000
为什么不截断呢, 你要明白管道和重定向是当前 shell 的功能,不关 sudo 事
哦,管道和重定向这个我倒明白,是为了给别人解释sudo的不同表现。
关于$UID确实受教了,谢谢。
不过,拿如何看sudo执行的程序的UID呢?能给个方法么?
读书取正,读易取变,读骚取幽,读庄取达,读汉文取坚,最有味卷中岁月。
与菊同野,与梅同疏,与莲同洁,与兰同芳,与海棠同韵,定自称花里神仙。
-
BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
-
联系:
#20
帖子
由 BigSnake.NET » 2008-09-03 21:43
sudo bash
#做你想做的事。。。
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
crossie
- 帖子: 241
- 注册时间: 2008-05-25 20:35
#21
帖子
由 crossie » 2008-09-04 10:12
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
我正是遇到这个问题才发这个帖子的
有一个文件的权限是rw-r--r--
我发现root可以对它写,而sudo不行,所以才觉得两者有所不同....
-
crossie
- 帖子: 241
- 注册时间: 2008-05-25 20:35
#22
帖子
由 crossie » 2008-09-04 10:13
BigSnake.NET 写了:sudo bash
#做你想做的事。。。
切换到root用户了喔...
和直接su有没有区别?
-
milujite
- 帖子: 644
- 注册时间: 2007-01-01 22:14
-
联系:
#23
帖子
由 milujite » 2008-09-04 10:23
Amankwah 写了: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 身份
那sudo echo $UID和sudo echo $EUID的结果呢?
你可以试试~
而且你看红字部分!我过了,只不过不小心吧“截断”打成“阶段”了,不好意思。
为什么这里要看$EUID?这个玩意不是只有设置了suid才用来看实际的UID的么?
ThinkPad SL400 DC
CPU:Intel® Core 2 Duo processor T5670
RAM:2x1GB,Dual
HARDDISK:Seagate 160G SATA
CD-ROM:COMBO
-
想入非非
- 帖子: 8078
- 注册时间: 2008-07-14 22:42
- 来自: Beijing
-
联系:
#24
帖子
由 想入非非 » 2008-09-04 18:11
应该是没有什么本质上的区别的
Ubuntu User
-
jarlyyn
- 帖子: 4671
- 注册时间: 2006-04-12 18:54
-
联系:
#25
帖子
由 jarlyyn » 2008-09-04 21:41
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 sh -c "echo 1>/proc/sys/net/ipv4/ip_forward"
参照 man sudo 的最后一个examples。
这个明显是终端解析命令行上的问题 .
-
jarlyyn
- 帖子: 4671
- 注册时间: 2006-04-12 18:54
-
联系:
#26
帖子
由 jarlyyn » 2008-09-04 21:46
专业点可以是 sudo $SHELL -c "内容"