Dec 14 12:00:59 ubuntu dhclient[674]: Sending on Socket/fallback
Dec 14 12:00:59 ubuntu dhclient[674]: DHCPDISCOVER on ens3 to 255.255.255.255 port 67 interval 3 (xid=0x2ad36074)
Dec 14 12:00:59 ubuntu dhclient[674]: DHCPOFFER of 10.33.178.10 from 10.33.178.2
Dec 14 12:00:59 ubuntu dhclient[674]: DHCPREQUEST for 10.33.178.10 on ens3 to 255.255.255.255 port 67 (xid=0x7460d32a)
Dec 14 12:00:59 ubuntu dhclient[674]: DHCPACK of 10.33.178.10 from 10.33.178.2 (xid=0x2ad36074)
Dec 14 12:00:59 ubuntu audit[679]: AVC apparmor="DENIED" operation="exec" profile="/{,usr/}sbin/dhclient" name="/usr/bin/true" pid=679 comm="isc-worker0000" requested_mask="x" denied_mask="x" fsuid=0 ouid=0
Да-да. Была вот такая строчка:
md5sum "$mystatedir/isc-dhcp-v4-$interface" "$mystatedir/isc-dhcp-v6-$interface" "$mystatedir/ifupdown-inet-$interface" "$mystatedir/ifupdown-inet6-$interface" > "$oldstate" 2> /dev/null || true
В которой автор кода сказал "да, пожалуйста, игнорируйте любые ошибки в этом месте", но пришёл apparmor и сказал "нельзя, нельзя". И случилось чудное.
Программисты шутят про #define TRUE FALSE, а сисамдины отлаживают.
Dec 14 12:00:59 ubuntu dhclient[674]: DHCPDISCOVER on ens3 to 255.255.255.255 port 67 interval 3 (xid=0x2ad36074)
Dec 14 12:00:59 ubuntu dhclient[674]: DHCPOFFER of 10.33.178.10 from 10.33.178.2
Dec 14 12:00:59 ubuntu dhclient[674]: DHCPREQUEST for 10.33.178.10 on ens3 to 255.255.255.255 port 67 (xid=0x7460d32a)
Dec 14 12:00:59 ubuntu dhclient[674]: DHCPACK of 10.33.178.10 from 10.33.178.2 (xid=0x2ad36074)
Dec 14 12:00:59 ubuntu audit[679]: AVC apparmor="DENIED" operation="exec" profile="/{,usr/}sbin/dhclient" name="/usr/bin/true" pid=679 comm="isc-worker0000" requested_mask="x" denied_mask="x" fsuid=0 ouid=0
Да-да. Была вот такая строчка:
md5sum "$mystatedir/isc-dhcp-v4-$interface" "$mystatedir/isc-dhcp-v6-$interface" "$mystatedir/ifupdown-inet-$interface" "$mystatedir/ifupdown-inet6-$interface" > "$oldstate" 2> /dev/null || true
В которой автор кода сказал "да, пожалуйста, игнорируйте любые ошибки в этом месте", но пришёл apparmor и сказал "нельзя, нельзя". И случилось чудное.
Программисты шутят про #define TRUE FALSE, а сисамдины отлаживают.
no subject
Date: 2023-12-16 04:44 pm (UTC)Автор полиси неправ. Иметь исполняемый и работающий
true— конституционное право каждого шелл-скрипта, гарантируемое спецификацией POSIX.no subject
Date: 2023-12-17 08:46 pm (UTC)no subject
Date: 2023-12-18 05:45 am (UTC)В спеке на семейство функций
execl,execle,execlp,execv,execve,execvp,fexecveперечислены условия, при которых вызов обязан вернуть код ошибкиEACCES, но формулировка такова, что этот список не исчерпывающий (“shall fail if”, не “if and only if”). Поэтому ты можешь иметь файл, иметь право execute на его родительский каталог и всех предков, ноexec*всё равно имеет право вернутьEACCES.А вот в спеке на
trueникаких условий не прописано. Обязано быть, обязано вернуть нулевой код возврата, обязано никак не трогать стандартный ввод-вывод.no subject
Date: 2023-12-20 12:14 pm (UTC)no subject
Date: 2023-12-20 12:40 pm (UTC)Так а я и говорю, что виноват автор полиси, которая сломала возможность запускать essential утилиту POSIX- окружения.
Ломать
exec*чего попало в целях повышения безопасности — можно. Ломатьexec*для конкретно/bin/true— нельзя.no subject
Date: 2023-12-27 08:03 pm (UTC)