Предыдущие ответы объясняют, почему параметр noexec
не препятствует запуску скрипта, когда интерпретатор (в вашем случае/bin/bash
)явно вызывается из командной строки. Но если бы это было все, эта команда тоже сработала бы:
/lib64/ld-linux-x86-64.so.2 hello_world
Как вы заметили, это не работает. Это потому, что noexec
имеет еще один эффект. Ядро не будет разрешать отображаемые в память файлы из этой файловой системы с включенным PROT_EXEC
.
Файлы с отображением памяти используются в нескольких сценариях. Два наиболее распространенных сценария — для исполняемых файлов и библиотек. Когда программа запускается с помощью системного вызова execve
, ядро внутренне создает отображения памяти для компоновщика и исполняемого файла. Любые другие необходимые библиотеки отображаются в памяти компоновщиком через системный вызов mmap
с включенным PROT_EXEC
. Если вы попытаетесь использовать библиотеку из файловой системы с noexec
, ядро откажется выполнять вызов mmap
.
При вызове /lib64/ld-linux-x86-64.so.2 hello_world
системный вызов execve
только создаст сопоставление памяти для компоновщика, а компоновщик откроет исполняемый файл hello_world
и попытается создать сопоставление памяти почти так же, как это было бы сделано для библиотеки. И это тот момент, когда ядро отказывается выполнять вызов mmap
, и вы получаете ошибку :
./hello_world: error while loading shared libraries:./hello_world: failed to map segment from shared object: Operation not permitted
Параметр noexec
по-прежнему позволяет отображать память без разрешения на выполнение (, как это иногда используется для файлов данных ), а также разрешает обычное чтение файлов, поэтому bash hello_world
сработало для вас.
Так как мне "не разрешено" добавлять комментарии :@claudia Войдите в свою систему под своей учетной записью и введите sudo usermod -aG sudo *username*
в терминале, где имя пользователя — это пользователь, о котором идет речь.
Привилегии Sudo определяются в файле /etc/sudoers. Добавление пользователя в этот файл позволяет вам предоставлять настраиваемый доступ к командам и настраивать отдельные политики безопасности -просто как подсказку, поскольку вы хотели ограничить то, что пользователи могут делать в системе.
Эхеммм -ваш вывод journalctl гласит: «OBS :Не удалось использовать sudo, поскольку пользователь aluno ****не имеет такого разрешения» -Что происходит, когда вы добавляете пользователя в группу sudoer?
Я использую 32-разрядную версию LM 19.3, и после обновления несколько дней назад с
wpa=2 :2.6ubuntu2.6 до wpa=2 :2.6ubuntu2.8
Bluetooth перестал работать.
Возврат со сдвигом во времени, и он снова работает!?