我正在我的 Linux 机器(Ubuntu 20.04)上安装了一组 NAS 驱动器,并且大多数驱动器似乎都运行正常:
sudo mount -t cifs //mynas/mydrive /mnt/mydrive -o \
credentials=/etc/samba/nas.creds,file_mode=0600,dir_mode=0700,uid=myuid,gid=mygid
也就是说,驱动器已安装,它们具有正确的 umask,并且可以由我的用户写入。
除了其中一个驱动器上的子文件夹。它以完全相同的方式安装,使用完全相同的凭据,并且顶级目录是可写的。但是,我无法写入任何子目录!
顶级目录可写:
$ ls -ld /mnt/mydrive
drwx------ 2 myuid mygid 0 May 17 18:22 /mnt/mydrive
$ touch /mnt/mydrive/aaa
$ ls -l /mnt/mydrive/aaa
-rw------- 1 myuid mygid 0 May 17 18:39 /mnt/mydrive/aaa
子目录不是
$ ls -ld /mnt/mydrive/new
drwx------ 2 myuid mygid 0 Mar 10 2019 /mnt/mydrive/new
$ touch /mnt/mydrive/new/aaa
touch: cannot touch '/mnt/mydrive/new/aaa': Permission denied
NAS 是 QNAP(Linux/Samba for OS 的衍生产品),所有共享都具有相同的凭据集和 R/W 访问权限。这些文件夹最初是通过 Windows 创建的(以防万一),但它适用于所有驱动器上的所有相关文件夹 - 但只有这个驱动器显示此行为。
我是不是忘记了什么?我是否需要考虑其他 ACL 机制?任何帮助都将不胜感激!
答案1
事实证明这是一个非常愚蠢的错误:不久前在 NAS 上创建了 2 个非常相似的用户,而 Linux 使用的凭据属于与拥有该目录的用户不同的用户(这很容易被忽视)。顶级目录是全球可写的,这解释了部分成功。