ubuntu关于文件重定向的bug

sh/bash/dash/ksh/zsh等Shell脚本
回复
janker2lonely
帖子: 557
注册时间: 2007-01-09 11:09
来自: 廣州

ubuntu关于文件重定向的bug

#1

帖子 janker2lonely » 2007-06-10 4:43

用redhat那么多年,最近半年被ubuntu吸引住了,用了几个月发现了一个非常有趣的问题,就是文件重定向的问题,以前用redhat的时候从未遇过。看,大家可以在命令行下输入以下命令:
ls -al > /etc/ls.txt
哈,会得到一个pemission denied的提示,对,由于权限不够,忘了,这是基于debian的,于是sudo ls -al > /etc/ls.txt,但是结果还是一样,于是将/etc/ls.txt换成/tmp/ls.txt,OK,成功。恩,于是再试,几乎将所有的命令重定向为/etc目录下的文件时,都出现了pemission denied的提示,失败。后来查看/tmp下生成的文件,发现属主为xxx(xxx是我的当前用户),看到了吧?!虽然用了sudo执行命令然后重定向,但是重定向的时候依然以当前用户来重定向。这样的话在/etc目录下生成文件当然是失败的了,因为该目录的权限只有root才有写入权,只要重定向的目录有写入权就不会出现这个问题了,如/tmp。尽管查出了原因,但是还是有些不爽,毕竟有些软件的配置文件是保存于etc目录的,如vsftpd,这样的你想用重定向命令>>来追加内容,比如新增加ftp用户,这样写SHELL脚本的时候就不得不先把文件重定向到/tmp,然后再cp到/etc目录了。大家可以试试,有解决的好办法记得回帖通知兄弟我哦!先在此谢过!
对了,忘了说,兄弟我用的是7.04,因为我以前没用过debian,不知道debian和以前的ubuntu版本会不会有这个问题。
thword
帖子: 119
注册时间: 2007-04-09 12:19

#2

帖子 thword » 2007-06-10 11:11

可以用tee
ls -al |sudo tee /etc/ls.txt
追加的话
ls -al |sudo tee -a /etc/ls.txt
janker2lonely
帖子: 557
注册时间: 2007-01-09 11:09
来自: 廣州

#3

帖子 janker2lonely » 2007-06-10 15:03

thword 写了:可以用tee
ls -al |sudo tee /etc/ls.txt
追加的话
ls -al |sudo tee -a /etc/ls.txt

多谢这位兄弟。ubuntu真好,但愿能保持下去。
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#4

帖子 bones7456 » 2007-06-10 15:14

恩,我也已经发现这个问题了,个人理解是
sudo ls -al > /etc/ls.txt
这个命令的sudo只影响到了红色部分,而不会对重定向符后面部分产生影响,这就好比 sudo command1 && command2 只有command1会以root运行一样。
上次由 bones7456 在 2007-06-10 15:24,总共编辑 1 次。
关注我的blog: ε==3
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#5

帖子 BigSnake.NET » 2007-06-10 15:16

echo 'ls -al > /etc/ls.txt ' |sudo sh
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
janker2lonely
帖子: 557
注册时间: 2007-01-09 11:09
来自: 廣州

#6

帖子 janker2lonely » 2007-06-11 2:07

BigSnake.NET 写了:echo 'ls -al > /etc/ls.txt ' |sudo sh
这位兄弟的写法够绝的,强,谢谢。
gzbao9999
帖子: 627
注册时间: 2008-11-08 18:34

Re:

#7

帖子 gzbao9999 » 2009-10-21 9:12

janker2lonely 写了:
BigSnake.NET 写了:echo 'ls -al > /etc/ls.txt ' |sudo sh
这位兄弟的写法够绝的,强,谢谢。
:em06 认同下
气血鼓荡,身体发胀,偶飘上头,三时舒畅
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: ubuntu关于文件重定向的bug

#8

帖子 aerofox » 2009-10-22 20:46

这不是 BUG。

也可以这么解决:

sudo sh -c "ls -l > /etc/ls.txt"
头像
lululau
帖子: 105
注册时间: 2007-05-28 11:17

Re: ubuntu关于文件重定向的bug

#9

帖子 lululau » 2009-10-24 1:49

sudo 使得ls 进程具有root的uid
而文件是shell进程产生的
头像
O_O_BOT
帖子: 2461
注册时间: 2009-05-20 19:32

Re: ubuntu关于文件重定向的bug

#10

帖子 O_O_BOT » 2009-10-25 18:07

lululau 写了:sudo 使得ls 进程具有root的uid
而文件是shell进程产生的
> 由当前用户shell解析
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
[url]irc://irc.freenode.net/ubuntu-cn[/url]
flying_pine
帖子: 22
注册时间: 2006-08-17 16:34

Re: ubuntu关于文件重定向的bug

#11

帖子 flying_pine » 2009-10-30 14:32

跳进万年老坑
回复