1. 程式人生 > >CentOS 7 使用者賬戶配置

CentOS 7 使用者賬戶配置

CentOS 7 使用者賬戶配置

說明:

1、這篇博文記錄的是CentOS 7 使用者賬戶的配置,包括新增使用者、新增使用者組、刪除使用者、刪除使用者組等。其中包括分析使用者的配置檔案、目錄以及對安全的思考。

2、使用者配置方面CentOS 7與以往版本感覺沒有差別。

第一部分 認識使用者

  Centos 7 系統最小化安裝,預設配置,是沒有建立其他使用者的。作為伺服器作業系統,為了安全起見,一般是使用一般使用者。這就牽涉到使用者、使用者組的建立以及刪除。

此外,CentOS 7 和其他版本的Linux一樣,都具有相應使用者的配置檔案及目錄,如下:

複製程式碼

/etc/passwd         //使用者賬戶資訊,可以看出使用者名稱稱 
/etc/shadow          //使用者賬戶加密後資訊,包括但不限於/etc/passwd中的資訊 
/etc/group           //組賬戶資訊,可以看出組名稱 
/etc/gshadow       //組賬戶安全資訊,包括但不限於/etc/group中的資訊 
/etc/default/useradd //賬戶建立時預設值 
/etc/skel/           //包含預設檔案的目錄,具體作用尚不清楚 
/etc/login.defs      //安全性的預設配置,與上面/etc/default/useradd有區別

複製程式碼

  我們看一下比較重要的配置檔案/etc/default/useradd,內容如下:

複製程式碼

# useradd defaults file
GROUP=100                        //起始GID值
HOME=/home                       //家目錄位置
INACTIVE=-1             //有效時間,負值為永久,正數代表天數
EXPIRE=
SHELL=/bin/bash                   //shell路徑
SKEL=/etc/skel                    //預設配置檔案路徑
CREATE_MAIL_SPOOL=yes             //是否建立郵件池,具體作用待以後學習

複製程式碼

  我們再來看一下/etc/login.defs檔案,重點內容如下:

複製程式碼

MAIL_DIR        /var/spool/mail
...

# Password aging controls:           密碼期限配置
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    8
PASS_WARN_AGE   7
...

# Min/max values for automatic uid selection in useradd      最小/最大UID設定
#
UID_MIN                  1000              //我們建立的使用者的UID從1000開始
UID_MAX                 60000
....

# Min/max values for automatic gid selection in groupadd
#
GID_MIN                  1000
GID_MAX                 60000
....
CREATE_HOME     yes                   //是否建立家目錄
...

# Use SHA512 to encrypt password.        //採用SHA512加密
ENCRYPT_METHOD SHA512

複製程式碼

  從檔案內容可見,/etc/login.defs 是比較巨集觀的進行偏重安全方面的配置。

  下面是一些實際過程中常用的命令:

複製程式碼

useradd         //新增使用者
passwd          //為使用者設定密碼   
userdel         //刪除使用者
usermod         //修改使用者資訊
groupadd       //新增使用者組
groupdel        //刪除使用者組
groupmod        //修改使用者組資訊
groups          //顯示當前程序使用者所屬的使用者組

複製程式碼

 

第二部分  建立使用者

例子一: 最簡單的建立使用者

執行如下命令:

useradd test

passwd test

  例項如圖,並且系統會對密碼做限制,比如長度、複雜度,但是不影響建立。可以理解為“溫馨提示”。

  這樣一個使用者名稱為test的使用者已經建立好了。我們看一下屬性。

  執行命令:id test   //檢視使用者資訊

  我們發現test的uid=1000,gid=1000,位於test使用者組,說明缺引數的新建使用者,會預設新建一個與使用者名稱同名的使用者組並加入其中,我們也注意到UID、GID的值與預設的配置檔案中保持一致,可見配置檔案是生效的,同樣也可以再新建一個使用者,看一下UID、GID的值,會看到是1001.可以嘗試一下。我們可以切到/home目錄下,會看到使用者目錄,與配置檔案設定一致。

例子二:帶引數的建立賬戶

  上個例子我們採用預設配置,只是設定了使用者名稱和密碼。這次我們手動設定UID、GID等。首先我們看一下,useradd的引數,如下:

複製程式碼

 -b, --base-dir BASE_DIR       新賬戶的主目錄的基目錄
  -c, --comment COMMENT         新賬戶的 GECOS 欄位
  -d, --home-dir HOME_DIR       新賬戶的主目錄
  -D, --defaults                顯示或更改預設的 useradd 配置
 -e, --expiredate EXPIRE_DATE  新賬戶的過期日期
  -f, --inactive INACTIVE       新賬戶的密碼不活動期
  -g, --gid GROUP               新賬戶主組的名稱或 ID
  -G, --groups GROUPS   新賬戶的附加組列表
  -h, --help                    顯示此幫助資訊並推出
  -k, --skel SKEL_DIR   使用此目錄作為骨架目錄
  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的預設值
  -l, --no-log-init     不要將此使用者新增到最近登入和登入失敗資料庫
  -m, --create-home     建立使用者的主目錄
  -M, --no-create-home          不建立使用者的主目錄
  -N, --no-user-group   不建立同名的組
  -o, --non-unique              允許使用重複的 UID 建立使用者
  -p, --password PASSWORD               加密後的新賬戶密碼
  -r, --system                  建立一個系統賬戶
  -R, --root CHROOT_DIR         chroot 到的目錄
  -s, --shell SHELL             新賬戶的登入 shell
  -u, --uid UID                 新賬戶的使用者 ID
  -U, --user-group              建立與使用者同名的組
  -Z, --selinux-user SEUSER             為 SELinux 使用者對映使用指定 SEUSER

