zoukankan      html  css  js  c++  java
  • shell脚本中添加用户并设置密码

    有时候在初始化shell脚本中希望能顺便创建用户并指定密码,使用useradd命令可以达到该效果:

    useradd -m -p encryptedPassword username
    

    参数说明:

    • -m : 自动建立用户的登入目录;
    • -p encryptedPassword : 加密后的密码, 方法crypt()的返回值.
    • username 需要添加的用户名
    怎么生成一个加密密码:

    使用perl的crypt()方法即可加密明文密码,示例如下:

    $ perl -e 'print crypt("password", "salt"),"
    "'
    

    输出如下:

    sa3tHJ3/KuYvI
    

    对于useradd命令需要用到的加密密码,使用'password'作为盐,具体语法如下:

    $ password="1YelloDog@"
    $ pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
    $ echo $pass
    paU5t8Al/qf6M
    

    示例shell脚本用于创建用户:

    adduser.sh

    #!/bin/bash
    # Script to add a user to Linux system
    if [ $(id -u) -eq 0 ]; then
    	read -p "Enter username : " username
    	read -s -p "Enter password : " password
    	egrep "^$username" /etc/passwd >/dev/null
    	if [ $? -eq 0 ]; then
    		echo "$username exists!"
    		exit 1
    	else
    		pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
    		useradd -m -p $pass $username
    		[ $? -eq 0 ] && echo "User has been added to system!" || echo "Failed to add a user!"
    	fi
    else
    	echo "Only root may add a user to the system"
    	exit 2
    fi
    

    在root用户下执行该脚本:

    # ./adduser.sh
    Enter username : roja
    Enter password : HIDDEN
    User has been added to system!
    
    附自己使用的一段增加用户的shell:
    ...
    #如果是生产环境,为了防止明文密码泄露,可以对shell脚本进行加密
    password="py@123"
    username="py"
    pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
    useradd -m -p $pass $username
    ...
    

    参考链接:

    https://www.cyberciti.biz/tips/howto-write-shell-script-to-add-user.html

  • 相关阅读:
    C# 操作XML
    js把字符串(yyyymmdd)格式转换成日期格式(yyyy-mm-dd)
    解析GZIP压缩的网页
    访问修饰符
    c# 多态中 Virtual与override的作用
    C# 中 ref 和out 的区别
    C# .net 中文手册地址
    js获取URL参数
    几种Css前端框架资料
    android 检查能否上网
  • 原文地址:https://www.cnblogs.com/cord/p/9226505.html
Copyright © 2011-2022 走看看