尽管使用 sudo,/dev/xvdf 上的权限仍然被拒绝?

尽管使用 sudo,/dev/xvdf 上的权限仍然被拒绝?

我正在尝试从端口 9999 获取流并写入 /dev/xvdf。我正在使用带有 Ubuntu 11.10 服务器映像的 Amazon EC2。默认情况下,我以具有 sudo 权限的“ubuntu”身份登录。但是,当我运行以下 netcat 命令时,我收到此错误

ubuntu@ip-10-252-35-122:~$ ls -al /dev/xv*
brw-rw---- 1 root disk 202,  1 2011-11-30 22:22 /dev/xvda1
brw-rw---- 1 root disk 202, 80 2011-11-30 22:27 /dev/xvdf
ubuntu@ip-10-252-35-122:~$ sudo netcat -p 9999 -l > /dev/xvdf
bash: /dev/xvdf: Permission denied
ubuntu@ip-10-252-35-122:~$

知道为什么我会收到权限被拒绝错误以及如何解决它吗?

更新: 后台是否有神秘程序在运行并重置权限?检查下面的代码片段,当我尝试使用 /dev/xvdf 时,权限标志似乎会自动重置!?!

ubuntu@ip-10-252-35-122:~$ sudo chmod 777 /dev/xvdf
ubuntu@ip-10-252-35-122:~$ ls -al /dev/xvdf
brwxrwxrwx 1 root disk 202, 80 2011-11-30 22:43 /dev/xvdf
ubuntu@ip-10-252-35-122:~$ sudo nc -p 9999 -l > /dev/xvdf
This is nc from the netcat-openbsd package. An alternative nc is available
in the netcat-traditional package.
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-P proxy_username] [-p source_port]
          [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol]
          [-x proxy_address[:port]] [hostname] [port[s]]
ubuntu@ip-10-252-35-122:~$ ls -al /dev/xvdf
brw-rw---- 1 root disk 202, 80 2011-11-30 22:43 /dev/xvdf
ubuntu@ip-10-252-35-122:~$

我使用的是来自http://alestic.com/(图片链接位于顶部)

答案1

当您运行 时sudo netcat -p 9999 -l > /dev/xvdf,您将把 的标准输出重定向sudo netcat -p 9999 -l/dev/xvdf。此时,您没有超级用户权限,导致当 shell 尝试以写权限打开设备时出现权限被拒绝错误。

你真正想要做的是执行输出重定向获取超级用户权限。这可以通过在 调用的 shell 实例中执行重定向来实现sudo。例如:

sudo sh -c 'netcat -p 9999 -l > /dev/xvdf'

或者,以不提升权限的方式运行 netcat,但将其输出传递给特权进程:

netcat -p 9999 -l | sudo tee /dev/xvdf >/dev/null

相关内容