【问题标题】:Changing Mac OS X User Password Programmatically or via Script以编程方式或通过脚本更改 Mac OS X 用户密码
【发布时间】:2008-12-09 18:09:27
【问题描述】:

我需要能够从 cron 任务或 ssh 会话中更改用户密码。有没有一种简单的方法可以使用 bash 脚本来做到这一点?如果没有,在 Cocoa 中最简单的方法是什么?

【问题讨论】:

    标签: cocoa macos passwords


    【解决方案1】:

    Apple 在 Mac OS 10.5 中引入了CSIdentitySetPassword API,允许更改密码如下:

    #import <Collaboration/Collaboration.h>
    
        AuthorizationRef authRef = NULL; // You have to initialize authRef
    
        CBIdentityAuthority *authority = [CBIdentityAuthority defaultIdentityAuthority];
        CSIdentityRef identity = [CBIdentity identityWithName:user authority:authority].CSIdentity;
        if (CSIdentityGetClass(identity) == kCSIdentityClassUser) {
            CSIdentitySetPassword(identity, (__bridge CFStringRef)newPassword);
            CSIdentityCommit(identity, authRef, NULL);
        }
    

    AuthenticationRef 可以像 int this response 一样初始化。

    【讨论】:

      【解决方案2】:

      使用passwd shell 命令。

      【讨论】:

      • passwd 不会阻止重定向输入吗?如果没有,您可以这样做,但您必须将所有三行写入文件(原始、新、新)然后重定向它,但我认为这不应该工作(为了安全起见) .可能是错的。
      • 注意,passwd(1) 不会更改用户钥匙串的密码!
      猜你喜欢
      • 2010-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      相关资源
      最近更新 更多