GNU 屏幕在 Cygwin 中不起作用——目录必须具有模式 700

GNU 屏幕在 Cygwin 中不起作用——目录必须具有模式 700

我在 Windows 10 上安装了 Cygwin,但screen失败了

$ screen
Directory '/tmp/uscreens' must have mode 777.

无论出于何种原因我都无法更改权限

$ chmod -R 777 /tmp
$ ls -hal /tmp/uscreens
total 384K
drwxr-xr-x 1 username Domain Users 0 May 22 17:37 .
drwxr-xr-x 1 username Domain Users 0 Jul 17 15:54 ..
drwxr-xr-x 1 username Domain Users 0 May 22 17:37 S-username

所以我创建了一个我可以完全控制的新目录,但再次遇到权限问题:

$ SCREENDIR=/cygdrive/e/screens ./screen.exe
Directory /cygdrive/e/screens must have mode 700.
$ ls -hal /cygdrive/e/screens
total 8.0K
drwxr-xr-x 1 username Domain Users 0 Jul 17 16:18 .
drwxr-xr-x 1 username Domain Users 0 Jul 17 16:23 ..

我还尝试删除 Windows 资源管理器世界中的 r-xr-x 权限(现在它说实际上只有用户才具有访问权限),但在 Cygwin 看来,它仍然是相同的,我仍然无法使用屏幕。

答案1

我今天遇到了同样的问题,我相信原因是 Windows 驱动器在您的系统上的安装方式。

我的配置:

$ cat /etc/fstab
none                          /cygdrive             cygdrive  binary,posix=0,user,noacl 0 0

这是noacl导致问题的部分(我们使用它的原因超出了本响应的范围)。如果我运行screen -R启动(或重新连接)到屏幕会话,我会收到错误消息:

$ screen -R
Directory /tmp/uscreens/S-myuser must have mode 700.
$ ls -ld /tmp/uscreens/S-myuser
drwxr-xr-x 1 myuser Domain Users 0 May 13 06:57 /tmp/uscreens/S-myuser/
$ chmod 700  /tmp/uscreens/S-myuser
$ ls -ld /tmp/uscreens/S-myuser
drwxr-xr-x 1 myuser Domain Users 0 May 13 06:57 /tmp/uscreens/S-myuser/
$ cd /tmp
$ pwd -P
/cygdrive/c/tmp

正如您所看到的,我们有/tmp一个符号链接引用C:/tmp(同样,出于本响应范围之外的原因)。

解决方案是将SCREENDIR环境变量设置为引用不在/cygdrive.对于我的设置,这是我的主目录:

$ SCREENDIR=~/.screens screen -R

这启动了screen会话,没有任何问题。

确认该文件夹不在以下位置/cygdrive

$ cd ~/.screens && pwd -P
/home/myuser/.screens
$ ls -ld ~/.screens
drwx------+ 1 myuser Domain Users 0 May 13 07:14 /home/myuser/.screens/

正如您所看到的,根据 的要求,该文件夹的模式为 700,screen并且位于/home而不是在 下/cygdrive

相关内容