操作系统之间的权限不一致

操作系统之间的权限不一致

尝试设置 Samba 共享,其中开发组的成员可以完全访问共享中的文件(无论所有者是谁):

[global]
   workgroup = PREMPROVSOL
   server string = %h server (Samba, Ubuntu)
   interfaces = 127.0.0.0/8 10.0.10.0/24
   bind interfaces only = yes
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   unix charset = UTF-8
   dos charset = CP932

[Development]
    path= /server/Development/
    writeable = yes
    create mask = 0777
    force create mode = 0777
    directory mask = 0777
    force directory mode = 0777
    security mask = 0777
    force security mode = 0777
    guest ok = no
    valid users = @development

有趣的是,访问共享的 Windows 10 计算机比使用相同凭据登录的 Linux Mint 计算机拥有更多权限。例如:

Windows 10:在共享中
创建文件夹,然后在里面创建文件夹。没有问题。FolderAFolderA1FolderA

Linux Mint:在共享中
创建文件夹(文件夹上显示锁定)。无法在其中创建任何内容FolderAFolderA

fstabLinux Mint 框中的条目:

//10.0.10.240/Development /mnt/Development cifs nobrl,_netdev,vers=1.0,noserverino,iocharset=utf8,credentials=/home/spsimmons/.smbcred  0       0

是不是我遗漏了什么设置?谢谢!

编辑

从 Win10 机器,我创建FolderA它并具有以下权限:

drwxrwsr-x+  3 1001 1004    0 Jul 10 12:39 FolderA

FolderA1权限内部FolderA

drwxrwsr-x+  2 1001 1004    0 Jul 10 12:39 FolderA1

1004是该组的 GID。

从 Win10 计算机创建了一个 Linux 计算机无法创建的文件夹。
从 Linux 计算机创建了一个 Win10 计算机可以创建的文件夹。
我没有使用 fuse,但我确实将file_mode=0777,dir_mode=0777参数添加到了我的安装行。仍然没有成功。

答案1

永久挂载 Windows 共享如果你还没有看过,这里有一些很棒的信息和概述。很简单,我相信你需要uid=/etc/fstab挂载点条目中配置选项,2777 umask对于目录。


如果您不向我们展示目录的权限(即:FolderAFolderA1),我们将很难确切知道,但很可能是umask这样设置的,当在 Linux 中创建文件时,它们会被创建并关联到用户的组和用户的用户。

例如,如果我们有一个共享目录/srv/www/www-data:www-data并且所有文件都归我所有g+rw,而我属于该www-data组,那么我应该能够读取和写入所有这些文件。当我以我的用户身份创建文件时,就会出现问题。当发生这种情况时,该文件将被创建为该组的一部分user:user,并且www-data不属于该user组(也不应该属于该组)。

因此,创建文件时,您需要确保它们被创建为组并绑定到组developer。主机系统是 Windows,并且使用不同的文件系统类型,因此您必须考虑有一个转换层 (FUSE、SAMBA、CIFS) 来调整文件和权限以与 Linux 配合使用。

通常,您可以通过在 Linux 系统中设置条目/etc/fstab并添加uid=DEVELOPER_ID,gid=DEVELOPER_ID,umask=0777配置选项来解决这些问题。与umask许多翻译的文件系统不同,我们设置了 来file_mode确定文件的权限。目录将需要调整特许02。这将强制新文件和目录的组所有权(即:2777)。例如:

uid=userID,gid=userID,file_mode=2777

你也可以在您的smb.conf对于目录特定的配置值,但您应该在条目中指定uidgid作为您的用户fstab以防止其他问题。

通过前面的示例,我们可以使用以下命令/srv/www确保新创建的文件归以下所有www-datag+rwx

sudo chown www-data:www-data /srv/www
sudo chmod g+rw /srv/www
sudo chattr +S /srv/www

任何新创建的文件/srv/www都应归该www-data组所有并具有g+rw权限。

相关内容