Apa arti "@" dalam izin file unix?

49

Saya memiliki file dengan izin berikut di MacBook Pro saya:

-rwxr-xr-x@ 1 root wheel 101K Feb 29 17:09 apachectl

Apa artinya @berdiri? Saya tidak dapat menjalankan file dan ini adalah satu-satunya hal yang menonjol bagi saya. Bagaimana saya bisa menyingkirkannya?

Seperti beberapa latar belakang, saya menyalin ini dari cadangan Time Machine.

VinnyD
sumber

Jawaban:

35

Jika file atau direktori memiliki atribut yang diperluas, Anda akan melihat @ di bidang izin. Untuk informasi keamanan tambahan (ACL), Anda akan melihat tanda +.

Dari man lspada OS X:

-@      Display extended attribute keys and sizes in long (-l) output.

The xattrprogram dapat digunakan untuk menampilkan dan memanipulasi atribut diperpanjang. Lihatlah apa yang ada di sana sebelum memutuskan untuk pergi sambil menghapus atribut-atribut itu. Lihat juga halaman manual untuk xattr.

Contoh cepat dari beberapa contoh kode kompromi PHP yang saya simpan untuk referensi:

$ ls -@l php-compromise.php 
-rw-r--r--@ 1 user  group  502620 Jul  5  2011 php-compromise.php
    com.apple.FinderInfo        32 
    com.apple.TextEncoding      15 

sumber
22

Terima kasih kepada @Jeff untuk koreksi. Saya salah ingat.

  • The @ditampilkan dengan atribut diperpanjang diatur
  • The +ditampilkan untuk ACL.
  • JIKA Anda memiliki atribut dan ACL maka Anda akan melihatnya @.

Jalankan perintah ls -le filenameuntuk melihat apakah ACL telah disetel.

Karena masalah Anda tampaknya berkaitan dengan mengakses file, saya yakin Anda memiliki set ACL selain atribut yang diperluas.

Untuk menyingkirkan menjalankan ACL echo | sudo chmod -E filenameuntuk file atau echo | sudo chmod -R -E directory namedirektori.

Lihat halaman manual chmod .

Sakit kepala
sumber
terima kasih atas tanggapannya. bagaimana saya bisa menyingkirkannya?
VinnyD
Diperbarui dengan jawaban yang saya yakin harus bekerja.
Zoredache
@Zoredache Izin ACL datang dengan tanda plus. @ Adalah "atribut yang diperluas."
Ya, saya melihat itu ketika saya mengecek. Saya harus ingat ke belakang. Dan apa yang terjadi ketika suatu file memiliki keduanya?
Zoredache
Nevermind, saya punya mac boot. Jika Anda memiliki @atribut diperluas dan +set acl, tampaknya ls akan menampilkan a @. Karena ia mengalami masalah dalam mengakses file, sepertinya bagi saya masalahnya lebih besar kemungkinannya ia memiliki masalah dengan ACL.
Zoredache
8

Dengan atribut karantina apel, chmod tidak cukup untuk menghapusnya.

Anda perlu menghapus atribut secara eksplisit:

sudo xattr -d com.apple.quarantine my_file
Kerusuhan
sumber
OP juga bertanya "Apa arti dari singkatan @?"
Kamafeather
3

The @singkatan atribut diperpanjang, di samping standar hak akses file unix.

Periksa atribut yang diperluas:

ls -l@

Setel ulang semua atribut yang diperluas untuk satu file:

sudo xattr -c <filepath>

Setel ulang semua atribut diperluas secara rekursif:

sudo xattr -rc <directory>
sudo chmod -R -N <directory>

Diperiksa pada macOS High Sierra (10.13) dan macOS Mojave (10.14.6).

NullIsNot0
sumber
0

Saya menemukan bahwa -Eatau -Nsebenarnya tidak terlihat bahkan ketika menggunakan sudo. Satu-satunya cara saya bisa memperbaikinya adalah dengan masuk sebagai root

Reza Toghraee
sumber
Itu bukan jawaban. Mungkin harus menjadi komentar untuk jawaban yang Anda maksud.
Kamafeather