如何授予网络共享用户访问已安装的 NTFS 驱动器的权限?

如何授予网络共享用户访问已安装的 NTFS 驱动器的权限?

我有一台刚刚设置的运行 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 分区都将显示在存储共享下。

相关内容