2010-08-14 126 views
0

我已经写了一个Linux系统宽C++程序/usr/bin/PROG_X,它使用配置文件/etc/PROG_X.conf和日志文件/var/PROG_X.log程序可执行文件和日志文件的权限应该是多少?

现在我需要在使用apache web服务器和php的web上强调认证之后调用这个程序。调用该程序可能涉及更改配置文件,并且会改变日志文件。

我对保持启用SELinux感兴趣。

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

回答

2

在大多数锁定的方法(假定日志和配置是敏感的):

运行Apache用户的“www”,“progx”的用户和组存在行驶的/ usr/bin中的唯一目的/ PROG_X。

/etc/PROG_X.conf属于root:progx,并且具有权限640
/var/PROG_X.log属于root:progx,并且具有权限660
的/ usr /斌/ PROG_X是由progx:progx拥有,并具有权限500
/etc/sudoers允许www仅运行/ usr/bin/PROG_X作为progx。

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

[编辑:错过了表示程序可能需要更改其配置文件的部分...因此,权限将改为660]

1

好了,我不知道SELinux的,但也有一些“传统”的解决方案浮现在脑海中:

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

setuid的替代方案可能是在该程序的/etc/sudoers中添加适当的条目,并通过sudo调用它。但它具有与程序以root身份运行相同的安全隐患,但至少您可以使用访问更加细化(例如,您只能允许“www”用户以root身份运行程序)。

另一种解决方案可能是chown root:wwwrun all_of_the_files_that_PROG_X_need_to_modify。但是,只有当你确切知道哪些文件以及该文件集没有更改时,这才会起作用。

相关问题