用戶管理命令(8)

命令(15個)linux

useradd,usermod,userdel,groupadd,groupdel,groupmod,newgrp,gpaswd,chage,passwd,id,su,visudo,sudo,mkpasswdshell


8.1.useradd數據庫

功能:添加新用戶或更新新用戶信息
vim

語法: useradd 選項 用戶名
centos

經常使用參數:
安全

-u:用戶uid
bash

-g:用戶的主組
服務器

-G:附加組
網絡

-s:默認shell
app

-d:家目錄

-D:變動預設值

-c:註釋說明

-e:過時時間

-f: <緩衝天數> 指定在密碼過時後多少天即關閉該帳號。

-m:自動創建用戶的家目錄。

-M: 不要自動創建用戶的家目錄。

-n:取消創建以用戶名爲名的用戶組。

-r: 創建系統帳戶。 


在知道怎麼使用這個命令前,先普及一些基礎知識:

用戶標識:UserID,UID,共65535個;

管理員(root):0

系統用戶:

                 centos5,6:1-499

                 centos  7:1-999

普通用戶:

                    centos5,6:500+

                    centos 7:1000+

用戶管理相關的文件:

/etc/passwd

/etc/shadow

/etc/group

/etc/gshadow


說明:

系統默認給一個家 /home/$username 家裏還添置了一些傢俱

指定默認shell(能不能登陸操做系統)

# cat /etc/shells

/bin/sh 早期unxi

/bin/bash  系統默認的shell(能夠登陸操做系統)

/sbin/nologin  非交互式shell(不能登陸操做系統)

/bin/dash

/bin/tcsh

/bin/csh


默認還會指定uid和gid(建立一個主組)


示例:

[root@localhost ~]# useradd -u 4294967295 user2  #不成功,報錯,證實uid數超過最大值
useradd: invalid user ID '4294967295'
[root@localhost ~]# useradd -u 4294967294 user2  #成功,這個數就是就是當前版本支持的最大uid數
[root@localhost ~]# 
[root@localhost ~]# useradd -u 1001 -g 1001 -d /home/abc/user03  user03
useradd: group '1001' does not exist
[root@localhost ~]# id user03
id: user03: No such user
[root@localhost ~]# useradd -u 1001 -g 1001 -d /home/abc/user03  user03
useradd: cannot create directory /home/abc/user03
[root@localhost ~]# id user03
id: user03: No such user
[root@localhost ~]# mkdir /home/abc
[root@localhost ~]# useradd -u 1001 -g 1001 -d /home/abc/user03  user03
[root@localhost ~]# id user03
uid=1001(user03) gid=1001(admin) groups=1001(admin)
[root@localhost ~]# su - user03
[user03@localhost ~]$ pwd
/home/abc/user03
[root@localhost ~]# useradd -s /sbin/nologin -d /rhome/abc/ -c 'zidingyi' user04
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
[root@localhost ~]# su - user04
This account is currently not available.
[root@localhost ~]# usermod -s /bin/bash user04
[root@localhost ~]# su  - user04
-bash-4.1$ pwd
/rhome/abc/
-bash-4.1$ logout
[root@localhost ~]# cp -a /etc/skel/. /rhome/abc/
[root@localhost ~]# su - user04


幾個小實驗:

(1)去掉/etc/passwd裏root用戶第二列的x,確認登陸系統不須要密碼,加回x,密碼不變

[root@localhost ~]# sed -i '1s/x//' /etc/passwd
說明:驗證登陸是沒有密碼了
[root@localhost ~]# sed -i '1s/root::/root:x:/' /etc/passwd  #加回去
[root@localhost ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash

(2)普通用戶只能本身改本身的密碼,還須要原密碼才能改,改的密碼還要必定的密碼複雜度(最少8位,字母,數字,符號最好都有就沒問題)

(3)用一個普通用戶來測試/etc/shadow裏的第四列

步驟一:第四列爲0,這個普通用戶隨時能夠修改本身的密碼

步驟二:把0改成2,這個普通用戶改密碼會報You must wait longer to change your password的錯誤

步驟三:可使用date -s "20140719"這樣的命令把當前時間改爲3天后,再去測試,發現能夠改了,驗證成功;時間改回來的例子# date -s "20140716 15:12:10"

以user04爲例
[root@localhost ~]# tail -1 /etc/shadow   #第四列爲0
user04:$6$3Ujgmfgh$cbbnJKG24jTL2CjjbNngiknKJhGpbaITrakxGPxDu05aCGzCR.i/.nDUzvEB/.a4YbXw5tp4HXbkKh0eaIGf00:17339:0:99999:7:::
[root@localhost ~]# tail -1 /etc/shadow  #第四列改成2
user04:$6$3Ujgmfgh$cbbnJKG24jTL2CjjbNngiknKJhGpbaITrakxGPxDu05aCGzCR.i/.nDUzvEB/.a4YbXw5tp4HXbkKh0eaIGf00:17339:2:99999:7:::
[user04@localhost ~]$ passwd   #報錯了
Changing password for user user04.
Changing password for user04.
(current) UNIX password: 
You must wait longer to change your password
passwd: Authentication token manipulation error
[root@localhost ~]# date -s "20170625 11:43:40"  #修改日期
Sun Jun 25 11:43:40 CST 2017
[root@localhost ~]# date
Sun Jun 25 11:43:42 CST 2017
[user04@localhost ~]$ passwd
Changing password for user user04.
Changing password for user04.
(current) UNIX password: 
New password: 
Retype new password: 
Sorry, passwords do not match.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@localhost ~]# date -s "20170622 11:47:40"  #改回日期
Thu Jun 22 11:47:40 CST 2017
[root@localhost ~]# date
Thu Jun 22 11:47:42 CST 2017

(4)驗證/etc/shadow裏的第8列

步驟一:以測試user1用戶爲列,把它在shadow裏的第8列改爲16266(這至關於今天來講是昨天就過時了)

步驟二:先用su - test切換另外一個普通用戶,再用這個普通用戶來su - user1切換user1,輸入正確密碼,但報下面的錯誤

$ su - user1
Password: 
Your account has expired; please contact your system administrator
su: incorrect password

8.2.userdel

功能說明:刪除用戶帳號。

若是一個用戶的帳號再也不使用,能夠從系統中刪除。刪除用戶帳號就是要將/etc/passwd等系統文件中的該用戶記錄刪除,必要時還刪除用戶的主目錄。刪除一個已有的用戶帳號使用userdel命令。

語法:userdel 選項 用戶名

參數:

         -r 它的做用是把用戶的主目錄一塊兒刪除。

         -f 刪除用戶家目錄以及目錄中全部文件。

示例

# userdel -r sam

8.3.usermod

功能說明:修改用戶信息

語法:usermod 選項 用戶名

經常使用選項:

-u:用戶uid

-g:用戶的主組

-G:附加組

-s:默認shell

-d:家目錄

-c:註釋說明

補充說明:

用戶信息相關的配置文件:

/etc/passwd  存放用戶相關信息

/etc/shadow  存放用戶密碼相關信息

$home   用戶的家目錄


man 5 passwd

/etc/passwd

account:password:UID:GID:GECOS:directory:shell

帳號:密碼:UID:GID:註釋說明:家目錄:默認的登陸shell

--vim /etc/passwd

root:x:0:0:root:/root:/bin/bash

第一列: 用戶名

第二列:密碼     老版本這裏放的就是密碼,爲了安全性考慮,密碼放到了/etc/shadow的第二列

        x表明/etc/shadow的第二列生效,去掉x就表示此用戶登陸的時候沒有密碼

第三列:uid     用戶識別ID值,系統是經過這個值來確認是哪一個用戶

第四列:gid     組識別ID值

第五列:描述項   comment

第六列:家目錄   

第七個:bash    當前用戶使用的bash


/bin/bash      表示此用戶使用bash,用戶能夠登陸系統,能夠收郵件,能夠登陸FTP

/sbin/nologin  表示用戶不能登陸系統,能夠收郵件,能夠登陸FTP

/bin/false     表示用戶不能登陸系統,能夠收郵件,不能登陸FTP



/etc/shadow

--vim /etc/shadow

root:$1$.1RfCu/n$ModWntxLJRC6SpgAXSDO81:14694:0:99999:7:::

與/etc/passwd相對應 (但這裏有九列)

第一列:login name 用戶名

第二列:encrypted password 密碼   (這裏以*號開頭或!開頭默認是不能登錄的)!!表明空密碼,未設置密碼

第三列:date of last password change 上一次修改密碼的時間,linux以1970年1月1日到如今的天數來算的,等於0表明下一次登陸操做系統強制修改密碼

# date --date='1970-01-01 +16896days'

Tue Apr  5 00:00:00 CST 2016

第四列:minimum password age 修改密碼後幾天內不容許再修改,若是這裏爲5,那改過密碼後5天內不能再修改 0表明不限制(只對普通用戶有效)

第五列:maximum password age 多少天內必需要求你改,30表明每隔30天更新一次密碼; 默認永遠不更新,99999表明不限制

第六列:password warning period 過時前幾天給你一個告警信息,7表明密碼過時前7天發出警告

第七列:password inactivity period,密碼過時後還給的一個寬限天數,3表明密碼過時後3天內依然能夠登陸操做系統;過了3天后賬號被封鎖。

第8列: account expiration date 這裏能夠寫一個過時天數,這裏也是以1970年1月1日到如今的天數來計算的,多用於收費系統

第九列:reserved field 保留,留着之後功能擴展


8.4.passwd

功能說明:更新用戶的身份驗證令牌

語法:passwd 選項 用戶名

補充說明:passwd指令讓用戶能夠更改本身的密碼,而系統管理者則能用它管理系統用戶的密碼。只有管理者能夠指定用戶名稱,通常用戶只能變動本身的密碼。

(1)passwd:修改當前用戶密碼;

(2)passwd  username:修改其餘用戶的密碼,僅root有此權限;

參數:

-l 鎖定口令,即禁用帳號。

-u 口令解鎖。

-d 使帳號無口令。

-f 強迫用戶下次登陸時修改口令,若是默認用戶名,則修改當前用戶的口令。

-k 設置只有在密碼過時失效後,方能更新。

-s 列出密碼的相關信息。

--stdin:從標準輸入接收密碼;

echo "PASSWORD" |passwd --stdin  USERNAME

以下圖:


示例:

[root@localhost ~]# passwd -d user03  #刪除用戶密碼
Removing password for user user03.
passwd: Success
# passwd -l sam
[root@localhost ~]# passwd -l user04  #鎖定用戶
Locking password for user user04.
passwd: Success


8.5.chage

功能說明:更改用戶密碼過時信息

# chage --help

Usage: chage [options] [LOGIN]

經常使用選項:

-d, --lastday 最後一次更改密碼的時間

-E, --expiredate 賬號的過時時間

-h, --help 顯示這個幫助消息和退出

-I, --inactive  寬限期 (注意這裏是大寫i)

-l, --list 查看用戶密碼信息

-m, --mindays 密碼的最小生存週期

-M, --maxdays 密碼的最大生存週期

-W, --warndays 密碼過時前幾天發出警告

示例:

[root@localhost ~]# chage -l user03  #列出用戶密碼的信息
Last password change                    : Jun 22, 2017
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

root@localhost ~]# chage -d 0 user03用戶下一次登陸操做系統強制修改密碼


8.6.groupadd

功能:增長用戶組

語法:groupadd 選項 用戶組

經常使用選項:

-g:指定gid

-o:指定相同的gid, 通常與-g選項同時使用,表示新用戶組的GID能夠與系統已有用戶組的GID相同

-r:指定組管理員

groupadd --help 查看

/etc/group 組信息

組名:組密碼:組id:組成員

