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 重定向標准輸出和錯誤信息到偽設備中。如果對這個不熟悉可以在網上查找。最后一行就是給該用戶創建密碼。

到此步驟完了,但然你還可以通過這樣一個腳本完成許多對該賬戶的特殊設置。

下面一張截圖關於整個過程:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM