用戶管理與用戶組管理

1./etc/group文件      存放組的基本信息

[root@iz2ze46xi6pjjj69ailg9lz ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
組名:組密碼:GID:組成員

 

 

字段 含義
組名 用戶登陸時所在的組
組密碼 通常不使用
GID 組標識號
組內用戶列表 屬於該組的用戶列表

 

 2./etc/gshadow  組密碼配置

[root@iz2ze46xi6pjjj69ailg9lz ~]# cat /etc/gshadow
root:::
bin:::

 

 

例如:設置組密碼並查看配置文件:linux

[root@iz2ze46xi6pjjj69ailg9lz ~]# gpasswd mygroup  #給mygroup設置密碼
Changing the password for group mygroup
New Password:
Re-enter new password:
[root@iz2ze46xi6pjjj69ailg9lz ~]# grep mygroup /etc/gshadow  #查看/etc/gshadow配置文件
mygroup:$6$wUcog/rKn4p/$fWwlj9.ZQHnpQktuzUXI6iRj4E5I2Yyu3mOaAR9IdqkUhE1hLM8KmeI3
zcIPgNFAyEmLuoWZN7aWXRpjYPjcX0::

 

  組設置密碼的時候也是同用戶設置密碼同樣,先寫到/etc/group中,而後再寫到/etc/gshadow中mongodb

[root@iz2ze46xi6pjjj69ailg9lz ~]# grpunconv   #將/etc/gshadow的密碼反寫到/etc/group中
[root@iz2ze46xi6pjjj69ailg9lz ~]# grep mygroup /etc/group  #查看/etc/group中的組密碼
mygroup:$6$wUcog/rKn4p/$fWwlj9.ZQHnpQktuzUXI6iRj4E5I2Yyu3mOaAR9IdqkUhE1hLM8KmeI3
zcIPgNFAyEmLuoWZN7aWXRpjYPjcX0:888:

 

 

3.組基本管理命令:

  • 添加用戶組
[root@iz2ze46xi6pjjj69ailg9lz ~]# groupadd -g 888 mygroup   #建立用戶組mygroup,GID爲888
[root@iz2ze46xi6pjjj69ailg9lz ~]# grep mygroup /etc/group mygroup:x:888:
  •  刪除用戶組
[root@iz2ze46xi6pjjj69ailg9lz ~]# groupdel mygroup #刪除用戶組
[root@iz2ze46xi6pjjj69ailg9lz ~]# grep mygroup /etc/group
[root@iz2ze46xi6pjjj69ailg9lz ~]#
  • 修改用戶組    groupmod 
[root@iz2ze46xi6pjjj69ailg9lz ~]# groupmod -n mygroup2 mygroup    #將mygroup從新命名爲mygroup2
[root@iz2ze46xi6pjjj69ailg9lz ~]# grep mygroup /etc/group
mygroup2:x:888:
[root@iz2ze46xi6pjjj69ailg9lz ~]#
  • 用戶組管理  gpasswd

gpasswd命令是Linux下工做組文件/etc/group/etc/gshadow管理工具。shell

語法:編程

gpasswd(選項)(參數)

 

選項:centos

-a:添加用戶到組;
-d:從組刪除用戶;
-A:指定管理員;
-M:指定組成員和-A的用途差很少;
-r:刪除密碼;
-R:限制用戶登入組,只有組中的成員才能夠用newgrp加入該組。

 參數:bash

  組:指定要管理的工做組。ssh

 

(0)查看組中有哪些成員:ide

[root@iz2ze46xi6pjjj69ailg9lz ~]# grep mygroup /etc/group
mygroup:x:888:qlq

 

組名:組密碼:GID:組成員    最後的qlq則是組中的成員


查看一個用戶屬於哪一個組:
[root@iz2ze46xi6pjjj69ailg9lz ~]# groups qlq #查看qlq屬於哪一個組
qlq : qlq mygroup

 

或者:
[root@iz2ze46xi6pjjj69ailg9lz ~]# id qlq
uid=1000(qlq) gid=1000(qlq) groups=1000(qlq),888(mygroup)
groups和id若是不加後面的參數默認查詢當前用戶的組信息。


(1)添加用戶到組工具

[root@iz2ze46xi6pjjj69ailg9lz ~]# gpasswd -a qlq mygroup   #添加qlq用戶到mygroup組
Adding user qlq to group mygroup
[root@iz2ze46xi6pjjj69ailg9lz ~]# grep mygroup /etc/group  #查看mygroup組有哪些成員
mygroup:x:888:qlq

(2)從用戶組中刪除用戶ui

[root@iz2ze46xi6pjjj69ailg9lz ~]# gpasswd -d myuser2 root
Removing user myuser2 from group root

 (3)設置組的密碼:

[root@iz2ze46xi6pjjj69ailg9lz ~]# gpasswd mygroup    #設置組密碼
Changing the password for group mygroup
New Password:
Re-enter new password:

 

也能夠將組密碼寫到/etc/gshadow或者/etc/group中:

[root@iz2ze46xi6pjjj69ailg9lz ~]# grpunconv    #將密碼反轉到/etc/group
[root@iz2ze46xi6pjjj69ailg9lz ~]# grep mygroup /etc/group  #查看/etc/group發現帶上密碼信息
mygroup:$6$V/Mkh/dk/NdQk$iOr2BbG/m80pgdODkOxG.5bgQBjMEplhaMCzNgbaPPRd/vEwS8ZycxD
DNeh/3Svek7Z1mraDStryYxndSJbUo0:888:
[root@iz2ze46xi6pjjj69ailg9lz ~]# grep mygroup /etc/gshadow   #查看/etc/gshadow發現文件不存在
grep: /etc/gshadow: No such file or directory
[root@iz2ze46xi6pjjj69ailg9lz ~]# grpconv  #將密碼轉換到/etc/gshadow中
[root@iz2ze46xi6pjjj69ailg9lz ~]# grep mygroup /etc/gshadow  #查看/etc/gshadow,發現帶上密碼信息
mygroup:$6$V/Mkh/dk/NdQk$iOr2BbG/m80pgdODkOxG.5bgQBjMEplhaMCzNgbaPPRd/vEwS8ZycxD  
DNeh/3Svek7Z1mraDStryYxndSJbUo0::
[root@iz2ze46xi6pjjj69ailg9lz ~]# grep mygroup /etc/group  #查看/etc/group發現去掉加密密碼,且變成密碼位
mygroup:x:888:

 

 

  • 其餘基本管理操做

 

(1)groups查看永不屬於哪一個組

例如:

[qlq@iz2ze46xi6pjjj69ailg9lz root]$ groups  #查看當前qlq用戶屬於哪一個組
qlq  
[qlq@iz2ze46xi6pjjj69ailg9lz root]$ newgrp mygroup  #將當前qlq用戶添加到mygroup組中,須要輸入mygroup組的密碼
Password:
[qlq@iz2ze46xi6pjjj69ailg9lz root]$ id  #查看當前用戶的UID以及組信息
uid=1000(qlq) gid=888(mygroup) groups=888(mygroup),1000(qlq)

 

*  groups和id也能夠加其餘用戶名查看其餘用戶的信息:

[qlq@iz2ze46xi6pjjj69ailg9lz root]$ id root
uid=0(root) gid=0(root) groups=0(root) [qlq@iz2ze46xi6pjjj69ailg9lz root]$ groups root root : root

 (2)grpck 檢測用戶組配置文件信息

(3)vigr編輯/etc/group文件,且佔用文件的鎖,其餘用戶不能編輯文件。

 

 

 3.用戶管理基本操做

  •  添加用戶
useradd(選項)(參數)

 

 選項:

-c<備註>:加上備註文字。備註文字會保存在passwd的備註欄位中;
-d<登入目錄>:指定用戶登入時的啓始目錄;
-D:變動預設值;  (查看默認的配置)
-e<有效期限>:指定賬號的有效期限;
-f<緩衝天數>:指定在密碼過時後多少天即關閉該賬號;
-g<羣組>:指定用戶所屬的羣組;
-G<羣組>:指定用戶所屬的附加羣組;
-m:自動創建用戶的登入目錄;
-M:不要自動創建用戶的登入目錄;
-n:取消創建以用戶名稱爲名的羣組;
-r:創建系統賬號;
-s<shell>:指定用戶登入後所使用的shell;
-u<uid>:指定用戶id

 

參數:

   用戶名:要建立的用戶名。

 

例子;

 (1)查看默認配置:

[root@iz2ze46xi6pjjj69ailg9lz ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes 

 (2)添加用戶

[root@iz2ze46xi6pjjj69ailg9lz ~]# useradd -u 888 -g mygroup -c "my user" myuser  #添加用戶指定UID與默認的組,同時添加描述信息
[root@iz2ze46xi6pjjj69ailg9lz ~]# grep myuser /etc/passwd  #查看剛添加的用戶信息
myuser:x:888:888:my user:/home/myuser:/bin/bash
[root@iz2ze46xi6pjjj69ailg9lz ~]# passwd myuser  #設定用戶密碼
Changing password for user myuser.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
[root@iz2ze46xi6pjjj69ailg9lz ~]#

也能夠手工添加修改,修改/etc/passwd與/etc/shadow文件,同時建立宿主目錄。

 

  •  修改用戶   usermod

  usermod命令用於修改用戶的基本信息。usermod命令不容許你改變正在線上的使用者賬號名稱。當usermod命令用來改變user id,必須確認這名user沒在電腦上執行任何程序。你需手動更改使用者的crontab檔。也需手動更改使用者的at工做檔。採用NIS server須在server上更動相關的NIS設定。

 語法;

usermod(選項)(參數)

 

 選項:

-c<備註>:修改用戶賬號的備註文字;
-d<登入目錄>:修改用戶登入時的目錄;
-e<有效期限>:修改賬號的有效期限;
-f<緩衝天數>:修改在密碼過時後多少天即關閉該賬號;
-g<羣組>:修改用戶所屬的羣組;
-G<羣組>;修改用戶所屬的附加羣組;
-l<賬號名稱>:修改用戶賬號名稱;
-L:鎖定用戶密碼,使密碼無效;
-s<shell>:修改用戶登入後所使用的shell;
-u<uid>:修改用戶ID;
-U:解除密碼鎖定。

參數:

  登陸名:指定要修改信息的用戶登陸名。

例子:

[root@iz2ze46xi6pjjj69ailg9lz ~]# usermod -l myuser2 -c "my  user2" myuser   #修改用戶myuser爲myuser2,同時修改描述信息
[root@iz2ze46xi6pjjj69ailg9lz ~]# grep myuser /etc/passwd    #查看信息
myuser2:x:888:888:my  user2:/home/myuser:/bin/bash
[root@iz2ze46xi6pjjj69ailg9lz ~]# usermod -g sys myuser2  #修改myuser2用戶的用戶組爲sys組
[root@iz2ze46xi6pjjj69ailg9lz ~]# grep myuser /etc/passwd
myuser2:x:888:3:my  user2:/home/myuser:/bin/bash

 

  •  刪除用戶    userdel

 語法:

userdel(選項)(參數)

 

 選項:

 -f:強制刪除用戶,即便用戶當前已登陸;

 -r:刪除用戶的同時,刪除與用戶相關的全部文件。

 

參數:

   用戶名:要刪除的用戶名。

 

 例如:

userdel -f qlq
或者
userdel -rf qlq

 

 

 

  • 其餘管理命令

 

 

(1)pwck檢測/etc/passwd文件和/etc/shadow文件

[root@iz2ze46xi6pjjj69ailg9lz ~]# pwck /etc/passwd
user 'ftp': directory '/var/ftp' does not exist
pwck: no changes

或者:

[root@iz2ze46xi6pjjj69ailg9lz ~]# pwck
user 'ftp': directory '/var/ftp' does not exist
pwck: no changes

 

  檢測用戶的基本信息和密碼信息,宿主目錄不存在不是粗,這些目錄是僞用戶的目錄。

(2)vipw 

  編輯/etc/passwd,在編輯的時候其餘用戶不能編輯,相似於word的只能單獨打開一次文檔。

(3)finger    查看某個用戶的詳細登陸信息

[root@VM_0_12_centos ~]# finger qlq #查看qlq用戶的詳細信息
Login: qlq                              Name:
Directory: /home/qlq                    Shell: /bin/bash
Last login Fri Mar 30 18:37 (CST) on pts/0 from 218.26.179.150
No mail.
No Plan.

 

  本地登陸是tty,遠程是pts

(4)su切換(加-的時候環境變量也會跟着變)

例如:不加-的時候切換的仍是root的目錄和環境變量

[root@VM_0_12_centos ~]# su qlq
[qlq@VM_0_12_centos root]$ pwd
/root
[qlq@VM_0_12_centos root]$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/mongodb-linux-x86_6
4-3.0.6/bin/:/root/bin:/usr/local/mongodb-linux-x86_64-3.0.6/bin/

 

 

加-的時候環境變量和目錄頁跟着變爲當前用戶的:

[root@VM_0_12_centos ~]# su - qlq  #加-切換用戶
Last login: Fri Mar 30 19:40:18 CST 2018 on pts/0
[qlq@VM_0_12_centos ~]$ pwd
/home/qlq
[qlq@VM_0_12_centos ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/qlq/.local/bin:/hom
e/qlq/bin

 

 

  注意:root切換普通用戶的時候不須要輸入密碼,普通用戶切換root用戶須要輸入密碼。

     #表明的是超級用戶,$表明的是普通用戶。

(5)查看一個用戶的密碼狀態: passwd -S username 

[root@VM_0_12_centos qlq]# passwd -S qlq
qlq PS 2018-03-30 0 99999 7 -1 (Password set, MD5 crypt.)

 

  顯示的是用戶的密碼信息以及是否鎖定以及超時時間等信息。

 

(6)鎖定用戶與解鎖用戶:

第一種加鎖與解鎖的方法: (passwd -l與passwd -uf )

  • 鎖定用戶 passwd -l
[root@VM_0_12_centos qlq]# passwd -l qlq #鎖定用戶
Locking password for user qlq.
passwd: Success
[root@VM_0_12_centos qlq]# passwd -S qlq  #查看用戶密碼狀態
qlq LK 2018-03-30 0 99999 7 -1 (Password locked.)
[root@VM_0_12_centos qlq]# grep qlq /etc/shadow  #查看/etc/shadow中的用戶密碼
qlq:!!$1$en8QJp5f$00T1TAnX68yvu2LoWztoF0:17620:0:99999:7:::

 

 

鎖定用戶:(發現用戶密碼前面加了兩個感嘆號)

  原理是經過修改/etc/shadow下對應用戶的密碼,致使密碼驗證失敗。因此咱們也能夠手工修改/etc/shadow文件,修改用戶對應的密碼則會致使密碼鎖定。

 

  • 解鎖用戶: passwd -uf username
[root@VM_0_12_centos ~]# passwd -uf qlq #解鎖用戶
Unlocking password for user qlq.
passwd: Success
[root@VM_0_12_centos ~]# passwd -S qlq
qlq PS 2018-03-30 0 99999 7 -1 (Password set, MD5 crypt.)
[root@VM_0_12_centos ~]# grep qlq /etc/shadow  #查看/etc/shadow文件
qlq:$1$en8QJp5f$00T1TAnX68yvu2LoWztoF0:17620:0:99999:7:::

 

解鎖用戶:

  原理是經過將/etc/shadow下對應用戶的密碼前面的兩個感嘆號去掉密碼驗證經過。

 

第二種加鎖與解鎖的方法;(usermod -L 與 usermod -U)

[root@VM_0_12_centos ~]# passwd -S qlq  #鎖定給用戶
qlq PS 2018-03-30 0 99999 7 -1 (Password set, MD5 crypt.)
[root@VM_0_12_centos ~]# usermod -L qlq
[root@VM_0_12_centos ~]# passwd -S qlq
qlq LK 2018-03-30 0 99999 7 -1 (Password locked.)
[root@VM_0_12_centos ~]# grep qlq /etc/shadow
qlq:!$1$en8QJp5f$00T1TAnX68yvu2LoWztoF0:17620:0:99999:7:::
[root@VM_0_12_centos ~]# usermod -U qlq  #解鎖用戶
[root@VM_0_12_centos ~]# passwd -S qlq
qlq PS 2018-03-30 0 99999 7 -1 (Password set, MD5 crypt.)
[root@VM_0_12_centos ~]# grep qlq /etc/shadow
qlq:$1$en8QJp5f$00T1TAnX68yvu2LoWztoF0:17620:0:99999:7:::

 

 注意: 

  這種方法鎖定的時候選項是大寫L與U,同時鎖定的時候在/etc/shadow中用戶棉麻前面加一個!,解鎖去掉前面的一個!

(7)who與w查看當前登陸的用戶信息

  •  w用法:(顯示的信息更全)
[qlq@iz2ze46xi6pjjj69ailg9lz ~]$ w
 20:06:44 up 1 day,  7:55,  2 users,  load average: 1.70, 1.94, 2.17
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      11:58    1:24   0.00s  0.00s -bash
qlq      pts/0    218.26.179.150   20:05    4.00s  0.00s  0.00s w

   顯示了用戶的登陸時間,登陸地址,空閒時間,與CPU信息,較who顯示的信息更全。tty表示本機登陸,pts表示遠程登陸。from表示從何處登陸IDLE表示用戶閒置時間。

 

JCPU:以終端代號來區分,該中斷全部的進程執行時,全部消耗的牀鋪時間會顯示在這裏。

PCPU:CPU執行程序消耗的時間

what:用戶正在執行的動做。 

load average:分別顯示系統在過去1,5,15分鐘內的平均負載值。0.8如下認爲系統運行效率還行。

 

 

 

 

  • who用法:
[qlq@iz2ze46xi6pjjj69ailg9lz ~]$ who
root     tty1         2018-03-30 11:58
qlq      pts/0        2018-03-30 20:05 (218.26.179.150)

 

(8)chage    用來修改賬號和密碼的有效期限。

語法:
chage [選項] 用戶名

 

 選項:

-m:密碼可更改的最小天數。爲零時表明任什麼時候候均可以更改密碼。
-M:密碼保持有效的最大天數。
-w:用戶密碼到期前,提早收到警告信息的天數。
-E:賬號到期的日期。過了這天,此賬號將不可用。
-d:上一次更改的日期。
-i:停滯時期。若是一個密碼已過時這些天,那麼此賬號將不可用。
-l:例出當前的設置。由非特權用戶來肯定他們的密碼或賬號什麼時候過時。

 

例如:查看qlq信息:

[root@iz2ze46xi6pjjj69ailg9lz qlq]# chage  -l qlq
Last password change                                    : Mar 30, 2018
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

 

 

(9)啓動或停用shadow命令:

  pwconv/pwunconv

  grpconv/grpunconv

 

也能夠用authconfig進行修改:

[root@iz2ze46xi6pjjj69ailg9lz qlq]# man authconfig | more
AUTHCONFIG(8)               System Manager's Manual              AUTHCONFIG(8)



NAME
       authconfig,  authconfig-tui  -  an  interface  for  configuring  system
       authentication resources

SYNOPSIS
       authconfig
              [options]   {--update|--updateall|--test|--probe|--restorebackup
              <name>|--savebackup <name>|--restorelastbackup}

DESCRIPTION
       authconfig  provides a simple method of configuring /etc/sysconfig/net‐
       work to handle NIS, as well as /etc/passwd and /etc/shadow,  the  files
       used  for shadow password support.  Basic LDAP, Kerberos 5, and Winbind
       client configuration is also provided.

       If --test action is specified, the authconfig just  reads  the  current
       settings  from the various configuration files and prints their values.

 

 

命令行窗口修改的只能本次生效,若是想永久生效,能夠修改/etc/sysconfig/authconfig ,默認配置以下:

CACHECREDENTIALS=yes
FORCELEGACY=no
FORCESMARTCARD=no
IPADOMAINJOINED=no
IPAV2NONTP=no
PASSWDALGORITHM=sha512
USEDB=no
USEECRYPTFS=no
USEFPRINTD=no
USEHESIOD=no
USEIPAV2=no
USEKERBEROS=no
USELDAP=no
USELDAPAUTH=no
USELOCAUTHORIZE=yes
USEMKHOMEDIR=no
USENIS=no
USEPAMACCESS=no
USEPASSWDQC=no
USEPWQUALITY=yes
USESHADOW=yes
USESMARTCARD=no
USESSSD=yes
USESSSDAUTH=no
USESYSNETAUTH=no
USEWINBIND=no
USEWINBINDAUTH=no
WINBINDKRB5=no

 

4、批量添加用戶:

1.手動批量添加:

 

(1)首選填寫用戶基本信息腳本:(格式相似於/etc/passwd的文件格式)

[root@iz2ze46xi6pjjj69ailg9lz test]# cat ./user.info
qlq1::1001:888::/home/qlq1:/bin/bash
qlq2::1002:888::/home/qlq2:/bin/bash
qlq3::1003:888::/home/qlq3:/bin/bash
qlq4::1004:888::/home/qlq4:/bin/bash
qlq5::1005:888::/home/qlq5:/bin/bash

 

(2)newusers導入用戶

[root@iz2ze46xi6pjjj69ailg9lz test]# newusers < user.info  #導入用戶信息
[root@iz2ze46xi6pjjj69ailg9lz test]# tail -5 /etc/passwd #查看/etc/passwd最後五行
qlq1:x:1001:888::/home/qlq1:/bin/bash
qlq2:x:1002:888::/home/qlq2:/bin/bash
qlq3:x:1003:888::/home/qlq3:/bin/bash
qlq4:x:1004:888::/home/qlq4:/bin/bash
qlq5:x:1005:888::/home/qlq5:/bin/bash

 

(3)編寫密碼文件:(格式爲  用戶名:密碼)

[root@iz2ze46xi6pjjj69ailg9lz test]# cat user.pd
qlq1:qlq1
qlq2:qlq2
qlq3:qlq3
qlq4:qlq4
qlq5:qlq5

 

(4)關閉密碼自動轉換

[root@iz2ze46xi6pjjj69ailg9lz test]# pwunconv

 

(5)導入密碼文件並查看/etc/passwd文件:

[root@iz2ze46xi6pjjj69ailg9lz test]# chpasswd < user.pd
[root@iz2ze46xi6pjjj69ailg9lz test]# tail -5 /etc/passwd
qlq1:$6$PnYbXRveZyv2$S98zfhQzGV2gUHkj./gAV51R1VlQlIQBNarJ/FcfQEu2v4XURJ7luCRIYI2
13NdzuJ9aH.n02lHr27CCbLRHM0:1001:888::/home/qlq1:/bin/bash
qlq2:$6$PMy.cpjGEAFI$jU1U5wln2pu9TCVIAmtrwTFj/PDJljo9Q2pXgte.B.lIvsBZmaD4BJCBPpr
DBvajnQ9N6zt8Uc3A1OJMl/UzV/:1002:888::/home/qlq2:/bin/bash
qlq3:$6$tsOk0/bIkIxuw1f$8K4u5VnKhJt7Ih34yX0MDD/d58Ix9FTsLXkwzG4etbGLRRaMID1HOomm
OKyxD6U4.oOuZq0z7TZnQ/jTaHO2v/:1003:888::/home/qlq3:/bin/bash
qlq4:$6$Vm2wN8YdVN/6$sGGm53KKCPzwtw4NnzXSrTz.OI.3v.cNoV//yQo9P3lHjU8K22s7S5LC9nr
1tkY8qC.bYLxHe7.MW/CptklvW0:1004:888::/home/qlq4:/bin/bash
qlq5:$6$yG6E//cntTS$foihNqZpJyh0So9wflT9sjjGPNZv7GZuS5AJbtk0FdRsaFyu3Hc2U5Rha.7Y
JiaTqmRD/dP1sD8CEJ8Bk3Xeq.:1005:888::/home/qlq5:/bin/bash

 

 (6)開啓密碼自動轉換,密碼寫入/etc/shadow文件:

[root@iz2ze46xi6pjjj69ailg9lz test]# pwconv  #開啓密碼轉換
[root@iz2ze46xi6pjjj69ailg9lz test]# tail -5 /etc/passwd
qlq1:x:1001:888::/home/qlq1:/bin/bash
qlq2:x:1002:888::/home/qlq2:/bin/bash
qlq3:x:1003:888::/home/qlq3:/bin/bash
qlq4:x:1004:888::/home/qlq4:/bin/bash
qlq5:x:1005:888::/home/qlq5:/bin/bash

 

 

2.利用ssh腳本自動添加用戶;

例如:C語言風格的for循環批量添加用戶的腳本:

#!/bin/bash
#adduser batch
echo "please input username:"
read username
echo "please input number to create:"
read number
#start to create user
for(( i=1;i<="${number}";i++ ))
do
        /usr/sbin/adduser "${username}${i}" > /dev/null 2> /dev/null
done
#add finished
echo "add OK!"
echo "please input passwd for users"
read password
for(( i=1;i<="${number}";i++ ))
do
        /usr/sbin/usermod -p "${password}" "${username}${i}"  > /dev/null 2> /dev/null
done

 

結果:

[root@VM_0_12_centos sshDemo]# ./addUserBatch.sh
please input username:
ppp
please input number to create:
20
add OK!
please input passwd for users
123456
[root@VM_0_12_centos sshDemo]# tail -5 /etc/passwd
ppp16:x:1017:1017::/home/ppp16:/bin/bash
ppp17:x:1018:1018::/home/ppp17:/bin/bash
ppp18:x:1019:1019::/home/ppp18:/bin/bash
ppp19:x:1020:1020::/home/ppp19:/bin/bash
ppp20:x:1021:1021::/home/ppp20:/bin/bash
[root@VM_0_12_centos sshDemo]# tail -5 /etc/shadow
ppp16:123456:17622:0:99999:7:::
ppp17:123456:17622:0:99999:7:::
ppp18:123456:17622:0:99999:7:::
ppp19:123456:17622:0:99999:7:::
ppp20:123456:17622:0:99999:7:::

 

 

 

 

例如:批量刪除用戶的腳本:

  解釋:去passwd查找第一列過濾輸入的關鍵詞,而後在第一列中查找關鍵詞,若是查到就輸出給users,最後循環刪除:$?用於判斷上一次命令的返回狀態碼,若是返回0表明正常結束,不然就是失敗!

#!/bin/bash
#delete user batch
echo "please input username word to delete"
read word
#get All users like word*
users=`/usr/bin/grep ${word} /etc/passwd | awk -F: -v word1=${word} 'index($1,wo
rd1)>0 {print $1}'`
if [ "${users}" = '' ]
 then
        echo "user is does not exist!"
        exit 1
fi
for username in ${users}
do
        /usr/sbin/userdel -rf ${username} > /dev/null 2>/dev/null
done
if [ "0" = "$?" ]
        then
        echo "delete ok!"
else
        echo "delete failed!"
fi

 

   解釋:

  通常在shell編程咱們須要將一些打印輸入重定向出來,若是咱們不想看這些結果能夠重定向到/dev/null ,  /dev/null是unix,linux的一個無底洞,咱們重定向進去的東西將永遠也找不回來。錯誤信息也可使用  2> 重定向到/dev/null  ,若是咱們但願本身能夠查看信息,能夠本身制定重定向的文件。

  咱們在程序中可使用"$?"判斷上一個命令的執行結果,若是返回0就是執行成功,不然執行失敗。

  >重定向覆蓋模式,>>是追加模式。

 

 

 

5、重要的用戶權限管理

 1.限定某些人能夠用su命令:(利用組管理權限)

  思路:將一個命令的others的權限去掉,更改命令的所屬組,並將能夠執行命令的用戶添加到這個組中便可實現按組管理命令。

 (1)查看su的權限

[root@iz2ze46xi6pjjj69ailg9lz qlq]# ll `which su`
-rwsr-xr-x 1 root root 32096 Apr 13  2017 /bin/su

 

 (2)去掉su的o的x權限

[root@iz2ze46xi6pjjj69ailg9lz ~]# chmod 4750 `which su`
[root@iz2ze46xi6pjjj69ailg9lz ~]# ll `which su`
-rwsr-x--- 1 root root 32096 Apr 13  2017 /usr/bin/su

 

(3)此時qlq用戶執行su命令報未受權:

[qlq@iz2ze46xi6pjjj69ailg9lz ~]$ su root
Password:
su: Authentication failure

 

(4)建立一個組並賦予將su所屬組改成這個組:

[root@iz2ze46xi6pjjj69ailg9lz qlq]# groupadd sugrp
[root@iz2ze46xi6pjjj69ailg9lz qlq]# chgrp sugrp /bin/su
[root@iz2ze46xi6pjjj69ailg9lz qlq]# ll `which su`
-rwsr-x--- 1 root sugrp 32096 Apr 13  2017 /usr/bin/su

(5)將qlq用戶添加到這個組

[root@iz2ze46xi6pjjj69ailg9lz qlq]# usermod -g sugrp qlq
[root@iz2ze46xi6pjjj69ailg9lz qlq]# id qlq
uid=1000(qlq) gid=1001(sugrp) groups=1001(sugrp)

(6)qlq執行su命令:

[qlq@iz2ze46xi6pjjj69ailg9lz ~]$ su root
Password:
[root@iz2ze46xi6pjjj69ailg9lz qlq]# ls

 

(7)qlq11用戶執行su命令沒權限;(不在組內)

[qlq11@iz2ze46xi6pjjj69ailg9lz qlq]$ id
uid=1006(qlq11) gid=1006(qlq11) groups=1006(qlq11)
[qlq11@iz2ze46xi6pjjj69ailg9lz qlq]$ su qlq
bash: /usr/bin/su: Permission denied

 

 

 

2.利用sudo命令來管理權限,防止su暴露root密碼:   (sudo用法)

  更具體的參考:http://blog.51cto.com/chenfage/1830424

 

(1)將su命令的others的權限置爲0,全部用戶不能執行su命令

[root@VM_0_12_centos ~]# ll `which su`
-rwsr-x--- 1 root root 32096 Apr 13  2017 /usr/bin/su

 

(2)qlq11執行su命令:

[qlq11@VM_0_12_centos root]$ su qlq
bash: /usr/bin/su: Permission denied

 

(3)編輯sudo命令,使qlq11可使用sudo命令(重點)

  • 區別

sudo:可讓普通用戶擁有root權限去執行命令,sudo的配置文件是/etc/sudoers。

visudo:經過visudo編輯/etc/sudoers,能夠檢查語法。

  • 參數說明      sudo

-l:查看受權狀況,列出用戶在主機上可用的和被禁止的命令※

-k:刪除時間戳,時間戳默認5分鐘也會失效

-u:指定某個用戶身份去執行特定的命令操做

 

例如:root利用visudo編輯/etc/sudoers文件:

語法格式:

 

  用戶名    主機=命令(絕對命令)

 

 

 

 

  1. 在/etc/sudoers最後一行加入下列命令:
[root@VM_0_12_centos ~]# tail -1 /etc/sudoers
qlq11 ALL=/usr/bin/su     #qlq11能夠在任何主機執行/usr/bin/su命令,多個命令能夠用參數隔開

 

 

  上面的qlq11表示用戶名,ALL是主機別名,表示在任何主機,後面的是命令的全路徑,多個命令用逗號隔開,也能夠具體到某個選項。

 

注意:咱們在/etc/sudoers中能夠看到   下面root的配置,所以root能夠不接收任何權限的限制。

[root@VM_0_12_centos ~]# grep root /etc/sudoers
## the root user, without needing the root password.
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
## cdrom as root

 

若是咱們但願qlq用戶用sudo執行任何命令能夠加一會

## Allow root to run any commands anywhere
qlq    ALL=(ALL)       ALL

 

 

 

 

 

    2.qlq11用戶查看本身能夠執行的sudo命令並執行su命令(不會暴露root的密碼)

[qlq11@VM_0_12_centos root]$ su   #直接執行會報錯
bash: /usr/bin/su: Permission denied
[qlq11@VM_0_12_centos root]$ su root
bash: /usr/bin/su: Permission denied     
[qlq11@VM_0_12_centos root]$ /usr/bin/su root
bash: /usr/bin/su: Permission denied
[qlq11@VM_0_12_centos root]$ sudo -l   #查看本身能夠以root身份執行的命令
[sudo] password for qlq11:
Matching Defaults entries for qlq11 on VM_0_12_centos:
    !visiblepw, always_set_home, match_group_by_gid, env_reset,
    env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
    env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
    env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
    env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User qlq11 may run the following commands on VM_0_12_centos:
    (root) /usr/bin/su
[qlq11@VM_0_12_centos root]$ sudo su root    #以sudo執行sudo命令
[root@VM_0_12_centos ~]#

 

 

  總結:sudo命令實際是去/etc/sudoers裏面查看用戶能夠以sudo執行哪些命令,root用戶配置了在任何地點以執行任何命令,所以root的權限不受限制,這也是root是最大的管理員的緣由。

    sudo是讓普通用戶以root的身份執行一個命令,用sudo -l 也能夠看到命令前面加的有(root),這個命令不必定是root才能使用的命令,也能夠是一個普通的命令;

    sudo能夠精確化,甚至能夠具體到一個帶參數與選項的命令。例如咱們可讓一個用戶立馬關機命令,咱們能夠在/etc/sudoers裏面配置: username ALL=/sbin/shutdown -h now 

相關文章
相關標籤/搜索