示例:

[root@localhost ~]# groupadd group1
[root@localhost ~]# groupadd -g 101 group2

8.7.groupdel

功能:刪除用戶組

語法:groupdel 用戶組

示例:

[root@localhost ~]# groupdel group1


8.8.groupmod

功能:修改組屬性

語法:groupmod 選項 用戶組

經常使用選項:

-g GID 爲用戶組指定新的組標識號。

-o 與-g選項同時使用,用戶組的新GID能夠與系統已有用戶組的GID相同。

-n 新用戶組 將用戶組的名字改成新名字

示例:

[root@localhost ~]# groupmod -g 102 group2
[root@localhost ~]# groupmod -g 10000 -n group3 group2

8.9.newgrp

功能:登錄到一個新組

語法:newgrp [-] [group]

示例:

[root@localhost ~]# usermod  -G root user03
[root@localhost ~]# id user03
uid=1001(user03) gid=1001(admin) groups=1001(admin),0(root)
[user03@localhost ~]$ newgrp  root #一個用戶有多個組,就能夠用newgrp進行切換當前組


8.10.gpasswd

功能:爲組添加密碼

組密碼文件:/etc/gshadow

gpasswd 【選項】 group

經常使用參數:

                    -a USERNAME:把用戶添加至組中;

                    -d USERNAME:今後組中移除此用戶;

                    -r USER_NAMEG : 刪除組的密碼

# gpasswd --help


示例:

[root@localhost ~]# groupadd -g 10015 group1
[root@localhost ~]# gpasswd -a user03 group1
Adding user user03 to group group1
[root@localhost ~]# id user03
uid=1001(user03) gid=1001(admin) groups=1001(admin),0(root),10015(group1)
[root@localhost ~]# gpasswd -d user03 group1
Removing user user03 from group group1
[root@localhost ~]# gpasswd -M user03,user04 group1
[root@localhost ~]# id user03
uid=1001(user03) gid=1001(admin) groups=1001(admin),0(root),10015(group1)
[root@localhost ~]# id user04
uid=1002(user04) gid=1002(user04) groups=1002(user04),10015(group1)


8.11.id

功能:打印真實有效的用戶和組ID

語法格式:id [OPTION]... [USERNAME]

經常使用選項:

打印指定USERNAME或者當前的用戶和組信息

-a  忽略,爲了與其餘版本的兼容性

-Z,--context  只打印當前用戶的安全上下文

-g,--group  只打印有效的組ID

示例:

[root@localhost ~]# id -g
0
-G,--groups  打印全部的組【附加組】ID
-n,--name  打印名稱而不是數字。適用於 -ugG
[root@localhost ~]# id -nug user_00
id: cannot print "only" of more than one choice
[root@localhost ~]# id -ng user_00
user_00
[root@localhost ~]# id -nu user_00
user_00
[root@localhost ~]# id -n user_00
id: cannot print only names or real IDs in default format
  -r,--real  打印真實的ID替代有效的ID。  對-ugG 而言
[root@localhost ~]# id -r
id: cannot print only names or real IDs in default format
[root@localhost ~]# id -ru
0
[root@localhost ~]# id -rg user_00
502
[root@localhost ~]# id -rG
0
[root@localhost ~]# id -ruG
id: cannot print "only" of more than one choice
-u,--user  只打印用戶有效的ID
[root@localhost ~]# id -u user_00
502


8.12.su

功能:變動用戶身份(super user)

切換用戶時:

切換用戶時:

(1) 不讀取目標用戶的配置文件(非登陸式切換,半切換);

su  USERNAME

(2) 讀取目標用戶的配置文件(登陸式切換,徹底切換);

su  -l  USERNAME

su  -  USERNAME

注意:root切換至任何其它用戶無須認證密碼;普通用戶切換至其它用戶,都須要密碼;


8.13.visudo

功能:編輯sudoer文件

sudo的工做過程以下:

1,當用戶執行sudo時,系統會主動尋找/etc/sudoers文件,判斷該用戶是否有執行sudo的權限

