Запрос прав доступа к файлам Linux

Применить конкретную sedзамену сразу после добавления:

$ cat initial.txt >> final.txt
$ sed -Ei '/^lats =/N; s/\n\s{6}//' final.txt
0
14.09.2021, 21:17
2 ответа

Проблема в том, что PHPв конце концов является языком сценариев. т.е. для выполнения нужно уметь его читать.

Однако вы можете обойти это, сменив владельца и разрешив выполнение sudo без пароля. Например.

 $ls -a file.php
 -r-x------ 1 phpuser phpuser 15 15. Sep 13:12 file.php

с phpuser, не являющимся john, пользователем, о котором вы беспокоитесь. Затем введите запись типа

 $cat /etc/sudoers
 %phpreaders ALL=(phpuser) NOPASSWD: /path/to/file.php

и добавьте нужных пользователей в группу phpreaders-. С указанной выше записью sudoersчлены группы phpreadersмогут выполнять скрипт на серверах ALLбез пароля, но он будет запускаться как phpuser. Таким образом, выполнение будет выполнено вызовом john

sudo -u phpuser /path/to/file.php

Имейте в виду, что он запускается не как john, а как phpuser.

0
15.09.2021, 11:41

(Обратите внимание, :это немного похоже на задачу XY . Возможно, вы захотите описать реальную проблему, из-за которой вы хотите вместо этого установить такие разрешения на abcd.php.)

Давайте посмотрим, что означают ваши требования:

  • файл может быть выполнен/запущен пользователем:для файла PHP, это означает, что файл должен быть доступным для чтения для программы, работающей от имени пользователя, возможно, с выполнением бит добавлен. Это вполне нормально и может быть сделано легко.
  • не может быть удален пользователем:это означает, что файл должен быть расположен в каталоге, который не доступен для записи пользователю, и не имеет родительских каталогов, которые также могут быть доступны для записи пользователем . По сути, это означает, что файл должен находиться в месте, полностью доступном для чтения -только для пользователя. (Если пользователю не разрешено удалять файл, вы, вероятно, также не захотите разрешать пользователю изменять содержимое файла.)
  • файл не может быть загружен пользователем :, к сожалению, это противоречит вашему первому требованию. Когда права доступа к файлу в Linux определяют файл как доступный для чтения, файл будет доступным для чтения для любых целей:невозможно использовать права доступа к файлу, чтобы обозначить файл как «доступный для чтения для выполнения, но не для загрузки». Вам придется использовать некоторые другие средства для обеспечения такого рода ограничений.

Поскольку файлы *.phpчасто используются с веб-страницами,подобные проблемы часто решаются путем запуска веб-сервера в качестве отдельной учетной записи пользователя с полностью отключенным доступом к SFTP/FTP и настройкой веб-сервера для вывода только результатов выполнения файла PHP, а не самого файла PHP. сам.

Если локальному пользователю необходимо выполнить файл PHP, он может запустить команду, например curl http://localhost/some/path/abcd.php, и процесс веб-сервера выполнит за него файл, в то время как самому пользователю не потребуется иметь прямой доступ к файл abcd.phpвообще на уровне файловой системы.

Если вы используете PHP в качестве инструмента для локальных сценариев, вы можете не задействовать веб-сервер, а вместо этого использовать sudo, , как описано в ответе FelixJN .

1
15.09.2021, 12:35

Теги

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