Permissão negada em / dev / xvdf apesar do sudo?

3

Estou tentando obter um fluxo da porta 9999 e gravá-lo em / dev / xvdf. Estou usando o Amazon EC2 com a imagem do servidor Ubuntu 11.10. Por padrão eu logar como 'ubuntu', que tem privilégios sudo. No entanto, quando eu executo o seguinte comando netcat, recebo esse erro

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:~$

Alguma ideia de por que recebo a permissão de erro negado e como posso contorná-la?

Atualização: Algo misterioso está sendo executado em segundo plano que redefine as permissões? Verifique o trecho abaixo e os sinalizadores de permissão parecem ser redefinidos automaticamente quando eu tento usar / 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:~$

Estou usando imagens do Ubuntu Amazon EC2 do link (links para imagens no topo)

    
por DeepSpace101 30.11.2011 / 23:38

1 resposta

2

Quando você executa sudo netcat -p 9999 -l > /dev/xvdf , está redirecionando a saída padrão de sudo netcat -p 9999 -l para /dev/xvdf . Neste ponto, você não tem privilégios de superusuário, resultando no erro de permissão negada quando o shell tenta abrir o dispositivo com acesso de gravação.

O que você realmente quer fazer é executar o redirecionamento de saída após adquirir privilégios de superusuário. Isso pode ser feito executando o redirecionamento em uma instância de shell chamada por sudo . Por exemplo:

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

Ou, alternativamente, execute o netcat sem privilégios elevados, mas passe sua saída para um processo privilegiado:

netcat -p 9999 -l | sudo tee /dev/xvdf >/dev/null
    
por James Henstridge 01.12.2011 / 01:26