使用SETUID位运行程序时的组权限

时间:2015-04-16 08:55:04

标签: linux permissions setuid

我正在建立一个系统,用户可以通过SFTP上传png文件,这些文件稍后会被复制到可从www服务器访问的目录,每隔几个小时就会传输一个文件。剩下要做的唯一事情是正确设置权限,但我没有这样做。

服务器是Cubieboard,操作系统是Cubian(Debian端口)

假设我有两个用户,“testaftertime”和“testaftertime2”。他们得到他们的目录。 “/ eizm / data / aftertime / testaftertime”属于用户“testaftertime”和组“testaftertime”。对于其他用户也是如此。

用户应该可以访问他们的目录,但其他人不应该访问。这就是为什么拥有者拥有“rwx”权利,而其他人拥有“---”权利。但是这些目录也应该由bot(可以复制png文件并读取或更改配置文件)访问。机器人由用户“b”运行。用户“b”被添加到组“testaftertime”和“testaftertime2”。这些目录的组权限是“rwx”。因此机器人可以毫无问题地访问这些目录。

在www服务器上,还有一个查看器。这应该允许查看已从这些目录中复制的图片。但是查看器应该能够访问目录中的配置文件。如果有人输入URL“/ aftertime / viewer?story = testaftertime”,服务器将调用程序“/ eizm / pro / aftertime / viewer”。 服务器由用户“www-data”运行,用户“www-data”不应添加到组“testaftertime”和“testaftertime2”,因为这些目录通常不能从www服务器访问。 程序“/ eizm / pro / aftertime / viewer”属于用户“b”并且设置了SETUID位。所以即使从服务器调用查看器程序也具有用户“b”的所有权限(我在CGI程序必须访问属于用户“b”的文件或目录的其他情况下这样做)并且因为用户“b”属于“testaftertime”组,查看者访问“/ eizm / data / aftertime / testaftertime”目录时不应该有问题。

但它不起作用。查看器无法访问这些目录(但访问属于“b”的目录没有问题,只有“b”可以读取它们)。看起来当使用SETUID位运行程序时,无法识别用户“b”属于组的事实。

可以改变吗?

或者是否有另一种设置系统的方法:

1.用户可以访问自己的目录,但不能访问彼此的目录。

2.用户“b”可以访问所有这些目录(不会成为root用户)。

3.程序“/ eizm / pro / aftertime / viewer”可以访问所有这些目录,无论哪个用户调用该程序(不成为root)。 ?

0 个答案:

没有答案