AWSから公開鍵ファイルをダウンロードし、パーミッションを確認したところ、@(アットマーク)がついていました。
これについて、調べたこと、@(アットマーク)の削除方法について記載します。
最初に結論。
ls -l@ ファイル名
で属性確認。
xattr -c ファイル名
で属性削除。
※ DesktopやDownloadの配下にあると消せない属性があるので注意。
ダウンロードしたファイルを確認。
$ ls -l ~/Downloads/my-key-pair.pem
-rw-r--r--@ 1 xxxx xxxx 1678 8 22 21:37 /Users/xxxx/Downloads/my-key-pair.pem
@が表示されています。
これは何か?
OSX のデフォルトのファイルシステムの拡張属性がそのファイルについていることを示します。
今回はブラウザからダウンロードしたファイルなので、そういった情報が記録されています。
どんな情報がついているか確認する。
この拡張属性の操作には xattr コマンドを使います。
xattr ファイル名
拡張属性の一覧を表示できます。
$ cd ~/Downloads
$ xattr my-key-pair.pem
com.apple.macl
com.apple.metadata:kMDItemWhereFroms
com.apple.quarantine
ls -l@ ファイル名
としても確認することができます。パーミッションも確認できるので便利ですね。
$ ls -l@ my-key-pair.pem
-rw-r--r--@ 1 xxxx xxxx 1678 8 22 21:37 /Users/xxxx/Downloads/my-key-pair.pem
com.apple.macl 72
com.apple.metadata:kMDItemWhereFroms 93
com.apple.quarantine 57
拡張属性を削除する。
xattr コマンドの-dオプションを使うことで拡張属性を削除します。
使用例: xattr -d 属性 ファイル名
$ xattr -d com.apple.quarantine my-key-pair.pem
$ ls -l@ my-key-pair.pem
-rw-r--r--@ 1 xxxx xxxx 1678 8 22 21:37 /Users/xxxx/Downloads/my-key-pair.pem
com.apple.macl 72
com.apple.metadata:kMDItemWhereFroms 93
消すことができたので、残り2つも削除します。
拡張属性をまとめて削除する。
xattr コマンドの-cオプションを使うことでまとめて拡張属性を削除します。
使用例: xattr -c ファイル名
$ xattr -c my-key-pair.pem
$ xattr my-key-pair.pem
com.apple.macl
com.apple.macl
という属性が残ってしまいました。
調べてみると、DesktopやDownloadの配下にあるファイルの属性は削除できないようです。
参考リンク:Persistent File Access via com.apple.macl Xattr
ファイルを他のディレクトリにファイルを移してから再度、実行します。
$ xattr -c ~/xxxx/my-key-pair.pem
$ xattr ~/xxxx/my-key-pair.pem
# パーミッションの@も確認する。
$ ls -l ~/work/my-key-pair.pem
-rw-r--r-- 1 xxxx xxxx 1678 8 22 21:37 /Users/xxxx/xxxx/my-key-pair.pem
@を取り除くことができました!