zoukankan      html  css  js  c++  java
  • Linux下通过shell脚本创建账户

    当我们在linux平台上开发一些项目时,或者有一些项目是需要部署到linux系统上时,有时候会涉及到linux上的特定的账户,例如有一些项目需要运行在某些特定的账户下,或者有时候需要在全新的环境上搭建一些环境(例如:LAMP)linux+apache+mysql+php 时都可能会涉及到需要添加一些账户信息。如果此时用脚本来维护这些account,就会简化一些不必要的操作,大家应该都知道在linux如果手动添加用户都会涉及到一个交互的操作,无论你是用useradd命名或者直接操作/etc/passwd 或 /etc/shadow 文件。那么这里就以用脚本创建FTP账户为例。

    1.首先需要检查你创建的账户是否已经存在该系统上,常见的办法是通过解析/etc/passwd文件确定。当然在linux上如果想实现此操作的方式有很多种,这里就以常见命令组合来完成。借助linux上的cat、awk、grep 来实现此步骤,关于这些命令可以查l命令本身帮助文档 用  “命令 --help” 或者是通过 man 的方式 。代码如下(以创建demo_ftp账户为例):

    /bin/cat /etc/passwd | /bin/awk -F ':' '{print $(1)}' | /bin/grep -E "^$FTP_USER$"

    这里FTP_USER是一个变量,里面存储的是demo_ftp, cat命令是读取整个passwd文件,然后通过管道命令传递给awk命令,这里用-F是以“:”分隔那些信息,因为在paswwd文件的对于每一行的存储格式都是多个单元用"":"链接的。简单的理解就相当于php中explode函数和js中的spilt,其中print $(1) 就是打印第一列信息。然后将第一列信息在传递给grep命令,-E代表可以使用正则表达式,这是就以这个账户开始和结束(唯一确定一个账户)。

    2.如果在shell中执行此命令,需要用``(键盘上Esc键下面那个字符)这个符号来把那个命名包装起来,该命名就返回该账户的信息(前提是该账户已经存在),否在返回空。在此可以做一个判断决定是否创建该账户。

    3.如果该机器上没有账户就需要创建,创建命令如下:

        #create folder if not exist
        mkdir -p $FTP_FOLDER;
        /bin/chmod 777 -R $FTP_FOLDER;
        #create user if not exist
        /usr/sbin/useradd -c 'FTP User create by shell' -d $FTP_FOLDER -s /sbin/nologin $FTP_USER >/dev/null 2>&1;
        echo $FTP_PASSWORD | /usr/bin/passwd $FTP_USER --stdin >/dev/null 2>&1;    

    FTP_FLODER代表了该FTP账户默认对外提供访问的folder,可以用mkdir -p 命名来创建它,如果该folder存在,该命令就不会创建。chmod命令就是给该folder授权,一般情况下不需要这步,除非有特殊需求。接下来的2行命令就是创建账户的核心。其中-c代表描述信息,-d代表该账户对外提供的访问空间,-s 代表了禁用该账户通过SSH登录,后面的 2 > &1 重定向标准输出和错误信息到伪设备中。如果对这个不熟悉可以在网上查找。最后一行就是给该用户创建密码。

    到此步骤完了,但然你还可以通过这样一个脚本完成许多对该账户的特殊设置。

    下面一张截图关于整个过程:

  • 相关阅读:
    Delphi XE4 FireMonkey 开发 IOS APP 发布到 AppStore 最后一步.
    Native iOS Control Delphi XE4
    Delphi XE4 iAD Framework 支持.
    using IOS API with Delphi XE4
    GoF23种设计模式之行为型模式之命令模式
    Android青翼蝠王之ContentProvider
    Android白眉鹰王之BroadcastReceiver
    Android倚天剑之Notification之亮剑IOS
    Android紫衫龙王之Activity
    GoF23种设计模式之行为型模式之访问者模式
  • 原文地址:https://www.cnblogs.com/stackflow/p/linux_shell_account.html
Copyright © 2011-2022 走看看