Довольно большая разница заключается в том, что если вы запускаете программу напрямую, она запускается с правами вашего идентификатора пользователя, а с sudo
вы используете чужой идентификатор пользователя и его права:
Рассмотрим вашу обычную систему, в которой /bin/ls
может выполнять кто угодно, а /root
может читать только сам root
пользователь:
$ /bin/ls /root/test
/bin/ls: cannot access '/root/test': Permission denied
но
$ sudo /bin/ls /root/test
hello.txt
или id
против sudo id
.
Обратите внимание, что идентификатор пользователя имеет значение не только для доступа к файлам, но и, например, для доступа к файлам. в отправке сигналов процессам и, конечно же, root
может выполнять множество других административных действий, которые обычные пользователи не могут.
Конечно, sudo
по умолчанию запускает программу от имени пользователя root, но разница в принципе такая же, даже если вы используете вместо этого sudo -u johnnie
.
Чтобы определить, какие параметры конфигурации следует отключить, найдите имена ненужных объектных файлов в соответствующем Makefile; например:
$ grep xt_LOG.o net/netfilter/Makefile
obj-$(CONFIG_NETFILTER_XT_TARGET_LOG) += xt_LOG.o
Это означает, что вам нужно отключить NETFILTER_XT_TARGET_LOG
.
Примените тот же подход ко всем другим объектным файлам.