Примечание: я отвечаю 1. , поскольку Игнасио уже ответил 2 ..
В следующей sudoзаписи:
superadm ALL=(ALL) ALL
Есть четыре поля:
- Первый указывает пользователя, которому будут предоставлены привилегии для некоторых команд.
- Второй редко используется. Это список имен хостов, для которых эта запись sudo будет действовать. В стандартных настройках релевантен только один хост (localhost), поэтому это поле обычно оставляется как
ALL.
- Четвёртом поле список команд
superadmбудет иметь возможность работать с повышенными привилегиями. ALLозначает все команды. В противном случае используйте список команд через запятую.
- Третье поле (написанное
(…)необязательно) указывает, какие пользователи (и группы) superadmсмогут выполнять следующие команды: ALLозначает, что они могут выбрать что угодно (неограниченно). Если это поле опущено, оно означает то же, что и (root).
Пример:
alan ALL = (root, bin : operator, system) /bin/ls, /bin/kill
Здесь alanразрешено запускать две команды /bin/lsи /bin/killкак root(или bin), возможно, с дополнительными operatorили systemгрупповыми привилегиями.
Так что alanможете выбрать запуск lsот имени binпользователя с operatorпривилегиями группы, например:
sudo -u bin -g operator /bin/ls /whatever/directory
Если -uопущен, это так же, как -u root. Если -gопущен, дополнительные привилегии группы не предоставляются.