Yanıtlar:
Evet, bir betiğe bir karma sağlayarak şifreyi değiştirebilirsiniz. Bu 10.7 ve sonrası için çalışır (en az 10.9.1'e kadar).
Ayarlamak istediğiniz karmaya ihtiyacınız var. Bunu yapmanın en kolay yolu, istediğiniz şifreyi içeren bir hesap oluşturmak ve hash okumaktır. Karma saklanır /var/db/dslocal/nodes/Default/users/[username].plist
içinde ShadowHashData
alan
Kullanıcıyı standart yolla (dscl kullanarak) oluşturun, ancak dscl kullanarak parolayı ayarlamayın, bunun yerine defaults komutunu kullanın.
'Lana' denilen kullanıcı için örnek:
#!/bin/bash
#hash to set obtained from:
#defaults read /var/db/dslocal/nodes/Default/users/lana.plist ShadowHashData
pw_hash='(<10145341 4c544544 ...really long...2d534841>)'
#needs to be unique
$uid=510
#gid of an existing group
$gid=510
dscl . -create /Users/lana
dscl . -create /Users/lana UserShell /bin/bash
dscl . -create /Users/lana RealName "Lana May"
dscl . -create /Users/lana UniqueID $uid
dscl . -create /Users/lana PrimaryGroupID $gid
dscl . -create /Users/lana NFSHomeDirectory /Users/lana
dscl . -merge /Groups/admin GroupMembership lana
defaults write "/var/db/dslocal/nodes/Default/users/lana.plist" ShadowHashData "$pw_hash"
Yıllar önce, parolanın / etc / passwd veya isteğe bağlı olarak / etc / shadow içinde saklandığı bazı UNIX sistemlerine karışmıştım.
Biraz arama yaptım ve şifre özetlerinin OS X'te nasıl depolandığını anlatan iki makale buldum:
http://www.defenceindepth.net/2009/12/cracking-os-x-passwords.html http://www.defenceindepth.net/2011/09/cracking-os-x-lion-passwords.html
2011 makalesinde şöyle yazıyor:
Her kullanıcının kendi gölge dosyası vardır, her gölge dosyası / var / db / dslocal / nodes / Default / users / içinde bulunan bir .plist dosyası altında saklanır.
İki makale, yenilerini ayarlamak yerine şifreleri kırmakla ilgili, ancak sizin için bazı yararlı bilgiler sağlayabilir.
Sonra bir Google araması yaptım dscl set ShadowHashData
. İlk hit "Python betiği" 10.7 sistemde bir kullanıcı oluşturmak için ücretsiz yükleme paketi "idi:
https://gist.github.com/rustymyers/1242589
Bu senaryo geliyor gibi görünüyor dscl -create
, bunu takiben dscacheutil -flushcache
, ardından bazı verileri yazarak /var/db/dslocal/nodes/Default/users/%s.plist
.
Senaryoya çok fazla bakmadım, ama belki de size bir başlangıç noktası verebilir?