如何解决难以捉摸的权限问题 - Rasp Pi、HFS+、SMB、Mac

如何解决难以捉摸的权限问题 - Rasp Pi、HFS+、SMB、Mac

我有一个运行 Transmission 的 Raspberry Pi。主数据分区位于 USB 驱动器上。该分区格式为 HFS+ (hfsplus),以防我需要将其插入 Mac。 Mac 通过 Samba 连接到数据分区。

Transmission 具有在下载完成后运行脚本的功能。但这并没有意识到下载可能仍在做种。相反,我有一个 cron 作业在我的用户名“myuser”下运行。此作业会触发一个脚本,该脚本将检查下载是否已完成,确定是否仍在做种,如果不是,则处理下载。

cronjob 是crontab -e在 myuser 下使用设置的:

*/5 * * * * /media/Data/torrents/torrent-clean

如果需要,该脚本将创建一个新目录并将文件移动到该目录。大部分脚本涉及格式化新文件和目录的名称以及访问 torrent 守护程序。相关行是:

mkdir "${target}/${folder_title}"
mv "$the_video" "${target}/${folder_title}/${video_title}"

整个脚本:http://pastebin.com/JqqRMRp8

该目录由脚本使用用户/组“myuser users”创建,文件由“myuser myuser”创建。 (为什么?)

drwxr-xr-x 1 myuser users 3 Nov 28 10:33 some.directory
-rw-rw-r-- 1 myuser myuser 48477071 Nov 28 10:06 some.file.ABC.mp4

当我从 Mac 访问新文件并尝试更改其名称时,奇怪的事情发生了:

  • 如果我从名称中删除大写“C”,我就成功了。
  • 如果我在名称中添加小写“c”,有时它会接受小写“c”,有时会将其更改回大写“C”。 (为什么?)
  • 如果我将大写“ABC”更改为小写“abc”,则会收到权限错误。 (为什么?)

成功更改名称期间,权限会发生更改:

-rw-rw-r-- 1 myuser myuser 48477071 Nov 28 10:06 some.file.ABC.mp4
-rwxrwxr-x 1 myuser myuser 48477071 Nov 28 10:06 some.file.ABC.mp4 (Why?)

更改目录名称时会发生类似但略有不同的情况:

  • 如果我在名称中添加大写“A”,我就成功了。
  • 如果我将大写“A”更改为大写“E”,我就成功了。
  • 如果我将大写“E”更改为小写“e”,它会接受它,但将其更改回大写“E”。
  • 如果我再次将大写“E”更改为小写“e”,则会收到权限错误。 (为什么?)

成功更改名称期间,权限会发生更改:

from: drwxr-xr-x 1 myuser users 3 Nov 28 10:33 some.directory
to: drwxrwsr-x 1 myuser users 3 Nov 28 10:33 some.directoryE  (Why?)

其中一些可能是由 SMB 引起的。我的 smb.conf 的相关部分:

[Pi2_Data]
path = /media/Data
valid users = @users
force group = users
create mask = 0775
force create mode = 0775
security mask = 0775
force security mode = 0775
directory mask = 2775
force directory mode = 2775
directory security mask = 2775
force directory security mode = 2775
browseable = yes
writeable = yes
guest ok = no
read only = no

感谢您的任何见解。

答案1

根据维基百科(最后一段):

HFS保存了创建或重命名的文件的大小写,但在运行时不区分大小写。

实际上,这通常意味着您无法在保留名称的同时重命名文件。通过 Samba 运行它(可能需要一个区分大小写的文件系统,因为这些文件系统已经存在了至少 30 年),只会加剧问题。

如果一项要求是光盘必须可直接插入 Mac,我会考虑在 Mac 上安装 OSXFuse 并使用 ext3 格式化驱动器。

答案2

我朝不同的方向前进并解决了我的问题。 Braiam 的评论和 Anthon 的回答让我开始思考和研究 Samba。这让我发现 Linux 有一个 AFP(Apple 文件协议)服务,即 Apple 文件共享。 Linux 服务是 Netatalk。

它不仅尊重我的文件名更改,还允许我使用 Apple Finder 的其他属性。

我关闭了 Samba 并安装了 Netatalk。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install netatalk

编辑配置文件

sudo service netatalk stop
sudo nano /etc/netatalk/AppleVolumes.default

在文件底部添加您的共享

# By default all users have access to their home directories.
~/  "Home Directory"
/media/Data  "Pi Data"

重新启动网络通话

sudo service netatalk start

将 Mac 连接到共享。

相关内容