我有一台刚刚设置的运行 Ubuntu 22.04.2 的机器,文件系统中安装了 3 个 NTFS 硬盘。我在机器上运行 Plex 服务器,因此已经遇到了 NTFS 驱动器的问题,这显然与权限系统有关。我能够成功授予 Plex 访问我的驱动器的唯一方法是将 plex 用户添加到 plugdev(这似乎不可取),但现在我在网络共享方面遇到了同样的问题。理想情况下,我希望所有驱动器都可以在网络上使用,但由于将它们添加为网络共享似乎不起作用,它们位于父文件夹下,我已将其转换为网络共享。我可以从我的 Windows PC 访问父文件夹,但没有适当的权限访问任何已安装的驱动器。我四处寻找解决方案,但解决方案并不多,而且我找不到任何可行的解决方案,因此从 Plex 问题中吸取教训,我尝试创建一个 samba 用户,将他们添加到 plugdev,然后使用他们的凭据登录 Windows 机器,但也失败了。
我对 Linux 还很陌生,我选择坚持使用 NTFS 驱动器似乎总是困扰着我,但我有 10TB 的东西,我不想在重新格式化后再移回它们,所以我希望有办法解决这些权限问题。
编辑:testparm -s
给出:
Loaded services file OK.
Weak crypto is allowed
Server role: ROLE_STANDALONE
# Global parameters
[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
server string = %h server (Samba, Ubuntu)
unix password sync = Yes
usershare allow guests = Yes
idmap config * : backend = tdb
[printers]
browseable = No
comment = All Printers
create mask = 0700
path = /var/spool/samba
printable = Yes
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
net usershare info --long
给出:
path=/media/maddie
comment=
usershare_acl=Everyone:F,
guest_ok=y
[test]
path=/media/maddie
comment=
usershare_acl=Everyone:F,
guest_ok=n
info_fn: file /var/lib/samba/usershares/media tres is not a well formed usershare file.
info_fn: Error was Path is not a directory.
info_fn: file /var/lib/samba/usershares/media uno is not a well formed usershare file.
info_fn: Error was Path is not a directory.
[Cathleen]
path=/media/maddie
comment=
usershare_acl=Everyone:F,
guest_ok=y
info_fn: file /var/lib/samba/usershares/media dos is not a well formed usershare file.
info_fn: Error was Path is not a directory.
另外,如果它有助于弄清楚我的磁盘到底是什么情况,那么/etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sdb4 during installation
UUID=bf960de8-2057-4851-bc1e-0f9d5909495e / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sdb5 during installation
#UUID=EC82-3A04 /boot/efi vfat umask=0077 0 1
# /media/media-dos was on /dev/sda2 during installation
# /media/media-tres was on /dev/sdb2 during installation
# /media/media-uno was on /dev/sdd2 during installation
UUID=4E3ECAE03ECABFE7 /media/maddie/media-dos ntfs defaults,umask=007,gid=46,nosuid,nodev,nofail 0 1
UUID=EA5C0C235C0BE961 /media/maddie/media-tres ntfs defaults,umask=007,gid=46,nosuid,nodev,nofail 0 1
UUID=98082E22082E003C /media/maddie/media-uno ntfs defaults,umask=007,gid=46,nosuid,nodev,nofail 0 1
答案1
我认为你不会喜欢我的答案,因为我的建议是完全不同的方向。
[1] 停止使用文件管理器创建 samba 共享。
我会转到 /var/lib/samba/usershares 并删除那里的所有文件。每个文件都是一个共享定义,虽然这会删除所有 samba 共享,但不会影响系统上的其他任何内容。
[2] 然后,我将为这些 NTFS 分区创建一个父文件夹,该文件夹不是/媒体/maddie。
该文件夹具有特殊权限,仅允许 maddie 访问其下的内容。
相反,我会创建类似 /media/Storage 的内容:
sudo mkdir /media/Storage
然后我(作为 maddie)将接管该文件夹:
sudo chown maddie /media/Storage
[2a] 漏了一个步骤。为每个 ntfs 分区创建挂载点。例如:
sudo mkdir /media/Storage/media-uno
[3] 然后在 fstab 中,我将这些 NTFS 分区挂载在 /media/Storage 下,并以 maddie 作为所有者。
例如:
卸载 media-uno:
sudo umount /media/maddie/media-uno
更改您的 fstab 声明:
UUID=98082E22082E003C /media/maddie/media-uno ntfs defaults,umask=007,gid=46,nosuid,nodev,nofail 0 1
对此:
UUID=98082E22082E003C /media/Storage/media-uno ntfs defaults,umask=007,uid=maddie,gid=46,nofail 0 0
然后使用以下命令重新安装它:
sudo mount -a
在进入下一步之前,请验证您是否可以在本地访问该分区。
[4] 直接在 /etc/samba/smb.conf 中创建 /media/Storage 文件夹的 samba 共享
我建议首先创建一个访客可访问的共享 - 如果需要,我们可以让它更复杂。您可以通过在 smb.conf 文件末尾添加如下所示的共享定义来实现:
[Storage]
path = /media/Storage
read only = No
guest ok = Yes
force user = maddie
保存文件然后重新启动 samba:
sudo service smbd restart
然后从 Windows 计算机访问存储共享。最终,当您修改剩余分区的 fstab 时,所有这些非系统 ntfs 分区都将显示在存储共享下。