我在 Windows 10 上工作,安装了 MSYS2 和 Cygwin。
大多数情况下,我使用 MSYS2(或者在本例中是 MINGW64 shell),并且通常使用在 MINGW64 下运行的任何程序访问网络共享上的文件都不会遇到问题。
当我检查 MINGW64 的权限时,我得到例如:
user@PC MINGW64 //MYSERVER/myshare/test
$ ls -la
total 38M
drwxr-xr-x 1 user None 0 Dec 3 15:28 ./
drwxr-xr-x 1 user None 0 Nov 28 08:36 ../
-rw-r--r-- 1 user None 7.4M Dec 3 13:20 test_one.png
....
但是,如果我从 Cygwin shell 尝试执行相同操作,则会得到以下结果:
user@PC //MYSERVER/myshare/test
$ ls -la
total 38900
drwxrwx---+ 1 Unknown+User Unix_Group+65534 0 Dec 3 15:28 .
drwxrwx---+ 1 Unknown+User Unix_Group+65534 0 Nov 28 08:36 ..
-rwxrwx---+ 1 Unknown+User Unix_Group+65534 7666914 Dec 3 13:20 test_one.png
...
显然,Cygwin 并没有将user
视为该文件的所有者,而是将其视为Unknown+User
所有者。
相应地,如果我想以 的方式打开此文件,feh
我会得到:
feh WARNING: test_one.png - No read access
我能否以某种方式设置 Cygwin,以便它看到与 MINGW64 看到的 Windows 网络共享上文件的相同所有权/权限?
答案1
好的,解决了这个问题,感谢这篇博文:https://salonen.wordpress.com/2011/04/22/fixing-file-permissions-on-network-shares-in-cygwin/
基本上,我/etc/fstab
在 Cygwin 中就是这样的:
# /etc/fstab
#
# This file is read once by the first process in a Cygwin process tree.
# To pick up changes, restart all Cygwin processes. For a description
# see https://cygwin.com/cygwin-ug-net/using.html#mount-table
# This is default anyway:
none /cygdrive cygdrive binary,posix=0,user 0 0
我只是,noacl
在最后一行(也是唯一未注释的行)中添加了以下内容:
none /cygdrive cygdrive binary,posix=0,user,noacl 0 0
...然后关闭 Cygwin 终端,再次打开它cd
-//MYSERVER/myshare/test
现在,所有文件似乎都归用户+组所有user None
,就像在 MSYS2 情况下一样,并且它们可以正常打开。
我在 Cygwin 中发现了另一个有用的命令(通过https://cygwin.cygwin.narkive.com/lZOZG8Ut/network-drive-file-permissions-permission-denied)是这个(这里检查目录//MYSERVER/myshare/test
):
$ /usr/lib/csih/getVolInfo .
Device Type : 7
Characteristics : 10
Volume Name : <myshare>
Serial Number : 193090813
Max Filenamelength : 255
Filesystemname : <NTFS>
Flags : 5002f
FILE_CASE_SENSITIVE_SEARCH : TRUE
FILE_CASE_PRESERVED_NAMES : TRUE
FILE_UNICODE_ON_DISK : TRUE
FILE_PERSISTENT_ACLS : TRUE
FILE_FILE_COMPRESSION : FALSE
FILE_VOLUME_QUOTAS : TRUE
FILE_SUPPORTS_SPARSE_FILES : FALSE
FILE_SUPPORTS_REPARSE_POINTS: FALSE
FILE_SUPPORTS_REMOTE_STORAGE: FALSE
FILE_VOLUME_IS_COMPRESSED : FALSE
FILE_SUPPORTS_OBJECT_IDS : TRUE
FILE_SUPPORTS_ENCRYPTION : FALSE
FILE_NAMED_STREAMS : TRUE
FILE_READ_ONLY_VOLUME : FALSE
FILE_SEQUENTIAL_WRITE_ONCE : FALSE
FILE_SUPPORTS_TRANSACTIONS : FALSE