Попробуйте Virtualbox, а не бесплатно, и интернет подключен через ваш хост Ubuntu, поэтому нет беспорядка. Я нашел это, на самом деле, лучшей виртуальной машиной, вы даже получаете 3D-ускорение для графики.
Альтернативно вы можете посмотреть на двойная загрузка, тогда вы можете иметь окна и Ubuntu на одном компьютере, и оба запускаются на полной скорости
. Двойная загрузка - лучший способ пойти на мой взгляд, если вам понадобится совет по этому сообщению здесь и пусть я знаю.
Не думай об этом так. Могу ли я выполнить этот файл? Подумайте об этом так: Кто может выполнить этот файл?
Если компьютер принадлежит вам, и файл принадлежит вам, я уверен, что вы можете его выполнить. Возможно, вам захочется взглянуть дальше на команды, такие как chmod и chown, и права доступа к файлам.
Надеюсь, что это поможет.
Сценарий exec ядра Linux не работает с EACCES, если файл не является исполняемым
Пока вы можете делать sh myprog.sh, попытка запустить программу как ./myprog.sh не может работать, так как когда вы это делаете:
Bash использует системный вызов exec на ./myprog.sh, shebangs интерпретируются непосредственно системным вызовом exec ядра Linux, как описано в: https://stackoverflow.com / questions / 2429511 / why-do-people-write-the-usr-bin-env-python-shebang-on-the-first-line-of-a-pyt / 40938801 # 40938801 ядро Linux отказывается выполнять файлы без исполняемое разрешениеЭто можно проверить с помощью main.c:
#define _XOPEN_SOURCE 700
#include <errno.h>
#include <stdio.h>
#include <unistd.h>
int main(void) {
char *argv[] = {"myprog", NULL};
char *envp[] = {NULL};
int ret;
ret = execve("myprog.sh", argv, envp);
perror("execve");
printf("%d\n", errno);
printf("%d\n", EACCES);
}
и myprog.sh:
#!/bin/sh
echo worked
Если myprog.sh не является исполняемым , main терпит неудачу:
execve: Permission denied
13
13
Протестировано в Ubuntu 17.10, gcc -std=c99.
POSIX 7 упоминает, что при:
Функции exec, за исключением fexecve (), не будет выполнено, если: [EACCES] Разрешение поиска отклонено для каталога, указанного в префиксе пути нового файла образа процесса, или новый файл образа процесса отклоняет разрешение на выполнение.Дальнейшее обоснование можно найти по адресу: https://security.stackexchange.com/questions/66550/unix-execute-permission-can-be-easily-bypass-is-it-superfluous-or- Что-кнопки
Убедитесь, что вы не сбиваете с толку «выполнение сценария оболочки» с помощью «запуска скрипта оболочки с помощью sh».
На file.sh не будут влиять права доступа к файлам:
sh file.sh
Вы выполняете sh (который разрешает программу /bin/sh), которая читает file.sh и выполняет его код.
Разрешения для файлов будут иметь эффект, если вы действительно выполняете скрипт self:
./file.sh
Обратите внимание, что разрешения файлов не поддерживаются файловыми системами, отличными от Linux, например FAT. Таким образом, даже если вы запустите chmod -x file.sh, у файла все еще будут свои прежние разрешения.
Выполнение разрешения выполняется файловой системой. Но программы также могут «выполнять» код, читая содержимое файла, которое обходит разрешения файловой системы «execute».
Не думай об этом так. Могу ли я выполнить этот файл? Подумайте об этом так: Кто может выполнить этот файл?
Если компьютер принадлежит вам, и файл принадлежит вам, я уверен, что вы можете его выполнить. Возможно, вам захочется взглянуть дальше на команды, такие как chmod и chown, и права доступа к файлам.
Надеюсь, что это поможет.
Убедитесь, что вы не сбиваете с толку «выполнение сценария оболочки» с помощью «запускать сценарий оболочки с помощью sh».
На file.sh
это не будет зависеть от прав доступа к файлам ]:
sh file.sh
Выполняется sh
(который разрешает программу / bin / sh
), который читает file.sh
и выполняет его код.
Разрешения на файл будут иметь эффект, если вы действительно выполняете сам скрипт :
./ file.sh
Обратите внимание, что разрешения файлов не поддерживаются файловыми системами, отличными от Linux, например FAT. Таким образом, даже если вы запустите chmod -x file.sh
, файл все равно будет иметь прежние разрешения.
Выполнение разрешения выполняется файловой системой. Но программы также могут «выполнять» код, читая содержимое файла, которое обходит разрешения файловой системы «execute».
Не думай об этом так. Могу ли я выполнить этот файл? Подумайте об этом так: Кто может выполнить этот файл?
Если компьютер принадлежит вам, и файл принадлежит вам, я уверен, что вы можете его выполнить. Возможно, вам захочется взглянуть дальше на команды типа chmod и chown и права доступа к файлам.
Надеюсь, что это поможет.
Сценарий exec
ядра Linux не работает с EACCES
, если файл не является исполняемым
Пока вы можете делать sh myprog. sh
, пытаясь запустить программу как ./ myprog.sh
не может работать, поскольку когда вы это делаете:
./ myprog.sh
exec
ядра Linux, как описано в: https: / /stackoverflow.com/questions/2429511/why-do-people-write-the-usr-bin-env-python-shebang-on-the-first-line-of-a-pyt/40938801#40938801 Это можно проверить с помощью main.c
:
#define _XOPEN_SOURCE 700 #include & lt; errno.h & gt; #include & lt; stdio.h & gt; #include & lt; unistd.h & gt; int main (void) {char * argv [] = {"myprog", NULL}; char * envp [] = {NULL}; int ret; ret = execve ("myprog.sh", argv, envp); PError ( "execve"); printf ("% d \n", errno); printf ("% d \n", EACCES); }
и myprog.sh
:
#! / bin / sh эхо работает
Если myprog.sh
не является исполняемым, main
терпит неудачу с:
execve: Permission denied 13 13
[ ! d31]Протестировано в Ubuntu 17.10,
gcc -std = c99
.POSIX 7 упоминает, что при:
Функции exec , за исключением fexecve (), не удастся, если:
[EACCES] Разрешение поиска отклонено для каталога, указанного в префиксе пути файла нового файла процесса, или новый файл образа процесса отклоняет разрешение на выполнение.
blockquote>Дальнейшее обоснование можно найти по адресу: https://security.stackexchange.com/questions/66550/unix-execute-permission-can-be-easily-bypassed-is-it -superfluous или-Что-кнопки
Не думай об этом так. Могу ли я выполнить этот файл? Подумайте об этом так: Кто может выполнить этот файл?
Если компьютер принадлежит вам, и файл принадлежит вам, я уверен, что вы можете его выполнить. Возможно, вам захочется взглянуть дальше на команды типа chmod и chown и права доступа к файлам.
Надеюсь, что это поможет.
Убедитесь, что вы не сбиваете с толку «выполнение сценария оболочки» с помощью «запускать сценарий оболочки с помощью sh».
На file.sh
это не будет зависеть от прав доступа к файлам ]:
sh file.sh
Выполняется sh
(который разрешает программу / bin / sh
), который читает file.sh
и выполняет его код.
Разрешения на файл будут иметь эффект, если вы действительно выполняете сам скрипт :
./ file.sh
Обратите внимание, что разрешения файлов не поддерживаются файловыми системами, отличными от Linux, например FAT. Таким образом, даже если вы запустите chmod -x file.sh
, файл все равно будет иметь прежние разрешения.
Выполнение разрешения выполняется файловой системой. Но программы также могут «выполнять» код, читая содержимое файла, которое обходит разрешения файловой системы «execute».
bash
), чтобы выполнить выполнение - чтобы заблокировать, что вам нужно будет удалить их чтение
Что ж.
– j-g-faustus
10 February 2011 в 23:37
Если вы установите разрешение на выполнение, сценарий может запускаться непосредственно пользователями, у которых есть это разрешение, независимо от того, есть ли у них это на основе группы, мира или владельца
. Но как разрешение предоставляется другим пользователям, проверяя разрешение на выполнение? И у меня есть второй момент. Вы имеете в виду отнять их разрешение на чтение скрипта, чтобы они не могли обработать его через bash. Правильно?
– Ashfame
10 February 2011 в 23:58
sudo chmod g + x myfile.sh
, чтобы добавить разрешения на выполнение для группы файлов. См. [D0] Учебник по разрешению файлов . Чтобы управлять разрешениями для нескольких пользователей одновременно, вы должны использовать группы, например, Управление группами .
– j-g-faustus
11 February 2011 в 01:43
Сценарий exec
ядра Linux не работает с EACCES
, если файл не является исполняемым
Пока вы можете делать sh myprog. sh
, пытаясь запустить программу как ./ myprog.sh
не может работать, поскольку когда вы это делаете:
./ myprog.sh
exec
ядра Linux, как описано в: https: / /stackoverflow.com/questions/2429511/why-do-people-write-the-usr-bin-env-python-shebang-on-the-first-line-of-a-pyt/40938801#40938801 Это можно проверить с помощью main.c
:
#define _XOPEN_SOURCE 700 #include & lt; errno.h & gt; #include & lt; stdio.h & gt; #include & lt; unistd.h & gt; int main (void) {char * argv [] = {"myprog", NULL}; char * envp [] = {NULL}; int ret; ret = execve ("myprog.sh", argv, envp); PError ( "execve"); printf ("% d \n", errno); printf ("% d \n", EACCES); }
и myprog.sh
:
#! / bin / sh эхо работает
Если myprog.sh
не является исполняемым, main
терпит неудачу с:
execve: Permission denied 13 13
[ ! d31]Протестировано в Ubuntu 17.10,
gcc -std = c99
.POSIX 7 упоминает, что при:
Функции exec , за исключением fexecve (), не удастся, если:
[EACCES] Разрешение поиска отклонено для каталога, указанного в префиксе пути файла нового файла процесса, или новый файл образа процесса отклоняет разрешение на выполнение.
blockquote>Дальнейшее обоснование можно найти по адресу: https://security.stackexchange.com/questions/66550/unix-execute-permission-can-be-easily-bypassed-is-it -superfluous или-Что-кнопки