我通过 SSH 连接到 debian 服务器,为了避免同时建立多个连接,我使用 tmux。
我更改了目录的权限(此处为/opt/syncserver
),并将所有者设置为组和用户www-data
。该目录的权限相当于770
in chmod
,表示rwxrwx---
(对所有者和组进行读/写/执行)。
然后,我将主要用户(我们将user1
在此处调用)添加到该组中www-data
,因为他以前不在其中。然后我尝试 cd 进入新修改的目录,但没有成功(Permission denied
错误)。
在同一个 tmux 会话中创建新的 shell 也不能解决问题(请参阅此问题的可能重复部分)。
我尝试启动另一个 SSH 会话,仍然使用同一用户,并且进入目录没有问题。
在 tmux 会话中创建的新 shell 如何不考虑权限的修改?有没有办法解决这个问题,或者我完全错了,一开始就做错了什么?
创建新的 tmux 会话(另一个会话仍连接)也无法解决问题。我猜完全重启 tmux 应该可以解决问题,但我想避免这种情况并知道为什么会发生这种情况。
答案1
在 tmux 会话中创建的新 shell 如何不考虑权限的修改?
与进程关联的 uid、gid 和补充组仅在登录时重置。在 tmux 会话中创建的新 shell 不是新登录,它们只是 tmux 进程的新子进程。
要更新您的群组成员资格,您有重新登录,或使用一组非常小的命令(newgrp
、su
、sudo
)中的一个,这些命令将使用重新初始化的组启动子 shell(但这些命令不会帮助您重新初始化已经运行的进程(如 tmux)的凭据)。