2,確認用戶具備可執行sudo的權限後,讓用戶輸入用戶本身的密碼確認

3,若密碼輸入成功,則開始執行sudo後續的命令

4,root執行sudo時不須要輸入密碼(eudoers文件中有配置root ALL=(ALL) ALL這樣一條規則)

5,若欲切換的身份與執行者的身份相同,也不須要輸入密碼

sudo的目的:爲非根用戶授予根用戶的權限;

配置文件:/etc/sudoers

visudo命令編輯修改/etc/sudoers配置文件

visudo使用vi打開/etc/sudoers文件,可是在保存退出時,visudo會檢查內部語法,避免用戶輸入錯誤信息

visudo須要root權限

[hadoop@localhost ~]$ visudo  
visudo:/etc/sudoers:權限不夠  
visudo:/etc/sudoers:權限不夠
使用visudo命令打開sudo配置文件
 
## Sudoers allows particular users to run various commands as  the root user, without needing the root password.  #容許特定用戶像root用戶同樣使用各類各樣的命令,而不須要root密碼 
##  
## Examples are provided at the bottom of the file for collections of related commands, which can then be delegated out to particular users or groups. # 在文件的底部提供了不少相關命令的示例以供選擇,這些示例均可以被特定用戶或用戶組所使用  
##  
## This file must be edited with the 'visudo' command.  該文件必須使用"visudo"命令編輯  
  
## Host Aliases  
## Groups of machines. You may prefer to use hostnames (perhaps using  
## wildcards for entire domains) or IP addresses instead.  
## 對於一組服務器,你可能會更喜歡使用主機名(多是全域名的通配符)  
## 、或IP地址,這時能夠配置主機別名  
# Host_Alias    FILESERVERS = fs1, fs2  
# Host_Alias    MAILSERVERS = smtp, smtp2  
  
## User Aliases  
## These aren't often necessary, as you can use regular groups  
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname  
## rather than USERALIAS  
## 這並不很經常使用,由於你能夠經過使用組來代替一組用戶的別名  
# User_Alias ADMINS = jsmith, mikem  
  
## Command Aliases  
## These are groups of related commands...  
## 指定一系列相互關聯的命令(固然能夠是一個)的別名,經過賦予該別名sudo權限,  
## 能夠經過sudo調用全部別名包含的命令,下面是一些示例  
  
## Networking 網絡操做相關命令別名  
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient  
, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig  
, /sbin/mii-tool  
  
## Installation and management of software 軟件安裝管理相關命令別名  
# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum  
  
## Services 服務相關命令別名  
# Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig  
  
## Updating the locate database 本地數據庫升級命令別名  
# Cmnd_Alias LOCATE = /usr/bin/updatedb  
  
## Storage 磁盤操做相關命令別名  
# Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe  
, /bin/mount, /bin/umount  
  
## Delegating permissions 代理權限相關命令別名  
# Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp  
  
## Processes 進程相關命令別名  
# Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall  
  
## Drivers 驅動命令別名  
# Cmnd_Alias DRIVERS = /sbin/modprobe  
  
# Defaults specification  
  
#  
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.  
#        You have to run "ssh -t hostname sudo <cmd>".  
# 一些環境變量的相關配置,具體狀況可見man soduers  
Defaults    requiretty  
  
Defaults    env_reset  
Defaults    env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"  
Defaults    env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"  
Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"  
Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"  
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"  
  
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin  
  
## Next comes the main part: which users can run what software on  
## which machines (the sudoers file can be shared between multiple  
## systems).  
## 下面是規則配置:什麼用戶在哪臺服務器上能夠執行哪些命令(sudoers文件能夠在多個系統上共享)  
## Syntax(語法):  
##  
##  user    MACHINE=COMMANDS 用戶 登陸的主機=(能夠變換的身份) 能夠執行的命令  
##  
## The COMMANDS section may have other options added to it.  
## 命令部分能夠附帶一些其它的選項  
##  
## Allow root to run any commands anywhere  
## 容許root用戶執行任意路徑下的任意命令  
root    ALL=(ALL)  ALL  
  
