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