LINUX.ORG.RU

Как перенаправить вывод команды в файл доступный только rootу?


0

1

Такая фигня?

gateadmin@gate:~$ sudo iptables-save -c > /var/lib/iptables-save
-bash: /var/lib/iptables-save: Отказано в доступе
Я так понимаю iptables-save я запускаю через sudo - поэтому он выполняется от rootа. Но запускаю из консоли, открытой пользователем gateadmin поэтому запись в /var/lib/iptables-save идёт от имени gateadmin, которому изменять данный файл не дозволено. Собственно вопрос, как, не меняя права доступа к файлу и не переходя в консоль суперпользователя через su, на этом примере осуществлять вывод в файл доступный только rootу чисто через sudo?

★★★★★
sudo -s 'iptables-save -c >/var/lib/iptables-save'

если не ошибаюсь

anonymous
()

Я так понимаю iptables-save я запускаю через sudo - поэтому он выполняется от rootа. Но запускаю из консоли, открытой пользователем gateadmin поэтому запись в /var/lib/iptables-save идёт от имени gateadmin, которому изменять данный файл не дозволено.

Всё правильно, файл пытается открыть оболочка, потом запускает sudo. Можно сделать так:

sudo sh -c 'iptables-save -c > /var/lib/iptables-save'
или так:
iptables-save -c | sudo tee /var/lib/iptables-save
или любым другим способом, в котором файл открывает рут.

gentoo_root ★★★★★
()
Ответ на: комментарий от Eddy_Em

Больше разницы нет.

у su нет настроек прав доступа + нужно знать рутовый пароль

lazyklimm ★★★★★
()
Ответ на: комментарий от Eddy_Em

mike@pet64 ~ $ su -c env | sort > /tmp/1
Пароль:
mike@pet64 ~ $ sudo env | sort > /tmp/2
mike@pet64 ~ $ diff /tmp/1 /tmp/2 | wc -l
83
mike@pet64 ~ $ sudo -s env | sort > /tmp/2
mike@pet64 ~ $ diff /tmp/1 /tmp/2 | wc -l
84

imul ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.