В / dev / xvdf отказано в разрешении, несмотря на sudo?

Я пытаюсь получить поток от порта 9999 и записать в / dev / xvdf. Я использую Amazon EC2 с образом сервера Ubuntu 11.10. По умолчанию я вхожу в систему как 'ubuntu', которая имеет привилегии sudo. Однако, когда я запускаю следующую команду 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:~$

Я использую стандартные изображения Ubuntu Amazon EC2 из http: // alestic .com / (ссылки на изображения вверху)

3
задан 1 December 2011 в 04:26

1 ответ

Когда вы запускаете sudo netcat -p 9999 -l > /dev/xvdf, вы перенаправляете стандартный вывод с sudo netcat -p 9999 -l на /dev/xvdf. На этом этапе у вас нет привилегий суперпользователя, что приводит к ошибке «Отказано в доступе», когда оболочка пытается открыть устройство с доступом для записи.

Что вы действительно хотите сделать, так это выполнить перенаправление вывода после получения привилегий суперпользователя. Это можно сделать, выполнив перенаправление в экземпляре оболочки, вызванной sudo. Например:

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

Или, альтернативно, запустите netcat без повышенных привилегий, но передайте его вывод привилегированному процессу:

netcat -p 9999 -l | sudo tee /dev/xvdf >/dev/null
0
ответ дан 1 December 2011 в 04:26

Другие вопросы по тегам:

Похожие вопросы: