【问题标题】:Need to reboot Xubuntu to make chgrp work?需要重启 Xubuntu 才能使 chgrp 工作?
【发布时间】:2014-05-06 11:33:41
【问题描述】:

我最近注意到 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...)

【问题讨论】:

    标签: linux chgrp


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      • 2015-09-06
      • 2018-03-25
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多