OSX: 判断用户/系统的所属域以及LKDC
来源:互联网 发布:公司客户数据保密制度 编辑:程序博客网 时间:2024/04/30 15:14
前言:
这几天在改进一个过去的脚本,该脚本根据用户所属的认证域,自动把该部门的所有共享资源,在用户登陆之后,自动地安装,便于用户访问使用。在我的环境中的域有三种情况:AD(微软的Active Directory目录服务),OD(Apple的Open Directory目录服务)以及Local(本地登陆服务)。之前,因为只考虑了比较简单的情况,比如本地只有一个特定的管理员用户,其它都是AD网络用户,而且机器配置AD认证插件中,没有打开Mobile用户,所以,判断一个用户的所属域,可以很简单地使用下面的命令:
dscl . list /Users/$userName这个命令在本地用户库中查找该用户,找到了,就认为是本地用户。
但是问题是,如果开启Mobile选项,那么一个其它域认证的用户,第一次登陆后,系统也会在本地用户库中生成该用户。因为Mobile选项的意思是,所有在这台机器上登陆过的用户,都可以在没有该认证服务时的任何其它地方登陆;也就是,该用户可以拿着这台电脑回家/出差继续工作,或者在没有网络联机的情况下登陆。这样一来,上面的命令就会误判该用户是本地用户。
其实解决的方式也很简单,比如判断用户是否属于一个特定目录服务的用户组,也可以完成判断。
不过,通过网上的搜索后,发现了更多的OSX系统认证命令的使用和内部机制,所以,记录下来整理下思路。
LKDC:
自从10.5之后,苹果引进了新的认证机制,它为苹果机之间简单的一对一共享提供SSO(Single-Sign-On)认证服务, 这个就是Local KDC,简称LKDC.
对于KDC的作用, 以及Kerberos认证机制协议的详细内容,网上一大堆,当然最权威的还要说是麻省理工的官方网站了。
每一个苹果系统,都有自己的KDC(Key Distribution Center),当一个用户访问机器的一个服务时,向KDC请求,KDC根据用户的情况,发给他一个Key用于访问该服务。
在OS X系统初始化的时候,它会为本台电脑,生成一个证书,这个证书可以在system钥匙链中找到,如下图。它是使用SHA1加密的。
dscl . read /Users/$(users)
dscl . read /Users/$(users) AuthenticationAuthority | grep $(users)@LKDC:为了验证一个用户的认证域是不是本地,可以使用上面的命令。
OD在管理电脑帐户的时候也会使用机器本身的LKDC证书。在一台机器加入到OD的时候,虽然加入的时候使用的是机器名,但是苹果的OD也会使用机器本身的LKDC证书。比如laptopA电脑帐户在OD中的记录是:
1) laptopA$2) laptopA.local$3) LKDC:SHA1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx$最后的就是LKDC证书。这样有可能出现问题,比如,使用克隆的方式制作的内部系统镜像后,把这个系统应用到另外一台机器后,这两台机器会得到相同的LKDC证书,那么第二台相同LKDC证书的机器加入OD的时候,虽然两台机器使用不同的机器名,OD还会报错说具有相同LKDC证书的机器已经加入过了。这个证书和我们上面看到的com.apple.kerberos.kdc证书一模一样。
rm -fr /var/db/krb5kdc/usr/libexec/configureLocalKDC
Nodenames:Name State Refs Type External Locked Hidden ----------------------------------------- ------ ---- ------------ -------- ------ ------ /Active Directory Online 2 X X /Active Directory/EDU Online 14 /Active Directory/EDU/All Domains Online 17 Virtual node /Active Directory/EDU/Global Catalog Online 18 Virtual node X /Active Directory/EDU/ebc.bc.com 2 Virtual node X /Active Directory/EDU/edu.ebc.com Online 15 Virtual node X /Active Directory/EDU/org.ebc.com Online 5 Virtual node X /Active Directory/EDU/public.ebc.com 2/Active Directory/EDU/tss.ebc.com 2 Virtual node X /Configure Online 1 X X /Contacts Online 3 /LDAPv3 Online 2 X X /LDAPv3/S379ees2.edu.ebc.com Online 15 /Local 2 X X /Local/Default Online 30 X /NIS 1 X X /Search Online 39
Peer-To-Peer Kerberos: http://www.painless-security.com/blog/2007/10/31/p2p-kerberos
LKDC: http://dreness.com/wikimedia/index.php?title=LKDC
Back to My Mac: http://en.wikipedia.org/wiki/Back_to_My_Mac
- OSX: 判断用户/系统的所属域以及LKDC
- 判断Android系统程序以及用户安装的程序
- C++判断当前用户所属组
- C#小程序实现闰年判断、月份的天数以及所属季度的判断
- 更改连接的所属用户
- 判断对象所属的类
- OSX: 查看系统/用户/网络信息的实践
- 修改文件的“所属用户”和“所属组”
- CommunityServer 架构下如何快速查到所属文件的类以及用户自定义控件
- C#小程序实现闰年判断、月份的天数以及所属季度的判断(完善1)
- Linux查看用户所属的组
- Linux下用户所属的组
- java判断字符串所属的编码类型
- 根据PID号判断所属的容器
- 判断一个对象所属类的类型
- 使用超级用户root修改文件的所属组与所属用户
- oracle用户查看用户所属的默认表空间
- Linux增加用户组、用户和修改目录的所属用户
- Override
- 黑马程序员----JAVASE之IO流操作【字节流】
- ipad变牙膏?
- while 和 foreach 循环语句
- 全站变灰的CSS代码
- OSX: 判断用户/系统的所属域以及LKDC
- phpMyAdmin后台拿Shell方法及php爆路径方法
- 常用的RSS阅读器评测
- 隐马尔可夫模型(HMM)攻略
- 【新手教程】如何向App Store提交应用
- javascript停止页面所有计时器
- 【EmbeddedLinuxPrimer翻译】第二章:你的第一次嵌入式体验(二)
- 王力宏闪婚?不是吧
- Swing之带超链接的label简单实现。