zoukankan      html  css  js  c++  java
  • user .通过位置变量创建 Linux 系统账户及密码 脚本

    了解到几种加密密码的方式 myPassword用你想用的密码字符串代替

    1.有OpenSSL的话,可以使用openssl命令:

    openssl passwd -crypt myPassword

    2、如果用Apache Web服务器,那么也可以用htpasswd 

    htpasswd -nd user

    用户名(user)这个命令会输出一个user:password格式的字符串,直接把password字段复制下来就ok了。

    3.perl

    perl -e "print crypt('password','sa');"

    Perl需要一个加密盐,如这里使用了sa(salt指加密中用到的随机字符串,用不同的salt可以生成不同的加密结果)。

    2.通过echo命令结合passwd命令来实现

    linux环境中在创建用户的时候,涉及到修改用户的密码,一般是通过passwd命令进行修改,需要多次的确认,这里考虑通过一条命令直接对密码进行修改

    echo "$password" | passwd --stdin tom$1

    password=`openssl passwd -crypt $2 `
    echo "$password" | passwd --stdin tom$1

    1
    2
    3
    [root@localhost ~]# sh user.sh 3 123
    Changing password for user tom3.
    passwd: all authentication tokens updated successfully.

    .passwd使用--stdin选项的意思是告诉passwd命令从标准输入读取新的密码.通过前面的管道读取标准输入.  

    遇到报错  (这是执行完脚本以后 测试是否建用户成功 是否给用户更改密码)

    [tom3@localhost root]$ su tom3
    Password: 
    su: Authentication failure //认证失败  [ɔː,θentɪ'keɪʃən] ['feɪljə]

    解决想法:

    错误代码展示

    1
    2
    3
    4
    5
    6
    7
    8
    if [ $# -gt 1 ];then //$# 是判断位置参数的个数
            useradd tom$1  //创建用户
            password=`openssl passwd -crypt $2 ` // 生成密文密码
            echo "password" | passwd --stdin tom$1 //直接一步修改密码
    else
            echo "please enter user and password"  // 如果位置参数小于一个 echo 提示请输入 用户名和密码
    fi
    ~                                                                                           

    认证失败 首先 可能是用户密码没有更改成功 但是 上面passwd -crypt 输出的返回值是正确的

    2.那么就是第二种可能 我想的是 passwd-crypt 里面输入的密码可能是明文的 但我应用的是密文密码 导致我输入的明文和密文不匹配造成 失败

    解决后 代码展示

    1
    2
    3
    4
    5
    6
    7
    if [ $# -gt 1 ];then //$# 是判断位置参数的个数
            useradd tom$1  //创建用户
            echo "$2" | passwd --stdin tom$1 //直接一步修改密码
    else
            echo "please enter user and password"  // 如果位置参数小于一个 echo 提示请输入 用户名和密码
    fi
    ~                   

      

     代码升级  

    功能 如果用户存在 则删除用户 和删除家目录  且提示

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/bash
     
    id -g tom$i //查看用户id是否存在
    if [ $? -ne 0 ];then //如果不存在执行
            useradd tom$i 建立用户
     
    else
              echo "用户tom$i已存在" //如果存在执行
               userdel -rf tom$i //删除用户 和家目录
               echo "删除用户" //提示一下
               useradd tom$i //建立用户
               echo "重建用户成功" //提示一下
      

     功能写好了  合并一下 两个脚本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    f [ $# -gt 1 ];then
            id -g tom$1
            if [ $? -ne 0 ];then
                    useradd tom$1
                    echo "$2" | passwd --stdin tom$1
            else
                    userdel -rf tom$1
                    echo "删除成功 重新创建"
                    useradd tom$1
                    echo "$2" | passwd --stdin tom$1
     
            fi
    else
            echo "please enter user and password"
    fi
    ~      

      

    执行

    1
    2
    3
    4
    5
    [root@localhost ~]# sh user.sh 2 123
    1003 //显示出来用户编号说明已经存在
    删除成功 重新创建 //进入删除分支
    Changing password for user tom2. //更改密码
    passwd: all authentication tokens updated successfully. //改密码成功

    优化 把不用的输出可以放在黑洞里了 > /dev/null

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    if [ $# -gt 1 ];then
            id -g tom$1 >/dev/null
            if [ $? -ne 0 ];then
                    useradd tom$1
                    echo "$2" | passwd --stdin tom$1
            else
                    userdel -rf tom$1
                    echo "删除成功 重新创建"
                    useradd tom$1
                    echo "$2" | passwd --stdin tom$1 >/dev/null
     
            fi
    else
            echo "please enter user and password"
    减少输出 。 
  • 相关阅读:
    Fidder4 顶部提示 “The system proxy was changed,click to reenable fiddler capture”。
    redis 哨兵 sentinel master slave 连接建立过程
    虚拟点赞浏览功能的大数据量测试
    python基础练习题(题目 字母识词)
    python基础练习题(题目 回文数)
    python基础练习题(题目 递归求等差数列)
    python基础练习题(题目 递归输出)
    python基础练习题(题目 递归求阶乘)
    python基础练习题(题目 阶乘求和)
    python基础练习题(题目 斐波那契数列II)
  • 原文地址:https://www.cnblogs.com/xianglei_/p/12165348.html
Copyright © 2011-2022 走看看