web-dev-qa-db-ja.com

Mac OS X-NTFSUSBドライブへのファイル権限に関する問題

NTFS外付けUSBドライブ内でファイルの読み取り/書き込みができます。

NTFS外付けドライブに保存されているAVI/MKVのような大きなファイルに問題があります。これらのファイルはFinderにグレー表示され、常にFinderを使用しているときに、ビデオプレーヤーを[プログラムから開く]で奇妙なエラーを受け取ります。

項目「file.avi」はMac OS Xで使用されており、開くことができません。

回避策を見つけました。file.aviをビデオプレーヤーにドラッグアンドドロップすると、すべて正常に機能します。

しかし、実際には、なぜこの問題が発生するのか理解できません。

NTFSカスタムドライバ(MacFUSEまたはNTFS-3gなど)がインストールされていないことを考慮してください。 NTFS USBドライブをR/Wでマウントするには、/etc/fstabのみを変更し、次の行を追加しました。

LABEL=WD320 none ntfs rw
9
freedev

非常に同じ主題を扱っている スレッド を見つけました。ファイルはグレー表示され、同じエラーメッセージで開くことはできません。

これを(うまくいけば)解決する手順は次のとおりです。

  • ターミナルを開いて実行します

    xcode-select --install
    
  • 上記はXCodeコマンドラインツールをインストールします

  • 次に、実行します

    GetFileInfo /Volumes/WD320/yourfile.avi
    
  • ファイルの種類、作成者、およびその他のファイル属性に関する情報が必要です

  • 次に、これらの属性を変更して、

    SetFile -c "" -t "" /Volumes/WD320/yourfile.avi
    
  • これでファイルが再生されます

私は明らかにそれを試すことができなかった(私は通常そうする)が、多分それは役立つ。

24
slhck

アイテム「file.avi」はMacOS Xで使用されており、開くことができません。

これは、アイテムのファイルタイプが'brok'で、作成者コードが'MACS'に設定されている(クリアされていない)ことを意味します。

enter image description here

Finderを使用してファイルを複製する場合、Finderが最初に複製ファイルを作成するときに、特別なファイルタイプ'brok'と作成者コード'MACS'(Finder自体の作成者コード)を設定します。 、ファイルが使用中であることを示します。 Finderが複製ファイルの作成を完了すると、ファイルの種類と作成者コードが元のファイルのものにリセットされます。

通常、Finderがクラッシュした場合、またはファイルのコピー中に何らかの理由で中断された場合にのみ、'brok'ファイルタイプがリセットされない状況が発生します。そうでない場合は、組み込みのNTFSドライバーのrwサポートのバグである可能性があります。

Slhckが述べたように、問題のファイルのファイルタイプと作成者コードをクリアすることで、Finderによってこの反応をクリアできるはずです。

7
NSGod

この問題に対する私の反応は、他のいくつかの投稿から得られた回答(多くの感謝)と私自身の経験を組み合わせた結果です。

背景:NTFSファイルシステムの外付けハードドライブがあります。たまに差し込みたいです。以前は、ボリュームは「読み取り専用」でマウントされていました。それを修正すると、ボリューム上のファイルは使用できない状態になりました。ボリュームを正しくマウントしてファイルにアクセスできるようにするには、次のことを行う必要がありました。

参考:私はkornshellユーザーです。これらのコマンドを好みのシェルに調整します。

$ Sudo ksh
<password>

$ mv /sbin/mount_ntfs /sbin/mount_ntfs.orig

$ vi /sbin/mount_ntfs

次に、以下のコンテンツを貼り付けます。

#!/bin/ksh

# --- direct all script stdout to a temp file for examination
exec > /tmp/ntfs

# --- connect all stderr to stdout
exec 2>&1

# --- get the last argument on the command line - this is the mount point
eval echo \$$# |
read MOUNT_PT
echo "\${MOUNT_PT} = \"${MOUNT_PT}\""
echo

echo "Mounting $@"

# --- call the original ntfs mounter with the arguments handed in
/sbin/mount_ntfs.orig -o rw "$@"

echo "Mounted  $@"

# --- show the result of the mounting operation
mount

# --- fix files at the newly mounted MOUNT_PT that are in the 'brok' state
find "${MOUNT_PT}" -type f |
while read FILE; do

    # ---
    # --- use 'SetFile' to modify the file status
    # ---
    # --- this command line assumes the 'SetFile' command has been installed
    # --- and is available in your PATH
    # ---
    SetFile -c "" -t "" "${FILE}"

done

次に:

$ chmod a+x /sbin/mount_ntfs

$ chown root:wheel /sbin/mount_ntfs

これで、ディスクを接続するたびに、ディスクが「読み取り/書き込み」でマウントされ、ディスク上のファイルの「状態」がリセットされます。このスクリプトは私にとってはうまくいきます。あなたのマイレージは異なる場合があります。

楽しい -

2
Jeffardo

これに感謝します-OSX10.8.4マシンで実行されず(エラーが発生し)、少し遅いため、上記のスクリプトを改善しました。読み取り専用ディスクがマウントされている場合にのみ確認する必要があります...JCV CHANGEDでマークされた変更:

#!/bin/ksh

# --- direct all script stdout to a temp file for examination
exec > /tmp/ntfs

# --- connect all stderr to stdout
exec 2>&1

# --- get the last argument on the command line - this is the mount point
eval MOUNT_PT=\${$#}
# -- JCV CHANGED: corrected eval expression

echo "\${MOUNT_PT} = \"${MOUNT_PT}\""
echo

echo "Mounting $@"

# --- call the original ntfs mounter with the arguments handed in
/sbin/mount_ntfs.orig "$@"

echo "Mounted  $@"

# --- show the result of the mounting operation
 mount

# --- fix files at the newly mounted MOUNT_PT that are in the 'brok' state
find "${MOUNT_PT}" -type f |
while read FILE; do
  #JCV CHANGED: added check whether file type affected
  GetFileInfo -t "${FILE}"  | read FILETYPE
    if [[ $FILETYPE = "\"brok\"" ]];then
    # ---
    # --- use 'SetFile' to modify the file status
    # ---
    # --- this command line assumes the 'SetFile' command has been installed
    # --- and is available in your PATH
    # ---
    SetFile -c "" -t "" "${FILE}"
    echo "fixing file ${FILE}"
   fi
done
1
JCV