Canon LBP7110Cw не печатает с ubuntu 12.04

Сценарий 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- Что-кнопки

1
задан 21 June 2014 в 16:14

1 ответ

В эту же проблему вставили ту же проблему (err = -1 ¥ nDEBUG: написал 1 страницу ...) сегодня после установки 64-разрядных драйверов Canon для принтера LBP7110cw на рабочей станции (x) ubuntu 14.04 Trusty Tahr. Файл Readme в каталоге .gzipped, содержащем драйверы, для установки ia32-libs и libjpeg62: i386; однако, ia32-libs больше не присутствуют в ubuntu 12.04 и более поздних версиях.

Установка следующих библиотек до (повторной) установки 64-битного драйвера исправила проблему и разрешила печать:

[ f1]
2
ответ дан 24 May 2018 в 06:26
  • 1
    Благодарю. Я установил lib32z1 lib32ncurses5 lib32bz2-1.0 libjpeg62: i386. Затем я снова установил 64-битный драйвер. Появилась та же ошибка. Затем я установил ia32-libs. Я снова установил 64-битный драйвер. Появилась та же ошибка. Поэтому я не могу распечатать. Более того, у меня такая же проблема с моими 32-разрядными pc.So. Я не думаю, что это проблема 32-битных библиотек. – user296575 1 January 2015 в 20:52

Другие вопросы по тегам:

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