0

我最近注意到 Xubuntu 12.04 和 14.04 中的一个相当奇怪且对我来说出乎意料的行为。

我正在做以下事情:

测试我的用户是否在组users中,使用

groups $USER

默认情况下并非如此。所以我将我的用户添加到这个组:

sudo usermod -a -G users $USER

我可以检查文件/etc/group并将看到我的用户添加到条目中。

然后我想让组用户访问一些文件,在我的示例中是 www 和 cgi-bin 目录:

sudo chgrp users /var/www /usr/lib/cgi-bin

我还希望我的小组可以写入目录:

sudo chmod g+w /var/www /usr/lib/cgi-bin

我会假设,我现在可以在这些目录中创建一个文件,但我不能。既不是通过命令行,也不是来自 Xubuntu 的标准文件浏览器。

我在某处读到,我需要从终端注销才能使其工作,所以我关闭并重新打开命令行终端,但它现在仍在工作。

但是:如果我重新启动整个系统,一切都会正常运行......

严重地???为什么会这样,它是错误还是功能,是否有更好的方法然后重新启动完整的操作系统?

(我认为 Linux 的优势在于你不需要像其他“流行”操作系统那样一直重启)

(注意:我还没有在其他系统上测试过这个,例如 Debian...)

4

1 回答 1

1

组成员身份从一个进程继承到另一个进程,就像 unixoid 环境中的许多其他事物一样。这意味着正在运行的 shell不会受到帐户配置中的此类更改的影响。同样,仅打开一个新的终端或 shell 也不会显示更改,因为它是从已经运行的进程中产生的,最终是从登录后立即启动的初始进程中产生的。

您必须重新运行登录过程。通过重新启动图形环境,或在虚拟终端上工作时执行注销/登录序列。显然,重新启动将导致新的登录过程。

唯一直接的替代方法是显式生成一个新的登录 shell:bash -l例如,它可以解决问题:它重新执行登录时运行的所有内容。但请注意,这只会影响启动 shell 和从中产生的进程。它不会影响其他已经运行的进程。所以你有一个有点复杂的环境......

于 2014-05-06T11:45:39.273 回答