用戶管理算法
==============================================================
groupadd,groupdel
useradd,usermod,userdel
passwd,chage
==============================================================
內容提要:
用戶管理 useradd usermod userdel
組管理 groupadd groupdel
用戶密碼管理 passwd chage
經過 su sudo 給普通用戶提權
==============================================================
Linux 是一個能夠實現多用戶登錄的操做系統,容許多個用戶同時登錄到系統上使用資源。系統根據帳戶來區分每一個用戶的文件、進程、任務,給每一個用戶提供特定的工做環境。
對用戶組的管理主要包括:添加、修改、刪除以及配置訪問系統的資源。shell
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.
. The user associated with a running process determines the files and directories accessible to that process.
用戶組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
drwx------. 2 root root 16384 Jun 1 23:09 lost+found
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]
和用戶組相關的一些文件:
(1)用戶帳號文件:vim
/etc/passwd安全
root:x:0:0:root:/root:/bin/bashbash
用戶名:x:uid:gid:描述:HOME:shell
(2)用戶密碼文件less
/etc/shadow ide
root:$1$MYG2NDG6$a1wtyr5GDM2esAPjug0YP0:15636:0:99999:7:: :
登陸名:加密口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標誌學習
參數一: sp_namp 用戶名稱ui
參數二: sp_pwdp 用戶加密後的密碼加密
參數三: sp_lstchg 用戶密碼最近一次修改時間,算法是今天的時間減去1,1,1970獲得的時間間隔
參數四: sp_min 用戶最少多少天后才能改密碼的天數(默認爲0,表示能夠在任什麼時候間修改,有啥意義?有種需求叫密碼永不變= =。)
參數五: sp_max 用戶最多多少天后必定要修改密碼的天數,系統會強制用戶修改密碼(默認爲99999,改成1 也能讓密碼改不了)
參數六: sp_warn 過時前多少天時間會被警告(改成-1 則永遠不會提示)
參數七: sp_inact 過時後多少天內帳號變爲inactive狀態,可登錄,但不能操做
參數八: sp_expire 多少天后帳號會過時,沒法登錄
參數九: sp_flag 保留參數
例:test01:$6$h6vM4nLR$baO2kmPoSYLHRhAvIjBHZF7Kf6vAT4fIlb.HRjJaF4dBGHb3Wsj8oBpXHujk9dXlFZy0W4VjiotrnR1p1.2nn.:18186:0:99999:7:::
查看最近一次修改密碼是在那一天。
[root@localhost backup]# date -d "1970-01-01 18186 days" +%Y/%m/%d
2019/10/17
設置用戶每次更新密碼7天內禁止修改密碼
[root@localhost backup]# passwd -n 7 test01
[root@localhost ~]# chage -d 7 test01
設置用戶90天內必須修改密碼
[root@localhost backup]# passwd -x 90 test01
設置用戶密碼過時前3天給出通知
[root@localhost ~]# passwd -w 3 test01
設置用戶密碼過時5天后禁止登錄系統
[root@localhost ~]# passwd -i 5 test01
設置用戶初次登錄時強制修改密碼
[root@localhost ~]# passwd -e test01
(3)用戶組帳號文件
/etc/group
root:x:0:
(4)用戶組密碼文件
/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
Linux系統中存在三種用戶:root用戶、系統用戶(也稱之爲僞用戶)、普通用戶
系統約定: RHEL6
uid: 0 特權用戶
uid: 1~499 系統用戶
uid: 500+ 普通用戶
. 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+爲本地用戶
基本組(私有組)
附加組(公有組)
系統組
根據帳戶功能,用戶組能夠分爲:
超級用戶組:root gid爲0
系統用戶組:gid 1-999
本地用戶組:gid 1000+
若是要在圖形化界面下管理用戶與組,需安裝包: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
一、修改用戶名 user1---User1: usermod -l User1 user1
二、增長描述信息 :usermod -c "install rpm" User1
三、修改登陸shell :usermod -s /sbin/nologin User1
四、修改主目錄: -d
五、設置過時日期: -e
六、鎖定帳號:-L 等價於 passwd -l
七、解鎖帳號:-U 等價於 passwd -u
八、-u,-g
==其它選項管理==
[root@localhost ~]# usermod -s /sbin/nologin niuniu2
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
# 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
如下兩種方式均可以將普通用戶提高爲root
1)
[alice@localhost ~]$ useradd u1
-bash: /usr/sbin/useradd: 權限不夠
[alice@localhost ~]$ su - root
password:
[root@localhost ~]# useradd u1
管理員切換爲普通用戶不須要輸入密碼;
普通用戶切換其餘用戶須要輸入目標用戶密碼;
su的優缺點
su 命令的確爲管理帶來方便,但經過su切換到root後,也有不安全因素。
2)
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)
用戶管理命令練習 增長兩個用戶並設置好密碼(寫2行):John、Lucy 查看各用戶的基本信息(相關文件在/etc中) 查看各用戶的密碼信息(相關文件在/etc中) 查找用戶summer並顯示其相關信息 將當前用戶切換到John(進入其主目錄) 顯示當前登陸用戶名 將John的登陸密碼改成:mima1234 將John的賬號有效期設爲2017年12月31號 將John加入到summer組中 將用戶名John改成Jack 將Jack的用戶全名改成:Jack.Willianmus 用戶切換到Lucy,刪除Lucy的密碼 刪除用戶Lucy4. 組管理命令練習 增長以一個student組 查看全部組的基本信息(相關文件在etc中) 查看summer組中包含哪些用戶名? 將student組名改成teacher 刪除teacher組