liunx之用戶管理
用戶管理
==============================================================
groupadd,groupdel
useradd,usermod,userdel
passwd,chage
==============================================================
內容提要:
用戶管理 useradd usermod userdel
組管理 groupadd groupdel
用戶密碼管理 passwd chage
通過 su sudo 給普通用戶提權
==============================================================
對用戶組的管理主要包括:添加、修改、刪除以及配置訪問系統的資源。
1.1 Linux 用戶組基本概念
Users and groups:
. Every process (running program) on the system runs as a particular user.
. Every file is owned by a particular user.
. Access to files and directories are restricted by user.
用戶組group,就是具有相同特征的用戶的集合體。
查看當前登錄的用戶信息:
[root@localhost ~]# id
uid=0(root) gid=0(root) groups=0(root)
查看文件的owner:
[root@localhost ~]# ll /home/
drwx------. 4 alice alice 4096 Jun 2 15:59 alice
drwxr-xr-x 2 root root 4096 Jun 2 15:33 localhost
查看運行進程的username:
[root@localhost ~]# ps aux |less
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 19360 1536 ? Ss 13:29 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S 13:29 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 13:29 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S 13:29 0:00 [ksoftirqd/0]
和用戶組相關的一些文件:
用戶賬號文件 /etc/passwd root:x:0:0:root:/root:/bin/bash
用戶名:x:uid:gid:描述:HOME:shell
用戶密碼文件 /etc/shadow root:$1$MYG2NDG6$a1wtyr5GDM2esAPjug0YP0:15636:0:99999:7:: :
登錄名:加密口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標誌
用戶組賬號文件 /etc/group root:x:0:
用戶組密碼文件 /etc/gshadow
[root@localhost ~]# man 5 passwd
[root@localhost ~]# man 5 shadow
[root@localhost ~]# man 5 group
[root@localhost ~]# man 3 crypt
加密算法$id:
$1: MD5
$5: SHA-256
$6: SHA-512
1.2 Linux 用戶組分類
1 用戶分類
Linux系統中存在三種用戶:root用戶、系統用戶(也稱之為偽用戶)、普通用戶
系統約定: RHEL6
uid: 0 特權用戶
uid: 1~499 系統用戶
uid: 500+ 普通用戶
The root user
. uid is 0
. all power
. This user has the power to override normal privileges on the file system
. installing or removing software and to manage system files and directorie
. Most devices can only be controlled by root
RHEL6普通用戶的UID 從500開始,RHEL7則是從1000開始;
系統約定: RHEL7
uid: 0 特權用戶
uid:1-999為系統用戶
uid:1000+為本地用戶
2 組分類
基本組(私有組)
附加組(公有組)
系統組
根據賬戶功能,用戶組可以分為:
超級用戶組:root gid為0
系統用戶組:gid 1-999
本地用戶組:gid 1000+
1.3 Linux 用戶組管理
如果要在圖形化界面下管理用戶與組,需安裝包:system-config-users
用戶組:
[root@localhost ~]# groupadd hr
[root@localhost ~]# groupadd sale
[root@localhost ~]# groupadd it
[root@localhost ~]# groupadd fd
[root@localhost ~]# groupadd market
[root@localhost ~]# groupadd net01 -g 2000 //添加組net01,並指定gid 2000
[root@localhost ~]# grep ‘net01‘ /etc/group //查看/etc/group中組net01信息
[root@localhost ~]# groupdel net01 //刪除組net01
用戶:
useradd creates users
==創建用戶 未指定選項==
[root@localhost ~]# useradd user01
. 未指定該用戶的主組 默認和用戶同名
. 未指定該用戶的附加組 默認不添加附加組
. 未指定用戶的HOME 默認 /home/username
. 未指定用戶的SHELL 默認 /bin/bash
. 未指定用戶的UID...
[root@localhost ~]# grep ‘user01‘ /etc/passwd /etc/shadow /etc/group
/etc/passwd:user01:x:507:512::/home/user01:/bin/bash
/etc/shadow:user01:!!:16589:0:99999:7:::
/etc/group:user01:x:512:
[root@localhost ~]# id user01
uid=507(user01) gid=512(user01) groups=512(user01)
[root@localhost ~]# ls /var/spool/mail/user01
/var/spool/mail/user01
小結:
如果創建一個用戶時,未指定任何選項,系統會創建一個和用戶名相同的組作為用戶的Primary Group.
==創建用戶 指定選項==
[root@localhost ~]# useradd user02 -u 503 //創建用戶usr02,指定uid
[root@localhost ~]# useradd user03 -d /aaa //創建用戶user03 指定家目錄
[root@localhost ~]# useradd user05 -s /sbin/nologin //創建用戶並指定shell
[root@localhost ~]# useradd user07 -G hr,it,fd //創建用戶,指定附加組
[root@localhost ~]# useradd user10 -u 4000 -s /sbin/nologin
userdel deletes users
==刪除用戶==
[root@localhost ~]# userdel user10 //刪除用戶user10,但不刪除用戶家目錄和mail spool
[root@localhost ~]# ll -d /home/user10/
drwx------ 3 506 510 4096 09-01 21:14 /home/user10/
[root@localhost ~]# ll /var/spool/mail/user10
-rw-rw---- 1 506 mail 0 09-01 21:14 /var/spool/mail/user10
[root@localhost ~]# userdel -r user2 //刪除用戶user2,同時刪除用戶家目錄和mail spool
==用戶密碼==
[root@localhost ~]# passwd alice
[zhuzhu@localhost ~]$ passwd
usermod modifies existing users
==組成員管理==
註意:只針對已存在的用戶
[root@localhost ~]# usermod -G hr niuniu2 //覆蓋原有的附加組
[root@localhost ~]# usermod -G fd,it niuniu2
[root@localhost ~]# usermod -aG hr niuniu2 //增加新的附加組
修改用戶 usermod
1、修改用戶名 user1---User1: usermod -l User1 user1
2、增加描述信息 :usermod -c "install rpm" User1
3、修改登錄shell :usermod -s /sbin/nologin User1
4、修改主目錄: -d
5、設置過期日期: -e
6、鎖定賬號:-L 等價於 passwd -l
7、解鎖賬號:-U 等價於 passwd -u
8、-u,-g
==其它選項管理==
[root@localhost ~]# usermod -s /sbin/nologin niuniu2
1.4 擴展知識
useradd創建用戶時,參照的文件...
[root@localhost ~]# vim /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 30
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
CREATE_HOME yes
ENCRYPT_METHOD SHA512
[root@localhost ~]# vim /etc/default/useradd
SHELL=/sbin/nologin
Password aging
# chage -m 0 -M 90 -W 7 -I 14 username
chage -d 0 username will force a password update on next login.
chage -l username will list a username‘s current settings.
chage -E YYYY-MM-DD will expire an account on a specific day.
手動創建用戶示例:
[root@localhost~]# useradd maomao100
[root@localhost~]# echo 123456 |passwd --stdin maomao100
[root@localhost~]# chage -d 0 maomao100 //強制用戶在下一次登錄時修改密碼
將多個用戶加入到指定的組:
[root@localhost~]# gpasswd -a jack wheel //usermod -aG hr zhuzhu
[root@localhost~]# gpasswd -M zhuzhu,maomao100 hr
[root@localhost~]# gpasswd -d zhuzhu hr
1.5 給普通用戶提權
以下兩種方式都可以將普通用戶提升為root
1)
Switching users with su
[alice@localhost ~]$ useradd u1
-bash: /usr/sbin/useradd: 權限不夠
[alice@localhost ~]$ su - root
password:
[root@localhost ~]# useradd u1
管理員切換為普通用戶不需要輸入密碼;
普通用戶切換其他用戶需要輸入目標用戶密碼;
su的優缺點
su 命令的確為管理帶來方便,但通過su切換到root後,也有不安全因素。
2)
Running commands as root with sudo
sudo配置文件/etc/sudoers
(1)別名規則
別名規則的定義格式:
Alias_Type NAME = item1, item2, ...
或者
Alias_Type NAME = item1, item2, item3 : NAME = item4, item5
其中:
Alias_Type是指別名類型,包括四種:Host_Alias、User_Alias、Runas_Alias和Cmnd_Alias。NAME就是別名;
NAME的命名是包含大寫字母、下劃線以及數字,但必須以一個大寫字母開頭,比如ADMIN、SYS1和NETWORKING都是合法的,而sYS和6ADMIN是非法的;
① Host_Alias
定義主機別名的例子如下:
Host_Alias HT1=localhost,ztg,192.168.0.0/24
主機別名是HT1,“=”號右邊是成員。
Host_Alias HT1= localhost,ztguang,192.168.10.0/24:HT2=ztg2,ztg3
定義了兩個主機別名HT1和HT2,別名之間用“:”號隔開。
② User_Alias
用戶別名,別名成員可以是用戶,用戶組(前面要加%號)。
User_Alias ADMIN=ztg,ztguang
定義用戶別名ADMIN,有兩個成員ztg和ztguang,這兩個成員要在系統中確實存在。
User_Alias PROCESSES= ztg1
定義用戶別名PROCESSES,有一個成員ztg1,這個成員要在系統中確實存在。
③ Runas_Alias
用來定義runas別名,這個別名是指sudo允許切換到的用戶;
Runas_Alias RUN_AS = root
定義runas別名RUN_AS,有一個成員root。
④ Cmnd_Alias
定義命令的別名,這些命令必須是系統存在的文件,要用絕對路徑,文件名可以用通配符表示。
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
(2)授權規則
授權規則的定義格式:
授權用戶 主機=命令動作
或者
授權用戶 主機=[(切換到哪些用戶或用戶組)] [是否需要密碼驗證] 命令1,[(切換到哪些用戶或用戶組)] [是否需要密碼驗證] [命令2],[(切換到哪些用戶或用戶組)] [是否需要密碼驗證] [命令3] …
這三個要素缺一不可,但在動作之前也可以指定切換到特定用戶下,在這裏指定切換的用戶要用( )號括起來,如果不需要密碼直接運行命令的,應該加
NOPASSWD:參數,但這些可以省略。
sudo的客戶端應用
sudo -l:列出當前用戶可以執行的命令。只有在sudoers裏的用戶才能使用該選項。
sudo -u 用戶名 命令:以指定用戶的身份執行命令。後面的用戶是除root以外的,可以是用戶名,也可以是UID。
sudo -k:清除存活期時間,下次再使用sudo時要再輸入密碼。
sudo -b 命令:在後臺執行指定的命令。
sudo -p 提示語 <操作選項>:可以更改詢問密碼的提示語,其中%u會代換為使用者賬號名稱,%h會顯示主機名稱。
實例:授權規則舉例
student ALL=(root) /bin/chown,/bin/chmod
以root身份授權普通用戶
[root@localhost ~]# vim /etc/sudoers
%wheel ALL=(ALL) NOPASSWD: ALL
[root@localhost ~]# useradd yangyang -G wheel
[root@localhost ~]# id yangyang
uid=504(yangyang) gid=504(yangyang) 組=504(yangyang),10(wheel)
[yangyang@localhost ~]$ useradd gougou10
-bash: /usr/sbin/useradd: 權限不夠
[yangyang@localhost ~]$ sudo useradd gougou10
[yangyang@localhost ~]$ id gougou10
uid=505(gougou10) gid=505(gougou10) 組=505(gougou10)
本節作業:
1. 完成課堂中學習的所有內容
2.
用戶管理命令練習
增加兩個用戶並設置好密碼(寫2行):John、Lucy
查看各用戶的基本信息(相關文件在/etc中)
查看各用戶的密碼信息(相關文件在/etc中)
查找用戶summer並顯示其相關信息
將當前用戶切換到John(進入其主目錄)
顯示當前登錄用戶名
將John的登錄密碼改為:mima1234
將John的帳號有效期設為2017年12月31號
將John加入到summer組中
將用戶名John改為Jack
將Jack的用戶全名改為:Jack.Willianmus
用戶切換到Lucy,刪除Lucy的密碼
刪除用戶Lucy
4. 組管理命令練習
增加以一個student組
查看所有組的基本信息(相關文件在etc中)
查看summer組中包含哪些用戶名?
將student組名改為teacher
刪除teacher組
liunx之用戶管理