## Allows members of the 'sys' group to run networking, software,  
## service management apps and more.  
## 容許sys中戶組中的用戶使用NETWORKING等全部別名中配置的命令  
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE  
, DRIVERS  
  
## Allows people in group wheel to run all commands  
## 容許wheel用戶組中的用戶執行全部命令  
%wheel  ALL=(ALL)  ALL  
  
## Same thing without a password  
## 容許wheel用戶組中的用戶在不輸入該用戶的密碼的狀況下使用全部命令  
# %wheel    ALL=(ALL)  NOPASSWD: ALL  
  
## Allows members of the users group to mount and unmount the  
## cdrom as root  
## 容許users用戶組中的用戶像root用戶同樣使用mount、unmount、chrom命令  
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom  
  
## Allows members of the users group to shutdown this system  
## 容許users用戶組中的用戶關閉localhost這臺服務器  
# %users  localhost=/sbin/shutdown -h now  
  
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)  
## 讀取放置在/etc/sudoers.d/文件夾中的文件(此處的#不意味着這是一個聲明)  
#includedir /etc/sudoers.d  

特別要注意的是別名必定要使用大寫

示例:
1)通常用戶賦權設置:
[root@localhost ~]# visudo
76 root    ALL=(ALL)      ALL77 test  ALL=(root) /usr/sbin/useradd    #新增長用戶行

說明:
第一字段:root爲能使用sudo命令的用戶;
第二字段:第一個ALL爲容許使用sudo的主機,第二個括號裏的ALL爲使用sudo後以什麼身份(目的用戶身份)來執行命令;
第三字段:ALL爲以sudo命令容許執行的命令;
第四字段:test  ALL=(root) /usr/sbin/useradd,表示容許test用戶從任何主機登陸,以root的身份執行/usr/sbin/useradd命令。
用戶執行命令效果:
[root@server ~]# su - redhat
[redhat@server ~]$ sudo /usr/sbin/useradd test  #命令須要輸入完整的路徑
口令:                                    #這裏輸入用戶redhat本身的密碼
[redhat@server ~]$ cat /etc/passwd |tail -5
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin
sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin
redhat:x:500:500::/home/redhat:/bin/bash
test:x:501:501::/home/test:/bin/bash            #新增長的用戶

2)sudo配置深刻
1)多個用戶的設置(非同一羣組用戶):
 對於不一樣需求的用戶:能夠按照上面的方法依次增長多行,每行對應一個用戶。
 對於相同需求的多個用戶
 User_Alias UUU=user1,user2……            定義用戶別名;
[root@localhost ~]# visudo
20 # User_Alias ADMINS = jsmith, mikem      #這個就是一個實例行,按照這個寫本身的
21 User_Alisa sudouser=user1,user2,user3,user4 #第一一個別名suduouser
76 root    ALL=(ALL)      ALL77 sudouser  ALL=(root)    /usr/sbin/useradd  #命令行書寫格式,用戶列用別名


對於多個命令的設置:
Cmnd_Alias CCC=command1,command2……          定義命令別名;
[root@localhost ~]# visudo
27 Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dh        client, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial,        /sbin/iwconfig, /sbin/mii-tool                                                    //多個命令定義一個命令別名;
76 root    ALL=(ALL)      ALL77 sudouser  ALL=(root)    NETWORKING  //命令行書寫格式,命令列用別名
對於多主機的設置和多登錄角色的設置:
修改 Host_Alias HHH=host1,host2……  定義主機別名;
修改後對應的命令行主機列位置也是用別名
Runas_Alias  RRR=role1,role2……                定義runas別名,指定的是「目的用戶」,即sudo 容許轉換至的用戶;
        創建相關別明後,相關命令行相應的列也是用咱們定義的別名。
 2)多個用戶的設置(同一羣組用戶): 
