Linux 上的 mount_afp,用户权限

Linux 上的 mount_afp,用户权限

我需要使用 afp 协议在 Linux 机器上安装远程文件系统。Linux 机器运行的是旧版 Debian 4。

我下载了 mount_afp 的源代码,编译了它并安装了所有需要的软件包。

然后使用以下命令创建 /etc/fuse:

  mknod /dev/fuse c 10 229

(根据说明这里

我可以通过执行以下命令以 root 身份挂载远程文件系统:

 mount_afp afp://USER:PASSWD@REMOTE_SERVER/FOLDER /mnt/MOUNTPOINT/

但是以普通用户(本地机器)身份运行时相同的命令会失败。

读完这里和那里的内容后,我创建了一个组fuse,并将我的普通用户添加U到该组中fuse

[prompt] groups U
U fuse

然后修改/dev/fuse的组,现在具有以下权限:

 0 crwxrwx--- 1 root fuse 10, 229 Feb  8 15:33 /dev/fuse

但是,如果用户U尝试使用与上述相同的命令挂载远程文件系统,U则会出现以下错误:

Incorrect permissions on /dev/fuse, mode of device is 20770, uid/gid is 0/1007. But your effective uid/gid is 1004/1004

但是 uid 为 1004 的用户U也具有 gid 1007(组融合)。

我可能认为问题与真实/有效/等 ID 有关,但我不知道如何继续,也找不到任何明确的说明。你能帮帮我吗?


还有另一个问题。如果我以 root 身份挂载 /mnt/MOUNTPOINT 并运行ls -l /mnt,我会得到:

  drwxrwxrwx 15 root root 466 Feb  8 16:34 MONTPOINT

如果我ls -l /mnt以普通用户身份运行U,我会得到:

 ? ?????????? ? ? ? ?            ? MOUNTPOINT

事实上当我尝试时cd /mnt/MOUNTPOINT我得到:

 $-> cd /mnt/MOUNTPOINT
-sh: cd: /mnt/MOUNTPOINT: Not a directory

然后我以 root 身份卸载 /mnt/MOUNTPOINT 并ls -l /mnt以普通用户身份再次运行U,我得到:

 0 drwxr-xr-x 2 root root 6 Feb  8 15:32 MOUNTPOINT/

在阅读了 Frank 的回答后,我终止了所有以 user 权限运行的 shell/进程U。仍然U无法挂载远程文件系统,但错误消息已更改。现在是:“登录错误:身份验证失败”。该问题与远程登录/密码无关,因为在root本地计算机上运行时,相同的命令可以完美运行。


由于我无法让 mount_afp 与普通用户一起工作,因此我决定遵循 mgorven 的建议。因此我运行以下命令:

 mount_afp -o allow_other afp://USER:PASSWD@REMOTE_SERVER/FOLDER /mnt/MOUNTPOINT/

 mount_afp -o user=U afp://USER:PASSWD@REMOTE_SERVER/FOLDER /mnt/MOUNTPOINT/

挂载成功,但用户 U 无法访问挂载点。如果Uls -l/mnt

U@LOCAL_HOST [/mnt]
$-> ls -l
ls: cannot access MOUNT_POINT: Permission denied
total 0
? ?????????? ? ? ? ?            ? MOUNT_POINT

让这个实用程序运行起来真的很难吗?

答案1

我的单用户设置成功了

  • 创建群组fuse
  • 加入U保险丝组
  • 安装
    mount_afp -o user=U,group=fuse afp://USER:PASSWD@REMOTE_SERVER/FOLDER /mnt/MOUNTPOINT
    • 使用 uid 和 guid 对我来说不起作用
      Unknown user 1000
      Unknown group 108
      这些是从 id U 检索到的正确 uid

然后将挂载目录的权限设置为 777,最后我就可以浏览和播放了。

这并不能解决 OP 的问题,但希望对某些人来说足以确认。

答案2

您可能在将自己添加到群组后没有注销并重新登录fuse。群组信息已缓存,因此您需要在更改群组成员身份后执行此操作。groups执行此操作后运行以验证是否fuse已列出。

默认情况下,FUSE 挂载仅允许挂载它们的用户访问。如果您想允许其他用户访问它们,则需要添加allow_other挂载选项,因此请尝试以下操作:

mount_afp -o allow_other

如果这不起作用,您可以将坐骑的所有权设置为您自己的用户:

mount_afp -o user=1004,group=1004

答案3

我遇到了同样的问题。将用户名添加到 fuse 组后,我注销并重新登录(通过 ssh)。但我仍然遇到同样的问题。然后我重新启动了盒子。在创建用户可以访问的挂载点后,它工作正常。所以对我来说,通过 ssh 注销然后重新登录并没有强制重新加载组,我猜你必须重新启动或可能从所有其他 shell 中注销(我不确定我是否登录了其他 shell)。

相关内容