Разница между chmod +x и sudoing для исполняемого файла

Работающими символами являются коды ASCII (32 -126 )или коды ISO -8859 -1 (160 -255 ), которые все одинарные -. ] байтовые коды. Те, которые не работают для вас, - это UTF -8 с начальным байтом , который приложение ASCII (или Latin -1 )может рассматривать как печатное. Но дополнительные байты попадают в диапазон элементов управления C1 (128 -159 )и будут отброшены приложением такого типа. Затем, когда он пытается отобразить эти начальные байты, терминал, ожидающий UTF -8, может отбросить эти (неполные )последовательности, предоставив пустые блоки, показанные на первом изображении.

0
23.08.2019, 19:19
2 ответа

Я подозреваю, что вы хотели спросить конкретно о chmod o+x, чтобы разрешить other(, т. е. кому-то, кто не является ни user, ни членом указанныхgroup)пользователей для выполнения файла. chmod a+xявляется расширенным набором chmod o+x, так как включает разрешение на выполнение для всех 3 (user, groupи other).

Разница заключается в контексте, в котором будет выполняться программа. С sudoпрограмма запускается в контексте указанного пользователя; без sudoпрограмма запускается в контексте текущего пользователя. Для некоторых скриптов это может вообще не иметь значения, но если речь идет о правах пользователя, это имеет значение. Возможно, это поможет объяснить гипотетический вредоносный скрипт, который удалит все файлы в домашнем каталоге пользователя :

.

Если пользователь aliceзапустит sudo -u bob deleteHomeFiles.sh, то все файлы в домашнем каталоге bob будут удалены. С другой стороны, если aliceзапустит deleteHomeFiles.shнапрямую, файлы в домашнем каталоге Алисы будут удалены.

1
28.01.2020, 02:39

Довольно большая разница заключается в том, что если вы запускаете программу напрямую, она запускается с правами вашего идентификатора пользователя, а с 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.

0
28.01.2020, 02:39

Теги

Похожие вопросы