Применить конкретную sed
замену сразу после добавления:
$ cat initial.txt >> final.txt
$ sed -Ei '/^lats =/N; s/\n\s{6}//' final.txt
Проблема в том, что 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
.
(Обратите внимание, :это немного похоже на задачу XY . Возможно, вы захотите описать реальную проблему, из-за которой вы хотите вместо этого установить такие разрешения на abcd.php
.)
Давайте посмотрим, что означают ваши требования:
Поскольку файлы *.php
часто используются с веб-страницами,подобные проблемы часто решаются путем запуска веб-сервера в качестве отдельной учетной записи пользователя с полностью отключенным доступом к SFTP/FTP и настройкой веб-сервера для вывода только результатов выполнения файла PHP, а не самого файла PHP. сам.
Если локальному пользователю необходимо выполнить файл PHP, он может запустить команду, например curl http://localhost/some/path/abcd.php
, и процесс веб-сервера выполнит за него файл, в то время как самому пользователю не потребуется иметь прямой доступ к файл abcd.php
вообще на уровне файловой системы.
Если вы используете PHP в качестве инструмента для локальных сценариев, вы можете не задействовать веб-сервер, а вместо этого использовать sudo
, , как описано в ответе FelixJN .