Проблема здесь в что для этого пользователя есть два правила:
(ALL) NOPASSWD: /bin/chmod, /bin/chown
(ALL : ALL) ALL
Второе происходит из строки в sudoers read
%sudo ALL=(ALL:ALL) ALL
Sudo будет использовать первое правило сопоставления, начиная с нижней части файла - поэтому, когда вам нужно иметь разные параметры для подмножество команд, вам необходимо убедиться, что они перечислены под более общей строкой.
Другими словами, вам необходимо убедиться, что строка
max ALL=(ALL) NOPASSWD: NOPASS_CMNDS
помещается после строка
%sudo ALL=(ALL:ALL) ALL
в файле.
Это делается довольно просто, отправляя фоновые процессы в фоновый режим:
foo.sh &
mypid=$!
tail -f /path/to/logs.log > /path/to/partial.log &
tailpid=$!
wait $mypid
kill -TERM $tailpid
$!
фиксирует PID последнего задания, отправленного для запуска в фоновом режиме, поэтому мы можем wait
закончить ваш сценарий, а затем kill
процесс tail
, когда он нам больше не нужен.
Эта версия тоже может это делать (я думаю):
( tail -f logs.log >foo_part.log &
foo.sh&
wait $! && kill %1 )
Обратите внимание, что %1 вызовет первый фоновый процесс в подоболочке