Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 程序可执行文件和日志文件的正确文件权限应该是什么? 我编写了一个Linux系统的C++程序:代码>/Ur/bin /Posixx < /C> >使用配置文件/ETC/PROFXX.CONF和日志文件 /VAR/PROPXX.Log ./P>_Php_C++_Linux_Apache_Permissions - Fatal编程技术网

Php 程序可执行文件和日志文件的正确文件权限应该是什么? 我编写了一个Linux系统的C++程序:代码>/Ur/bin /Posixx < /C> >使用配置文件/ETC/PROFXX.CONF和日志文件 /VAR/PROPXX.Log ./P>

Php 程序可执行文件和日志文件的正确文件权限应该是什么? 我编写了一个Linux系统的C++程序:代码>/Ur/bin /Posixx < /C> >使用配置文件/ETC/PROFXX.CONF和日志文件 /VAR/PROPXX.Log ./P>,php,c++,linux,apache,permissions,Php,C++,Linux,Apache,Permissions,现在,我需要使用ApacheWeb服务器和php从web调用这个程序,经过强身份验证。调用该程序可能涉及更改配置文件,当然,还会更改日志文件 我对启用SELinux很感兴趣 我的问题是:对于二进制文件、配置文件和日志文件,应该为哪些用户/组以及哪些文件权限进行设置,以便进行正确和安全的操作?嗯,我不知道SELinux,但我想到了几种“传统”解决方案: 首先,chown root/usr/bin/PROG_X,然后使用chmod+s/usr/bin/PROG_X设置setuid位。setuid位导

现在,我需要使用ApacheWeb服务器和php从web调用这个程序,经过强身份验证。调用该程序可能涉及更改配置文件,当然,还会更改日志文件

我对启用SELinux很感兴趣


我的问题是:对于二进制文件、配置文件和日志文件,应该为哪些用户/组以及哪些文件权限进行设置,以便进行正确和安全的操作?

嗯,我不知道SELinux,但我想到了几种“传统”解决方案:

首先,
chown root/usr/bin/PROG_X
,然后使用
chmod+s/usr/bin/PROG_X
设置setuid位。setuid位导致程序不是以当前用户身份运行,而是以文件所有者(在这种情况下为root)身份运行。这意味着您需要真正确保您的程序尽可能安全。所以要小心使用

setuid的一种替代方法是在程序的
/etc/sudoers
中添加一个适当的条目,并通过
sudo
调用它。但它具有与程序将以root用户身份运行相同的安全含义,但至少您可以更细粒度地进行访问(例如,您只能允许“www”用户以root用户身份运行程序)


另一个解决方案可能是
chown root:wwwrun所有需要修改的文件。但是,只有当您确切地知道哪些文件,并且该文件集没有更改时,这才有效。

好吧,我不知道SELinux,但我想到了几种“传统”解决方案:

首先,
chown root/usr/bin/PROG_X
,然后使用
chmod+s/usr/bin/PROG_X
设置setuid位。setuid位导致程序不是以当前用户身份运行,而是以文件所有者(在这种情况下为root)身份运行。这意味着您需要真正确保您的程序尽可能安全。所以要小心使用

setuid的一种替代方法是在程序的
/etc/sudoers
中添加一个适当的条目,并通过
sudo
调用它。但它具有与程序将以root用户身份运行相同的安全含义,但至少您可以更细粒度地进行访问(例如,您只能允许“www”用户以root用户身份运行程序)


另一个解决方案可能是
chown root:wwwrun所有需要修改的文件。但是,只有当您确切地知道哪些文件并且该文件集没有更改时,这才有效。

对于最锁定的方法(假设日志和配置是敏感的):

Apache以用户“www”、“progx”的身份运行,而组的存在只是为了运行/usr/bin/PROG_X。

/etc/PROG_X.conf归root:progx所有,拥有640权限
/var/PROG_X.log归root:progx所有,拥有660权限
/usr/bin/PROG_X归progx:progx所有,拥有500个权限
/etc/sudoers只允许www以progx的形式运行/usr/bin/PROG_X。

因此,只有root和progx可以查看配置或读/写日志文件,只有root可以修改配置。只有progx可以运行该程序,但apache可以通过sudo以progx的形式专门启动您的程序


[编辑:遗漏了说明程序可能需要更改其配置文件的部分…因此权限将改为660]

对于最锁定的方法(假设日志和配置是敏感的):

Apache以用户“www”、“progx”的身份运行,而组的存在只是为了运行/usr/bin/PROG_X。

/etc/PROG_X.conf归root:progx所有,拥有640权限
/var/PROG_X.log归root:progx所有,拥有660权限
/usr/bin/PROG_X归progx:progx所有,拥有500个权限
/etc/sudoers只允许www以progx的形式运行/usr/bin/PROG_X。

因此,只有root和progx可以查看配置或读/写日志文件,只有root可以修改配置。只有progx可以运行该程序,但apache可以通过sudo以progx的形式专门启动您的程序

[编辑:遗漏了说明程序可能需要更改其配置文件的部分…因此权限将改为660]