複製程式碼

  新建一個UID=501,GID=600,30天有效期,家目錄為/home/test5的使用者test4.

命令 :

groupadd -g 600  test3                //建立GID=600的使用者組test3            
useradd -u 501 -g 600 -f 30 -m   -d /home/test5 test4

當我們再次開啟使用者檔案/etc/passwd或者id test4會看到我們自己的配置。

uid=501(test4) gid=600(test3) 組=600(test3)
第三部分 更改使用者設定

  不同的 使用者需要不同的許可權,擁有不同的SHELL,是否允許登入。這個部分,就需要用到usermod命令修改使用者配置。我們上個例子中建立過一個test賬戶,預設SHELL是/bin/bash,是可以登入的。

禁止登入:

usermod -s /sbin/nologin test //-s 指定shell

修改使用者名稱:

 

usermod -l test88 test //-l 新的使用者名稱

此外還可以家目錄、過期天數、更換組、鎖定使用者、解鎖使用者等功能,可以檢視引數實踐。

 

第四部分 刪除使用者/組

   當我們建立使用者/組有錯誤時,可能會刪除使用者/組,然後再重新建立。我們使用userdel命令來刪除使用者。

執行命令:

[root@localhost home]# userdel test
[root@localhost home]# useradd test
useradd:警告:此主目錄已經存在。
不從 skel 目錄裡向其中複製任何檔案。
正在建立信箱檔案: 檔案已存在

  出現這個問題是因為我們刪除使用者時,系統為了安全起見並沒有刪除相關的檔案以及目錄。我們檢視一下userdel引數:

複製程式碼

用法:userdel [選項] 登入

選項:
  -f, --force                   force some actions that would fail otherwise
                                e.g. removal of user still logged in
                                or files, even if not owned by the user
  -h, --help                    顯示此幫助資訊並推出
  -r, --remove                  刪除主目錄和郵件池
  -R, --root CHROOT_DIR         chroot 到的目錄
  -Z, --selinux-user            為使用者刪除所有的 SELinux 使用者對映

複製程式碼

  我們可以使用引數-rf 來刪除相關檔案目錄,這一步具有危險性,是否有回滾操作,不是特別清楚。

執行命令:

[root@localhost home]# userdel -rf test
[root@localhost home]# useradd test

  這樣,就不會出現提示了。

第五部分 使用者安全配置

  在作業系統安全中,使用者許可權、檔案許可權也是非常重要。現在就幾個小點記錄一下。這次目的主要有禁止root使用者連線、一般使用者使用sudo命令提權。我們在上個步驟中,建立了一個test使用者,當我們輸入sudo命令時,會提示如下:

 

test不在 sudoers 檔案中。此事將被報告。

 

解決這個問題,我們只需要在/etc/sudoers 中新增使用者test即可,程式碼如下:

//找到如下一行,在下面新增即可
.....
root    ALL=(ALL)       ALL
test    ALL=(ALL)       ALL          //這一行是新增的

到這裡應該就可以解決問題了。

新增:在虛擬機器裡面重新安裝了一個CentOS 7,實驗了一下,確實可以成功。下面是/etc/sudoers 屬性:

可以看到擁有setUID許可權,任何使用者都有x(執行)許可權,故可以執行sudo命令。下面的內容就當作是對setUID許可權的理解。

ps.因為之前按照網上的資料對其他部分進行了設定,但是感覺並不影響,下面貼出修改的部分及其目的

//修改檔案 /usr/bin/sudo 使用者及使用者組
chown  root:root /usr/bin/sudo
//修改許可權為4755,其中4代表以檔案所有者執行
chmod 4755 /usr/bin/sudo

上面的命令意思是,將檔案/usr/bin/sudo擁有者改為root,當執行時以root身份執行,這也是‘4’的含義。如果設定許可權時,勿把“4755” 配置為755,就會出現這個錯誤。

sudo:有效使用者 ID 不是 0,sudo 屬於 root 並設定了 setuid 位嗎?

解決方法呢,就是剛才說的以root(uid=0)身份執行。

在實際環境中,為了防止黑客對root賬戶進行暴力破解,我們通常禁止root賬戶SSH遠端連線。操作如下:

複製程式碼

//修改 /etc/ssh/sshd.config 檔案,
將
#PermitRootLogin yes
修改為
PermitRootLogin no

//重啟sshd服務
systemctl restart sshd.service

複製程式碼

備註:CentOS 7 取消了service 用法,儘管部分情況下還可以使用,但是我就先使用systemctl吧。

  除此之外,我覺得最重要的還是不同使用者間的許可權分配問題。先暫時留下來,以後根據實際情況新增筆記。

  大家,還可以根據引數,依據實際情況配置。大家可以相互交流。