sudo或acl或setuid / setgid?

出于某种原因,我不太明白,每个人都想为所有事情做好准备。 在工作中,我们甚至有许多条目可以读取日志文件(head / tail / cat / more,…)。

我想,sudo在这里击败。

我宁愿使用setgid / setuid目录的组合,并在这里和那里添加ACL,但我真的需要知道在启动之前什么是最佳实践。

我们的服务器有%pipe理员,%生产,%dba,%用户 – 许多组和许多用户。 每个服务(mysql,apache,…)都有自己的安装权限的方式,但%production组的成员必须能够查阅configuration文件甚至是日志文件。 仍然有解决scheme将它们添加到正确的组(mysql …),并设置良好的权限。 但我不想修改所有的用户,我不想修改标准的权限,因为每次升级都可能会改变。

另一方面,在目录中设置acls和/或混合setuid / setgid是我可以很容易地做的事情,而不用“标示”标准分发。

你怎么看待这件事 ?

以mysql为例,看起来像这样:

setfacl d:g:production:rx,d:other::---,g:production:rx,other::--- /var/log/mysql /etc/mysql 

你认为这是好的做法还是我应该定义usermod -G mysql并使用标准权限系统来玩?

谢谢

最佳实践:维护sudoers文件并使用sudo。

在我的个人电脑上,我更喜欢setuid / gid,但是我是我电脑上唯一的一个。 而且我也不会像任何公然的危险那样做。

最佳实践(最常见)倾向于使用sudo 。 Sudo为您提供细致的控制,configuration可以同时处理多台机器。

使用ACL可以补充这个 – sudo句柄操作作为root用户; ACL赋予用户和组以目录和文件的权利。 我不会指望setgid和setuid做任何合理的事情。

我也会执行轮组; 这将有助于提高安全性。 检查你的su程序是否支持轮组。

还有一件事:如果你view读取日志文件的方式不是那么简单,那么你就有风险:这两个程序都提供shell访问。

在我看来,sudoers选项比setuid / setguid / ACL更紧凑。

没有分组用户,你的ACLS将会很长。 如果你是组用户,你回到了你开始的地方。

更大的问题是,如果没有对其进行集中pipe理,访问控制就会传播到整个文件系统。 当然你可以很容易地解决这个问题,比如macros,模板,configurationpipe理等等。 但是这是一个完全没有任何其他的层面来减less复杂性。

在我的小Drupal商店中,我对所有工作文件都使用了相当广泛的ACL,但所有pipe理访问都使用了sudo。 我正在使用的configurationpipe理层是Ansible,而且它的好处是我可以很容易地为用户,他们的angular色,以及他们得到什么组织,在什么机器上等。 Sudoers也有类似的pipe理。 这对我来说似乎是最好的做法,因为它是最透明的。

当然,我可能没有像你那么多的用户或者群体。 我也可以设想将ACL放置在configurationpipe理中。 但是对于我来说,我看不到以这种方式pipe理许多机器,许多用户和许多团队的直接方式。