Страница 1 из 1

как работает sudo?

Добавлено: 2011-01-14 0:12:13
denis-k
набираю команду:

Код: Выделить всё

%sudo pkg_version -v | grep "<" > /root/obnovlenie

думаю, что сейчас запросит пароль и я пойду пить чай, но она выдает следующее:

Код: Выделить всё

/root/obnovlenie: Недостаточно привилегий.
Password:
Что я делаю не так? Разве она не должна сначала спросить пароль, а потом уже проверять привилегии?

Re: как работает sudo?

Добавлено: 2011-01-14 0:21:54
unix-admin
Из man sudo:

Код: Выделить всё

       sudo, sudoedit - execute a command as another user
Вы запускаете команду pkg_version в окружении sudo, но это не дает вам прав на создание файла в директории /root.
Вот так будет работать:

Код: Выделить всё

sudo pkg_version -v | grep -v = > ~/obnovlenie
p.s.: Так вы еще и увидите "BROKEN, FORBIDDEN, or IGNORE" порты.

Re: как работает sudo?

Добавлено: 2011-01-14 0:26:15
denis-k
unix-admin, но файл существует, та же команда:

Код: Выделить всё

%sudo touch /root/primer
проходит на ура

Re: как работает sudo?

Добавлено: 2011-01-14 0:32:20
hizel

Код: Выделить всё

sudo sh -c 'pkg_version -v | grep "<" > /root/obnovlenie'

Re: как работает sudo?

Добавлено: 2011-01-14 0:38:41
denis-k
hizel, вроде пошло :) а в чем трабла то? в sudo нельзя писать длинные команды (конвейеры, перенаправления)?

Re: как работает sudo?

Добавлено: 2011-01-14 0:40:58
hizel

Re: как работает sudo?

Добавлено: 2011-01-14 0:47:20
unix-admin
denis-k писал(а):hizel, вроде пошло :) а в чем трабла то? в sudo нельзя писать длинные команды (конвейеры, перенаправления)?
Найдите разницу :) Ключевая фраза:

Код: Выделить всё

execute a command as another user

Re: как работает sudo?

Добавлено: 2011-01-14 1:52:40
FreeBSP
под судо выполняется тока первая команда. а потом ее результат идет в конвейер ко второй команде, которая уже от тебя

Код: Выделить всё

sudo 'cmd | cmd2 > file1' 
тоже должно работать по идее

Re: как работает sudo?

Добавлено: 2011-01-14 3:18:31
denis-k
Гы:
Критика

Программу критикуют, в частности, за невозможность выполнять некоторые команды. К примеру:

sudo cat sources.list > /etc/apt/sources.list

выдаст ошибку прав доступа (так как с правами root выполняется только процесс cat, а перенаправление выполняет shell с правами обычного пользователя), хотя такое можно сделать, использовав конвейер:

cat sources.list | sudo tee /etc/apt/sources.list

также ничто не мешает выполнить шелл с административными правами, а строку к выполнению взять в кавычки, используя параметр шелла «-с»:

sudo sh -c 'cat sources.list > /etc/apt/sources.list'

или же попасть в шелл интерактивно аналогично работе su, используя параметр -s

sudo -s

или выполнив

sudo sh
Всем спасибо :-D