web-dev-qa-db-fra.com

Autorisation refusée sur / dev / xvdf malgré sudo?

J'essaie d'obtenir un flux sur le port 9999 et d'écrire dans/dev/xvdf. J'utilise Amazon EC2 avec l'image du serveur Ubuntu 11.10. Par défaut, je me connecte en tant que "ubuntu" qui dispose des privilèges Sudo. Cependant, lorsque j'exécute la commande netcat suivante, j'obtiens cette erreur

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

Avez-vous une idée de la raison pour laquelle j'obtiens l'erreur d'autorisation refusée et comment contourner ce problème?

Mise à jour: Quelque chose de mystérieux se déroule en arrière-plan qui réinitialise les autorisations? Vérifiez l'extrait ci-dessous et les drapeaux d'autorisation semblent se réinitialiser automatiquement lorsque j'essaie d'utiliser/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:~$

J'utilise des images stock Ubuntu Amazon EC2 de http://alestic.com/ (liens vers les images en haut)

3
DeepSpace101

Lorsque vous exécutez Sudo netcat -p 9999 -l > /dev/xvdf, vous redirigez la sortie standard de Sudo netcat -p 9999 -l à /dev/xvdf. À ce stade, vous ne disposez pas des privilèges de superutilisateur, ce qui entraîne l'erreur d'autorisation refusée lorsque le shell essaie d'ouvrir le périphérique avec un accès en écriture.

Ce que vous voulez vraiment faire, c'est effectuer la redirection de sortie après acquérir des privilèges de superutilisateur. Cela pourrait être fait en effectuant la redirection dans une instance Shell invoquée par Sudo. Par exemple:

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

Ou bien, exécutez netcat sans privilèges élevés mais transmettez sa sortie à un processus privilégié:

netcat -p 9999 -l | Sudo tee /dev/xvdf >/dev/null
2
James Henstridge