添加组后,在18.04中注销+登录还不够吗?


18

在具有默认桌面的ubuntu 18.04中,注销/登录的行为已更改:

以前在Ubuntu系统上,当我发现需要将我的用户ID添加到某个组时,足以

sudo adduser ludwig docker # adds me to group docker

然后我必须注销并再次登录才能使组更改生效。

我注意到在Ubuntu 18.04中,添加组并注销并重新登录后,有效组的列表仍保持不变。

解决方法是重新引导系统,这很不方便(需要在grub中进行正确的选择并重新输入磁盘加密密码)。

  1. 为什么现在这种行为?
  2. 除了重启,我还能做其他事情吗?

(我知道我可以ssh进入localhost并仅在ssh会话中获取正确的组。这也很不方便。)


sudo usermod -a -G group user在18.04中进行了测试,然后注销并重新登录,它可以正常工作。
Terrance

还可以使用默认桌面吗?
路德维希·舒尔茨

您是说像GNOME,Xubuntu,Kubuntu等之间的区别吗?如果您的意思是GNOME是默认设置,那么不,我不运行GNOME。但是,无论桌面环境如何,该命令都应该相同,因为这是核心密码/组内容,在所有DE中都应相同。
Terrance

好的,我刚刚安装了GNOME进行测试,并且sudo usermod -a -G groupname username在那里也可以正常工作。注销并重新登录,我的零钱在那里。
Terrance

我知道了。@Terrance您未使用默认桌面。默认桌面名为“ ubuntu”。我知道它基于gnome,但我知道“ gnome”是另一个桌面。“ ubuntu”被更改为类似统一的形式。
路德维希·舒尔茨

Answers:


8

该命令loginctl terminate-user <user>对我有用。(<user>用您的用户名替换)登录时可能不应该运行此命令,因为它将杀死所有进程。


确认可以在Ubuntu 18.04上使用。比ps&grep容易得多!
AqD

同意,这比我自己的解决方案要短。它还对ubuntu 19.04有所帮助。支持并接受,而不是我自己的解决方案。
路德维希·舒尔兹

7

在ubuntu 18.04中“注销”默认桌面时,某些用户进程不会立即终止,而是会徘徊。这些是(由另一个用户观察到的):

$ ps axu | grep ^ludwig
ludwig    26508  0.3  0.2  77052  8308 ?        Ss   23:32   0:00 /lib/systemd/systemd --user
ludwig    26509  0.0  0.0 261776  2968 ?        S    23:32   0:00 (sd-pam)
ludwig    26691  0.2  0.3 381288 12204 ?        S<l  23:32   0:00 /usr/bin/pulseaudio --start --log-target=syslog
ludwig    27352  0.0  0.0  49796  3756 ?        Ss   23:33   0:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only

在这些进程自愿退出之前重新登录时,不会创建新的登录会话,但是会重用旧的会话。这就是为什么新的组成员身份不可见的原因,它仍然是相同的旧登录会话。

一种避免重新引导的解决方法是注销后等待〜20秒,然后再重新登录。注销后10到20秒之间,进程退出。

编辑:正如下面的评论中所报告的,有时缠结的过程甚至在等待时也不会退出,并且在重新登录后,组成员身份尚未更新。我发现在这种情况下,它有助于

ps axu | grep ^ludwig | awk '{print $2}' | xargs kill -9

ludwig用您的用户名替换。这会杀死属于您的所有进程。仅在确定已保存所有打开的程序中的所有数据时使用。


这是我的问题。但是在注销并等待之后,这些过程并没有消失。我不得不杀死“ systemd --user”进程,并运行“ sudo systemctl daemon-reexec”。并杀死所有dbus进程,导致重新启动systemd拧紧dbus。也需要重新启动网络管理器。“ systemctl restart network-manager”也许重新启动所有依赖dbus / systemd的内容
niknah,

@niknah哦,这很糟糕。听起来像重新启动就更容易了。感谢您让所有人都知道这可能会更加困难。
路德维希·舒尔茨

@niknah我今天遇到了与您相同的问题。注销并等待之后,某些进程将无法退出。我找到了解决方法,并将更新此答案。
路德维希·舒尔茨

2

当前外壳中的一种解决方法是运行“ su”以拥有新组,而不必重启。

如我所说,此技巧必须应用于每个外壳。那不是全球性的。


将用户添加到adbusers aka后,这可用于修复adb无法识别设备sudo usermod -a -G adbusers $USER。然后您可以执行su $USERsudo adb kill-server && adb start-server解决问题
xdevs23
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.