我有一个自己用 Linux Debian 制作的 NAS,并通过 Samba 共享此路径:
drwxrwxrwx 5 nobody nogroup 4096 Jan 22 12:57 shared
我的目标是有这样的布局:
└── shared
├── private
└── public
└── upload
└── ...other stuff...
我想要这些条件:
- 我希望“共享”和所有子目录成为本地 LAN 上共享的 Samba 资源,具有匿名访问且没有任何限制(任何设备都不能从本地 LAN 外部使用 Samba 进行访问)
- 我希望“public”成为属于我的“的所有用户的 sftp chroot 监狱”sftp用户' 组,它们本身都没有 /home 目录,但从 /public 开始。我希望该目录及其子目录只能由用户通过 sftp 读取,但保持前面描述的 Samba 免费访问
- 我希望“上传”成为“公共”中的唯一例外,其中 sftp 用户可以编写和上传内容,并且偶尔删除他们拥有的文件(因为他们上传了它们)。我还想通过 Samba 免费访问此“上传”目录
目前,我创建了这些目录:
drwxr-xr-x 2 nobody nogroup 4096 Jan 14 12:35 private
drwxr-xr-x 3 nobody nogroup 4096 Jan 16 16:44 public
正如您所看到的,我创建了用户“nobody”和组“nogroup”的所有“共享”子目录属性,因为我知道这是 Samba 的默认设置,但这不是我的要求。
我的 Samba 配置是:
[global]
log file = /var/log/samba/log.%m
logging = file
map to guest = Bad User
max log size = 1000
obey pam restrictions = Yes
pam password change = Yes
panic action = /usr/share/samba/panic-action %d
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
passwd program = /usr/bin/passwd %u
server role = standalone server
unix password sync = Yes
usershare allow guests = Yes
workgroup = ARCADIA
idmap config * : backend = tdb
hosts allow = 192.168.0.
[shared]
create mask = 0777
directory mask = 0777
guest ok = Yes
path = /mnt/nas/shared
read only = No
[printers]
browseable = No
comment = All Printers
create mask = 0700
path = /var/spool/samba
printable = Yes
现在,我正在笔记本电脑上使用以下行安装 Samba 资源:
//192.168.0.249/shared /mnt/corelli cifs rw,guest,uid=1000,gid=1000,noauto,x-systemd.automount,_netdev,user 0 0
我还没有开始使用 SFTP 服务器,但我在 Samba 权限方面遇到了困难,因为它不允许写入“公共”和“私有”。另外,我不知道应该将哪些权限和默认所有者组应用于文件/目录,以便 sftp 用户在“公共”下受到限制,而 Samba 用户在本地 LAN 的“共享”下拥有不受限制的访问权限。