Dea*_*utt 6 bash shell usergroups logout docker
我搜索过,在其他任何地方都找不到这个答案。对于没有脚本经验的人来说,如果这是一个菜鸟问题,我深表歉意。
我正在尝试创建一个 bash 脚本来设置一个服务器,其中包含应用程序所需的所有软件。简而言之,在安装 docker 时,我需要将当前用户添加到 docker 组“usermod -aG docker”,然后从那里拉一些容器。
我遇到的问题是,因为我已将该用户添加到一个组中,所以他们需要先注销并重新登录,然后才能获得在脚本中稍后执行任何操作的任何权限。这当然会破坏脚本并结束 shell 会话。有没有办法在同一个脚本中注销并重新登录,或者事情需要变得更复杂一些?
感谢任何人对此的帮助。希望这对某人来说是一个简单的答案。
小智 10
使用newgrp命令登录到新组。
newgrp 的工作方式是更改其调用者的组标识,类似于登录。同一个人保持登录状态,当前目录不变,但对文件的访问权限的计算是针对新的组 ID 执行的。
因此,对于您的情况,您将使用:
# usermod -aG docker user
# newgrp docker
Run Code Online (Sandbox Code Playgroud)
检查您的新主要组,它应该是 docker:
$ id -g
989
Run Code Online (Sandbox Code Playgroud)
从 /etc/group 确认
$ cat /etc/group | grep `id -g`
docker:x:989:jmutai
Run Code Online (Sandbox Code Playgroud)
这应该可以解决问题。