shell 指令碼實戰筆記(9)--linux自動大量新增使用者

來源:互聯網
上載者:User

標籤:des   style   blog   http   java   使用   

前言:

  添加linux使用者帳號,這個相對簡單, 在面對叢集, 許多機器的時候, 我們該如何去做和實現? 這篇短文, 簡單講解一些思路, 儘可能地涉及周邊的一些知識點. 不光是營運人員會面臨這個問題, 對一個基於linux平台的叢集服務或軟體(比如hadoop叢集), 有時也會涉及到這塊.

應用情境:
  是以centos 6.4作為示範的系統, 其他的系統有類同, 也有差異, 且以實戰演練, 一步步的講述下流程.

*) 實戰演練
查閱useradd的使用和參數選項
useradd --help

-d, --home-dir HOME_DIR home directory of the new account-m, --create-home create the user‘s home directory-p, --password PASSWORD encrypted password of the new account-s, --shell SHELL login shell of the new account

選項-p 能指定密碼, -d指定使用者主目錄, -s指定使用者登入shell

嘗試添加使用者名稱: thinkpad, 密碼: lenovo
useradd thinkpad -p lenovo -s /bin/bash
su thinkpad
輸入密碼: lenovo

第一次su thinkpad成功, 是因為當前的帳號是root, su thinkpad不要求輸入密碼驗證
第二次su thinkpad則失敗, 說明密碼並不是lenovo
為什麼呢? 究其原因, 如參數說明, 該參數指定的password為加密後密碼字串, 那具體採用了那種密碼編譯演算法?

我們可以進一步的通過命令手冊來查閱
man useradd

-p, --passwordPASSWORD加密了的密碼,就像 crypt(3) 的傳回值。預設為禁用密碼。

crypt是個系統函數, 我們繼續查閱
man 3 crypt

NAME  crypt, crypt_r - password and data encryptionSYNOPSIS  #define _XOPEN_SOURCE /* See feature_test_macros(7) */  #include <unistd.h>  char *crypt(const char *key, const char *salt);  #define _GNU_SOURCE /* See feature_test_macros(7) */  #include <crypt.h>  char *crypt_r(const char *key, const char *salt,  struct crypt_data *data);DESCRIPTION  key is a user‘s typed password.  salt is a two-character string chosen from the set [a–zA–Z0–9./].

key和salt(兩位元組)的設定很重要, 於是我們繼續編寫自己的密碼產生器
編寫檔案crypt_passwd.cpp

#define _XOPEN_SOURCE #include <unistd.h>#include <stdio.h>int main(){    const char *key = "lenovo"; // key 為想要設定的密碼    const char *salt = "xx";// salt為兩位元組, 可隨意取  char *result = crypt(key, salt);  printf("password: %s\n", result);  return 0;}

編譯crypt_passwd.cpp

g++ crypt_passwd.cpp -lcrypt -o crypt_passwd

輸入的xx8FwQtT5iVRQ, 即是lenovo對應加密字串
讓我們嘗試下, 此前的猜測是否正確

useradd thinkpad -p xx8FwQtT5iVRQ -m -d /home/thinkpad -s /bin/bash
su thinkpad
輸入密碼: lenovo

現在成功了, oh yeah, 是不是很簡單

那如何為叢集添自動添加帳號呢? 可藉助上篇免密碼登入的方式來實現.

另一種方式:

除了在useradd指定-p參數, 也可以借用here document來實現
編寫如下指令碼

#! /bin/bash# 添加鎖定使用者useradd thinkpad -m -d /home/thinkpad -s /bin/bash# 藉助here document來進行互動, 並設定密碼, (兩次輸入密碼是因為passwd需要重複驗證)passwd thinkpad <<-EOF  lenovo  lenovoEOF

使用不指定的密碼的useradd, 其建立的帳號是被鎖定的, 需要管理員藉助passwd對其賦予新密碼, 而這邊藉助here document的方式, 就免去手動輸入密碼的過程了.

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.