[root@localhost ~]# visudo
82## Allows people in group wheel to run all commands
83# %wheel        ALL=(ALL)      ALL        //用戶列%+羣組名

8.14.sudo

功能說明:用來以其餘用戶來執行命令

經常使用選項:

-b:在後臺執行指令;

-h:顯示幫助;

-H:將HOME環境變量設爲新身份的HOME環境變量;

-k:結束密碼的有效期限,也就是下次再執行sudo時便須要輸入密碼;。

-l:列出目前用戶可執行與沒法執行的指令;

-p:改變詢問密碼的提示符號;

-s:執行指定的shell;

-u<用戶>:以指定的用戶做爲新的身份。若不加上此參數,則預設以root做爲新的身份;

-v:延長密碼有效期限5分鐘;  由於sudo在第一次執行時或是在N分鐘內沒有執行(N預設爲5)會詢問密碼。這個參數是從新作一次確認,若是超過N分鐘,也會問密碼。

-V :顯示版本信息。

8.15.mkpasswd

mkpasswd命令生成隨機複雜密碼,前提安裝expect,而後執行mkpasswd命令便可生成隨機的密碼

安裝:

[root@localhost scripts]# yum install -y expect

經常使用選項

-l #      (密碼的長度定義, 默認是 9)

-d #      (數字個數, 默認是 2)

-c #      (小寫字符, 默認是 3)

-C #      (大寫字符, 默認是 2)

-s #      (特殊字符, 默認是  1)

-v        (詳細。。。)

-p prog  (程序設置密碼, 默認是 passwd)

示例:

建立了一個長度爲20位,包括數字個數,包含小寫字母個數,包含大寫字母個數,包含特殊符號個數。
#  mkpasswd  -l 20 -d 5 -c 5 -C 5 -s 5 
Z}K7hp0UPJ6v@&,c5{d3

 

練習一:

1 )創建一個組,名字爲admin,組id爲900

groupadd admin
groupmod -g 900 admin
或者
groupadd -g 900 admin

2)創建一個用戶tom,而且將admin組做爲tom用戶的附加組(創建用戶的時候完成),密碼是123

useradd -G 900(或者admin)tom
echo 123 |passwd --stdin tom

3)創建一個用戶爲jack,要求在創建用戶後將jack加入到admin組裏,密碼爲123

useradd jack
gpasswd -a jack admin
echo 123 |passwd --stdin jack

4)給admin組設置一個密碼,爲123

gpasswd admin
測試:
newgrp admin

5)把tom用戶設定爲admin組的管理員

gpasswd -A tom admin
測試:
su - tom
gpasswd -d user1 admin

練習二:

1)添加3個用戶,harry,natash,sarsh。要求harry,natash用戶的附加組爲admin組,sarsh用戶的默認shell爲非交互式,密碼均爲123.

方法一:
useradd -G admin harry
useradd -G admin natash
useradd -s /sbin/nologin sarsh
echo 123 |passwd --stdin harry
方法二:
useradd harry
usermod -G admin harry
。。。

2)修改haryy用戶的家目錄爲/home/uplooking/redhat/harry

mkdir /home/uplooking/redhat -p
usermod -m -d /home/uplooking/redhat/harry harry

或者練習:

一、將/etc/passwd文件拷貝到/tmp目錄下面。在/tmp/passwd文件的第15行下添加「hello uplooking」,並複製其下5行,粘貼在文件的最下面,保存。而後全文搜索將「/bin/bash」替換成uplooking,並保存後面20行到/tmp/passwd.bak文件中,退出編輯。

二、找出/etc/下面的全部目錄並將其重定向到/tmp/etcdir文件裏

三、在/tmp/etcdir文件中追加「好好學習,每天向上」,而後把/etc/passwd文件的內容添加到/tmp/etcdir文件裏,並重命名爲newetcdir

mkdir /home/uplooking/redhat/harry
usermod -d /home/uplooking/redhat/harry harry
cp -a /etc/skel/. /home/uplooking/redhat/harry

