作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
似乎是keychain文件(扩展名为 .keychain
)通常会有一个与之关联的不可见文件,位于同一目录中。
这个不可见的文件总是具有以下属性:
0444
(所有用户只读)。 .fl
组成后跟 8 个十六进制字符。例如:.fl043D1EDD
.fl947E1BDB
.fl9FAF0136
.fl12663120
.fl8E6EFC6C
.flCF600F4B
.fl1D8ECE61
.fl0D1D1BA9
.fl79E88CD1
.fl62323D2F
.fl75262C83
.fl652F188E
security
操作钥匙串(keychain)时会创建相同的不可见文件终端中的工具:
$ cd ~/Desktop/
$ ls -1a
.
..
$ /usr/bin/security create-keychain ~/Desktop/Test.keychain
$ ls -1a
.
..
.fl1BCE4B9A
Test.keychain
$ rm .fl1BCE4B9A
$ ls -1a
.
..
Test.keychain
$ /usr/bin/security add-internet-password -a account -s google.com -w password ~/Desktop/Test.keychain
$ ls -1a
.
..
.fl1BCE4B9A
Test.keychain
$ /usr/bin/security delete-keychain ~/Desktop/Test.keychain
$ ls -1a
.
..
fl
在文件名中是什么意思? 最佳答案
经过大量调查,我设法回答了我的大部分问题:
.fl
是由 AtomicFile
创建的锁定文件的文件名前缀安全框架中的类。 Test.keychain
,则其文件名的 SHA-1 哈希以 1BCE4B9A...
开头因此锁定文件将被称为 .fl1BCE4B9A
. Security::AtomicFile::create(unsigned short)
Security::RefPointer<Security::AtomicLockedFile>::release_internal()
Security::AtomicFile::write()
Security::RefPointer<Security::AtomicLockedFile>::release_internal()
Security::AtomicFile::performDelete()
AtomicFile.cpp
Security::AtomicFile
Security::AtomicLockedFile
Security::AtomicTempFile
Security::LocalFileLocker
AppleDatabase.cpp
Security::AppleDatabase
Security::DbModifier
AtomicFile::AtomicFile()
AtomicFile::create()
LocalFileLocker::lock()
DbModifier::modifyDatabase()
AtomicFile::write()
AtomicFile::performDelete()
AtomicFile
中找到了这个代码构造函数:
char buffer[256];
sprintf(buffer, "%08X", hash);
mLockFilePath = mDir + ".fl" + buffer;
hash
是
SHA-1 的前 4 个字节钥匙串(keychain)文件名的哈希值。
LocalFileLocker::lock()
的评论中提到的.
flock()
系统调用用于操作锁文件上的锁。
DbModifier::createDatabase() or ::modifyDatabase() or ::deleteDatabase()
AtomicFile::create() or ::write() or ::performDelete()
AtomicLockedFile::lock()
LocalFileLocker::lock()
flock(mLockFile, LOCK_EX) // exclusive lock
DbModifier::commit()
AtomicTempFile::commit()
RefPointer<AtomicLockedFile>::setPointer(AtomicLockedFile*)
RefPointer<AtomicLockedFile>::release_internal()
AtomicLockedFile::~AtomicLockedFile() // destructor
AtomicLockedFile::unlock()
LocalFileLocker::unlock()
flock(mLockFile, LOCK_UN) // unlock
关于macos - 与 OS X 钥匙串(keychain)关联的不可见文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24288840/
我是一名优秀的程序员,十分优秀!