![操作系统之间的权限不一致](https://linux22.com/image/914050/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E4%B9%8B%E9%97%B4%E7%9A%84%E6%9D%83%E9%99%90%E4%B8%8D%E4%B8%80%E8%87%B4.png)
尝试设置 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:在共享中
创建文件夹,然后在里面创建文件夹。没有问题。FolderA
FolderA1
FolderA
Linux Mint:在共享中
创建文件夹(文件夹上显示锁定)。无法在其中创建任何内容FolderA
FolderA
fstab
Linux 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
对于目录。
如果您不向我们展示目录的权限(即:FolderA
,FolderA1
),我们将很难确切知道,但很可能是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
确定文件的权限。目录将需要调整特许从0
到2
。这将强制新文件和目录的组所有权(即:2777
)。例如:
uid=userID,gid=userID,file_mode=2777
你也可以在您的smb.conf
对于目录特定的配置值,但您应该在条目中指定uid
和gid
作为您的用户fstab
以防止其他问题。
通过前面的示例,我们可以使用以下命令/srv/www
确保新创建的文件归以下所有www-data
:g+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
权限。