Как я могу изменить мод файла на chmod x в linux?

#python #linux #shell

Вопрос:

У меня есть helloworld.sh файл в моем Linux. Когда я пытаюсь просто запустить его с помощью скрипта python subprocess.call('./hello.sh') , он показывает результат permission denied .

Я пробовал этот метод, найденный в Интернете, но он не работает os.chmod("hello.sh", 0o664) . Я хочу изменить разрешение файла с помощью скрипта python на chmod x .

Пожалуйста, объясните мне синтаксис. Я также искал в Интернете, но это не работает. У меня Linux на базе Debian.

Комментарии:

1. os.chmod("hello.sh", 0o755) чтобы предоставить права на исполнение. Вы создаете сценарий?

2. нет, у меня есть скрипт в файле .sh, я выполняю его с помощью скрипта python, но при выполнении он выдает ошибку «Отказано в разрешении».

3. 6-это r w, а не r w x; а 4-это только r. Почему вы думаете, что 644 должно быть эквивалентно результату подачи заявки x ?

Ответ №1:

Это должно добавить исполняемые разрешения user group и other независимо от платформы , сохраняя при этом любые исходные разрешения. У меня нет машины с Windows для тестирования, но в документации Path.chmod() говорится, что она также должна поддерживаться в Windows, хотя все биты, кроме бита, доступного только для чтения, будут игнорироваться.

 from pathlib import Path import stat  path = Path("/path/to/file") original_st_mode = path.st_mode path.chmod(original_st_mode | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH)