Chinaunix

标题: useradd aaa -p aaa 为什么不好用呢? 我要实现脚本添加用户 [打印本页]

作者: lzyking    时间: 2003-03-28 09:13
标题: useradd aaa -p aaa 为什么不好用呢? 我要实现脚本添加用户
useradd aaa -p aaa 命令可以成功执行, 在 /etc/passwd 中也可以看到成功的加了进去,可用户无法登录, 这样的话也就无法 在每一行中添加一个用户和其密码了, MAN 手册说是 crypt(3) 的原因, 我 看了.也没说什么啊.  怎么办
作者: nkliyong    时间: 2003-03-28 09:31
标题: useradd aaa -p aaa 为什么不好用呢? 我要实现脚本添加用户
你的是什么系统?SCO里没有-p
AIX里没有useradd
作者: lzyking    时间: 2003-03-28 10:08
标题: useradd aaa -p aaa 为什么不好用呢? 我要实现脚本添加用户
忘说了 是 linux 8
作者: kpjiang    时间: 2003-03-28 10:11
标题: useradd aaa -p aaa 为什么不好用呢? 我要实现脚本添加用户
好像用-p password後,password是加密過後的.
作者: lzyking    时间: 2003-03-28 13:08
标题: useradd aaa -p aaa 为什么不好用呢? 我要实现脚本添加用户
那密码应该是什么呢
作者: 红袖添香    时间: 2003-03-29 05:08
标题: useradd aaa -p aaa 为什么不好用呢? 我要实现脚本添加用户
...

是用 crypt() 加密的,你可以调用这个函数,把自己的明文口令加一下密,这个函数是准正式的函数,应该是大多数系统下都有。在 Solaris 和 IRIX下 编译都通过,我想 linux 也应该可以吧。

带一个参数,即明文口令。


  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>

  4. char *crypt ();

  5. int main (int argc, char **argv)
  6. {
  7.       char c[3] = "\0\0\0";
  8.       char salt[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./";

  9.       if (argc < 2) {
  10.          (void) fprintf ( stderr, "Usage: %s password\n", argv[0] );
  11.          return (1);
  12.       }

  13.       srand48(time(NULL));
  14.       c[0] = salt[(int) (drand48() * 63)];
  15.       c[1] = salt[(int) (drand48() * 63)];

  16.      (void) fprintf (stdout,"%s\n", (crypt ( argv [1], c )));

  17.      return (0);
  18. }
复制代码

作者: 红袖添香    时间: 2003-03-29 05:13
标题: useradd aaa -p aaa 为什么不好用呢? 我要实现脚本添加用户
...

在 SHELL 调用:假设上面的程序你给编译成 a.out,那么,用

# useradd aaa -p `a.out  MyPlainTextPassword`  

就行了。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2