說明:

usermod命令修改家目錄,家目錄的上一級目錄必須存在,家目錄自己系統會自動建立;若是不存在須要建立。

3)修改natash,sarsh用戶的主組爲uplooking,而且能夠登陸操做系統

groupadd uplooking
usermod -g uplooking natash
usermod -g uplooking -s /bin/bash sarsh

練習三:

一、新建一個公司uplooking,該公司有3個部門cw、rs、sc;每一個部門要求創建2個用戶,如cw01,cw02..;boss01管理公司全部部門,全部用戶的密碼均爲123456

groupadd uplooking
groupadd cw
groupadd rs
groupadd sc
useradd cw01 -g cw -G uplooking
useradd boss01 -g uplooking -G cw,rs,sc
echo 123456|passwd --stdin cw01
...

二、全部用戶賬號的有效期爲3個月(90天),第一次登陸操做系統強制修改密碼,每隔15天更新一次密碼

chage -l cw01
chage -E "$(date +%Y%m%d --date='90 days')" -d 0 -M 15 cw01
或者
date +%F --date='90 days'
2016-07-04
# chage -E '2016-07-04' -d 0 -m 3 cw01

練習四:

批量添加用戶

(1)編輯一個文本用戶文件test.txt,每一列按照/etc/passwd格式書寫,注意用戶名、UID、宿主目錄都不能相同,其中密碼欄能夠空白或輸入x,內容以下:

[root@localhost scripts]# cat test.txt
user001::600:100:user:/home/user001:/bin/bash
user002::601:100:user:/home/user002:/bin/bash
user003::602:100:user:/home/user003:/bin/bash
user004::603:100:user:/home/user004:/bin/bash
user005::604:100:user:/home/user005:/bin/bash
user006::605:100:user:/home/user006:/bin/bash

(2)以root身份執行命令/usr/sbin/newusers,從剛建立的用戶文件user.txt中導入數據,建立用戶:

[root@localhost scripts]# newusers < test.txt
[root@localhost scripts]# tail -6 /etc/passwd
user001:x:600:100:user:/home/user001:/bin/bash
user002:x:601:100:user:/home/user002:/bin/bash
user003:x:602:100:user:/home/user003:/bin/bash
user004:x:603:100:user:/home/user004:/bin/bash
user005:x:604:100:user:/home/user005:/bin/bash
user006:x:605:100:user:/home/user006:/bin/bash

(3)執行命令/usr/sbin/pwunconv,將/etc/shadow產生的shadow密碼解碼,而後回寫到/etc/passwd中,並將/etc/shadow的shadow密碼欄刪掉。這是爲了方便下一步的密碼轉換工做,即先取消shadow password功能。

[root@localhost scripts]# pwunconv

(4)編輯密碼文件passwd.txt

[root@localhost scripts]# cat > passwd.txt
user001:d69f8c
user002:29fe48  
user003:e9004b
user004:4471ef
user005:7668c0
user006:b04f19

(5)以root身份執行命令/usr/sbin/chpasswd,建立用戶密碼,chpasswd會將通過/usr/bin/passwd命令編碼過的密碼寫入/etc/passwd的密碼欄。

[root@localhost scripts]# chpasswd  < passwd.txt

(6)肯定密碼經編碼寫入/etc/passwd的密碼欄後,執行命令/usr/sbin/pwconv將密碼編碼爲shadow password,並將結果寫入/etc/shadow。

[root@localhost scripts]# pwconv 
[root@localhost scripts]# tail -6 /etc/passwd
user001:x:600:100:user:/home/user001:/bin/bash
user002:x:601:100:user:/home/user002:/bin/bash
user003:x:602:100:user:/home/user003:/bin/bash
user004:x:603:100:user:/home/user004:/bin/bash
user005:x:604:100:user:/home/user005:/bin/bash
user006:x:605:100:user:/home/user006:/bin/bash

這樣就完成了大量用戶的建立了,能夠進行驗證了

相關文章
相關標籤/搜索