OS X的自动登录的过程是这样的,OS X首先查看/Library/Preferences/com.apple.loginwindow.plist文件里面是否设置autoLoginUser,如果设置了而且是一个用户,那么系统从/etc/kcpassword文件中提取该用户的密码,然后自动登录。
要想设置自动登录的用户名使用下面命令:
defaults write /Library/Preferences/com.apple.loginwindow autoLoginWindow -string "root"
如何生成kcpassword文件呢?Apple没有提供官方的工具,下面有一个程序员自己开发的shell脚本文件。
#!/usr/bin/perl use strict; use warnings; use Foundation; #==============================================================================# sub kcpassword_xor { my ($pass) = @_; ### The magic 11 bytes - these are just repeated # 0x7D 0x89 0x52 0x23 0xD2 0xBC 0xDD 0xEA 0xA3 0xB9 0x1F my @key = qw( 125 137 82 35 210 188 221 234 163 185 31 ); my $key = pack "C*", @key; my $key_len = length $key; for (my $n=0; $n<length($pass); $n+=$key_len) { substr($pass,$n,$key_len) ^= $key; } return $pass; } #==============================================================================# sub write_pass { my ($enc) = @_; my $file = '/etc/kcpassword'; open(my $kcp, '>', $file) || die; print $kcp $enc; close($kcp); chmod(0600, $file); } #==============================================================================# my $user = "root"; my $pass = "mysecretpassword"; my $enc = kcpassword_xor($pass); write_pass($enc); exit 0; #==============================================================================#
只要是把其中的$user和$pass两个变量换成自己的运行就好了。重新启动系统后,就会自动登录了。