web-dev-qa-db-ja.com

とらえどころのないアクセス許可の問題を修正する方法-RaspPi、HFS +、SMB、Mac

Transmissionを実行しているRaspberryPiがあります。メインデータパーティションはUSBドライブ上にあります。 Macに接続する必要がある場合に備えて、パーティションはHFS +(hfsplus)としてフォーマットされています。 MacはSamba経由でデータパーティションに接続します。

Transmissionには、ダウンロードの完了時にスクリプトを実行する機能があります。しかし、これはダウンロードがまだシードされている可能性があることを認識していません。代わりに、ユーザー名「myuser」でcronジョブを実行しています。このジョブは、完了したダウンロードをチェックし、それがまだシードされているかどうかを判断し、そうでない場合はダウンロードを処理するスクリプトをトリガーします。

Cronjobは、myuserの下でcrontab -eを使用してセットアップされました。

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

スクリプトは、必要に応じて新しいディレクトリを作成し、ファイルをそのディレクトリに移動します。スクリプトのほとんどは、新しいファイルとディレクトリの名前のフォーマットとトレントデーモンへのアクセスに関係しています。関連する行は次のとおりです。

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

スクリプト全体: http://Pastebin.com/JqqRMRp8

ディレクトリはユーザー/グループ「myuserusers」でスクリプトによって作成され、ファイルは「myusermyuser」で作成されます。 (なぜ?)

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

洞察力をありがとう。

2
rammjet

私は別の方向に進み、問題を解決しました。ブライアムのコメントとアンソンの答えは、私にサンバを考えて研究するようにさせました。その結果、LinuxにはAppleファイル共有)であるAFP(Apple File Protocol)のサービスがあることがわかりました。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"

Netatalkを再起動します

Sudo service netatalk start

Macを共有に接続します。

1
rammjet

ウィキペディア (最後の段落)によると:

HFSは、作成または名前変更されたが、操作で大文字と小文字を区別しないファイルの大文字と小文字を保存します。

実際には、これは多くの場合、名前を保持している間はファイルの名前を変更できないことを意味します。これをSamba経由で実行すると(少なくとも30年前から使用されているため、大文字と小文字が区別されるファイルシステムが下にあると予想されます)、問題を強化することしかできません。

ディスクをMacに直接接続できる必要があるという要件がある場合は、MacにOSXFuseをインストールし、ext3でドライブをフォーマットすることを検討します。

1
Anthon