LINUX.ORG.RU
решено ФорумAdmin

Не запускается скрипт с правами root

 ,


0

1

Задача запустить скрипт из под пользователя с правами рут. Содержимое самое простое:

sudo ls /root

Делаю это так:

sudo chown root:root имя_файла
sudo chmod u+s,g+s имя_файла

Способ работает, но только до перезагрузки компьютера: после перезагрузки скрипт требует ввести пароль sudo.

Пробовал прописывать в /etc/sudoers :

## User privilege specification
##
root ALL=(ALL:ALL) ALL
user ALL = (ALL) ALL
user ALL = (root) NOPASSWD: /home/user/script.sh

Не помогает.

sudo ls /root

root ALL=(ALL:ALL) ALL

Так он и должен пароль запрашивать

Сначала пользователь запускает скрипт без пароля, потом sudo требует пароль, чтобы выполнить sudo ls /root

router ★★★★★
()

Более правильный способ - второй, с NOPASSWD. Скрипт нужно запускать как sudo /home/user/script.sh, при праваильной конфигурации sudoers пароль не будет запрашиваться. В самом скрипте никаких sudo не нужно.

annulen ★★★★★
()

chmod u+s,g+s

setuid/setgid не позволяет запускать скрипты от другого пользователя, только бинарники.

$ cat suid.c
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char** argv) {
    setuid(geteuid());
    if (argc > 1) system(argv[1]);
    return 0;
}

...

$ whoami; ./suid whoami
anonymous
root
anonymous
()