Почему делает “sudo./нечто” возвратов “./нечто Команд, не найденных”?

Один способ использовать awk:

$ awk 'NR==FNR{a[$2]=$1 FS $3;next}{print $0 FS a[$2] }' file2 file1
873 1.1.1.1  test7 p10
1033 99.99.99.10 test2 p9
1108 78.2.204.174 test8 p4
1257 78.2.8.181 test1 p6

Файл f2 загружается в массив, где 2-е поле является индексом, и значение массива является комбинацией 3-х и 4-х полей file2. Когда file1 обрабатывается, вся строка наряду с хранимой суммой в массиве печатается.

1
17.01.2014, 19:26
4 ответа

Необходимо установить полномочия сценария на исполняемый файл:

chmod +x ./foo  # or sudo chmod +x ./foo
./foo
1
27.01.2020, 23:53
  • 1
    Спасибо, это - все, чем это было. Я просто не привык к необходимости сделать это вручную для каждого сценария. –  ThatDarnPat 17.01.2014, 21:47

Это кажется, что нечто не является исполняемым файлом. Можно зафиксировать это путем выполнения chmod +x foo, затем ./foo или sudo ./foo Альтернатива созданию его исполняемый файл должна была бы передать его sh как аргумент. Можно выполнить его этот путь путем ввода sh ./foo или sudo sh ./foo.

0
27.01.2020, 23:53

Проверьте исполняемый бит файла. Например,

$ ls -l might return 
-rw-rw-r--   1 hacker hacker        28 Jan 17 11:32 foo

$ chmod 775 foo

Изменение как подходящее для пользователя Вы хотите смочь выполнить сценарий.

0
27.01.2020, 23:53

Смотрите на биты полномочий для файлов ./foo и ./bar. В первом случае ./foo вероятно или не исполняемый вообще или не исполняемый файл для пользователя root. Когда Вы работаете sudo Вы являетесь обычно подъемными свои полномочия так, чтобы Вы были пользователем root.

Если Вы - полномочия, установлены как это на файле ./foo это не выполнится для userX.

$ ls -l
-rw-rw-r--   1 userX groupX          14 Jan 17 11:32 foo

Если они будут похожи на это, то это выполнится для userX.

$ chmod u+x foo
$ ls -l
-rwxrw-r--   1 userX groupX          14 Jan 17 11:32 foo

Однако корневой все еще не сможет выполнить его, так как 3 группировки полномочий (rwxrw-r-) не позволяют другим пользователям выполняться ./foo. Можно или включить просто, что группировка или можно дать всем разрешения выполнения.

$ chmod o+x foo    # -rwxrw-r-x #  just other users
$ chmod g+x foo    # -rwxrwxr-- #  allows users in group groupX
$ chmod +x foo     # -rwxrwxr-x #  allows everyone

Заметьте в вышеупомянутом, которое мы включаем x бит для различных групп битов (пользователь, группа, другой).

Что относительно./запрещать?

Этот файл не существует, и таким образом пытаясь выполнить что-то, что не существует, даст Вам сообщение, которое Вы видели.

$ sudo ./bar
sudo: ./bar: command not found

Или просто обычный пользователь:

$ ./bar
-bash: ./bar: No such file or directory
0
27.01.2020, 23:53

Теги

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