1.用戶設置密碼、修改密碼
- 為新用戶添加密碼{只能是root} {密碼盡可能的復雜} [0-9][a-Z][a- Z] [!@#$%^&]
[root@localhost ~]# passwd oldboy
Changing password for user oldboy.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
passwd --stdin 非交互式設定密碼
[root@localhost ~]# echo "123" | passwd --stdin oldboy
Changing password for user oldboy.
passwd: all authentication tokens updated successfully.
批量創(chuàng)建用戶,并設定固定密碼
[root@localhost ~]# cat user.sh
for i in {1..100}
do
useradd test$i
echo "123456" | passwd --stdin test$i
done
- 為用戶變更密碼
- 1.為自己修改密碼 (ok) 直接使用passwd 注意密碼需要復雜一
點,并達到8位 - 2.為別人修改密碼 (root) passwd username
- 3.密碼怎么才算復雜
1.使用$RANDOM | md5sum創(chuàng)建隨機數組,可做密碼使用*
[root@localhost ~]# echo $RANDOM | md5sum |cut -c 5-15
3e7ad845347
2.mkpasswd生成隨機字符串, -l設定密碼長度,-d數子,-c小寫字母,- C大寫字母,-s特殊字符
[root@localhost ~]# mkpasswd -l 10 -d 2 -c 3 -C 3 -s 2
2.用戶的創(chuàng)建流程
*1.在用戶創(chuàng)建的過程需要參考 /etc/login.defs和/etc/default/useradd 這兩個文件,默認參考.
2.如果在創(chuàng)建用戶時指定了參數,則會覆蓋 (默認 /etc/login.defs 和/etc/default/useradd)
[root@localhost ~]# grep "^[a-Z]" /etc/login.defs
MAIL_DIR /var/spool/mail #創(chuàng)建的郵箱所在的位置
PASS_MAX_DAYS 99999 #密碼最長使用的天數
PASS_MIN_DAYS 0 #密碼最短時間的天數
PASS_MIN_LEN 5 #密碼的長度
PASS_WARN_AGE 7 #密碼到期前7天警告
UID_MIN 1000 #uid 從1000開始
UID_MAX 60000 #uid從6w結束
SYS_UID_MIN 201 #系統(tǒng)用戶的uid 從201 開始
SYS_UID_MAX 999 #系統(tǒng)用戶的uid最大到
999
#GID與UID一致
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes #給用戶創(chuàng)建家目錄,創(chuàng)建 在/home
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
[root@localhost ~]# cat /etc/default/useradd # useradd defaults file
# useradd defaults file
GROUP=100 #當用戶創(chuàng)建用戶時不指定組,并 且/etc/login.defs中USERGROUPS_ENAB為no時, 用戶默認創(chuàng)建給分 配一個gid為100的組.
HOME=/home #用戶默認的家目錄
INACTIVE=-1 #用戶不失效
EXPIRE= #過期時間
SHELL=/bin/bash #默認登錄shell
SKEL=/etc/skel #默認用戶拷貝的環(huán)境變量
CREATE_MAIL_SPOOL=yes #創(chuàng)建郵箱
3.用戶組管理

用戶組

group配置文件

gshadow配置文件
- 創(chuàng)建組 groupadd [-g GID] groupname
[root@localhost ~]# groupadd zhuzhu
[root@localhost ~]# groupadd -g 6666 gougou
[root@localhost ~]# grep "6666" /etc/group
gougou:x:6666:
#創(chuàng)建系統(tǒng)組
[root@localhost ~]# groupadd -r maomao
[root@localhost ~]# grep "maomao" /etc/group
maomao:x:993:
- 修改組 groupmod
#-g 修改組gid
[root@localhost ~]#groupmod -g 7777 gougou
[root@localhost ~]# grep "7777" /etc/group
gougou:x:7777:
#-n 修改組名
[root@localhost ~]#groupmod gougou -n gg
[root@localhost ~]# grep "7777" /etc/group
gg:x:7777:
- 刪除組 如果要刪除基本組,需要先刪除基本組中的用戶才可以刪除 該組。
#先創(chuàng)建用戶、用戶組、附加組
[root@localhost ~]# groupadd dawang
[root@localhost ~]# groupadd laowang
[root@localhost ~]# useradd xiaowang
[root@localhost ~]# useradd gb -g laowang
[root@localhost ~]# usermod xiaowang -G laowang,dawang
[root@localhost ~]# id xiaowang
uid=10001(xiaowang) gid=10004(xiaowang) groups=10004(xiaowang),10002(dawang),10003(laowang)

刪除
4.用戶提權
- su 切換用戶 如果切換用戶,需要知道用戶的密碼,不是很安全
- sudo 提權( root事先分配好權限 --> 關聯用戶 ) 安全 方便 但是復雜
基本概念
- 1.交互式 需要不停的交互
- 2.非交互式
- 3.登錄式shell 需要用戶名以及密碼開啟bash窗口
- 4.非登錄式shell 不需要用戶名和密碼即可開啟bash窗口
su - username 屬于登錄式shell 會加載全部的環(huán)境變量
su username 屬于非登錄式shell 會加載部分環(huán)境變量(很有 可能就會出現錯誤清空)
PS:
1.su 切換有缺點
*需要知道用戶對應的
*說明不是很安全
2.sudo提權
*預先分配好權限
*在關聯對應的用戶
- 提升的權限太大,能否有辦法限制僅開啟某個命令的使用權限?其 他命令不允許?
第一種方式:使用sudo中自帶的別名操作, 將多個用戶定義成一個組
[root@localhost ~]# visudo
*1.使用sudo定義分組,這個系統(tǒng)group沒什么關系
User_Alias OPS = oldboy,oldgirl User_Alias DEV = alex
*2.定義可執(zhí)行的命令組,便于后續(xù)調用
Cmnd_Alias NETWORKING = /sbin/ifconfig, /bin/ping
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/yum
Cmnd_Alias SERVICES = /sbin/service, /usr/bin/systemctl start Cmnd_Alias STORAGE = /bin/mount, /bin/umount
Cmnd_Alias DELEGATING = /bin/chown, /bin/chmod, /bin/chgrp Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
*3.使用sudo開始分配權限,并驗證
OPS ALL=(ALL)
NETWORKING,SOFTWARE,SERVICES,STORAGE,DELEGATING,PROCES SES
DEV ALL=(ALL) SOFTWARE,PROCESSES
第二種方式:使用groupadd添加組,然后給組分配sudo的權限,如果有新
用戶加入,直接將用戶添加到該組.
1.添加兩個真實的系統(tǒng)組, group_dev group_op
[root@localhost ~]# groupadd group_dev
[root@localhost ~]# groupadd group_op
2.添加兩個用戶,group_dev(user_a user_b) group_op(user_c user_d)
[root@localhost ~]# groupadd group_dev
[root@localhost ~]# groupadd group_op
[root@localhost ~]# ^C
[root@localhost ~]# useradd user_a -G group_dev
[root@localhost ~]# useradd user_b -G group_dev
[root@localhost ~]# useradd user_c -G group_op
[root@localhost ~]# useradd user_d -G group_op
3.用戶添加密碼
[root@localhost ~]# echo "1" | passwd --stdin user_a
Changing password for user user_a.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo "1" | passwd --stdin user_b
Changing password for user user_b.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo "1" | passwd --stdin user_c
Changing password for user user_c.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo "1" | passwd --stdin user_d
Changing password for user user_d.
passwd: all authentication tokens updated successfully.
[root@localhost ~]#
4.在sudo中配置規(guī)則
[root@localhost ~]# visudo
Cmnd_Alias NETWORKING = /sbin/ifconfig, /bin/ping
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/yum
Cmnd_Alias SERVICES = /sbin/service, /usr/bin/systemctl start
Cmnd_Alias STORAGE = /bin/mount, /bin/umount
Cmnd_Alias DELEGATING = /bin/chown, /bin/chmod, /bin/chgrp Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
%group_dev ALL=(ALL) SOFTWARE
%group_op ALL=(ALL) SOFTWARE,PROCESSES
5.檢查sudo是否配置有錯
[root@localhost ~]# visudo -c /etc/sudoers: parsed OK
6.檢查user_a,和user_d的sudo權限
[user_a@www.oldboyedu.com ~]$ sudo -l
User user_a may run the following commands on www:
(ALL) /bin/rpm, /usr/bin/yum
[user_d@www.oldboyedu.com ~]$ sudo -l
User user_d may run the following commands on www:
(ALL) /bin/rpm, /usr/bin/yum,
/bin/nice, /bin/kill, /usr/bin/kil
今日總結
- passwd設定密碼
- 1.為新用戶添加密碼 只有root權限才可以
- 2.為用戶變更密碼也只有root才可以
- 3.普通用戶只能修改自己的密碼,..無法修改其他人的密碼
- 4.密碼的修改方式有兩種,一種是交互式 非交互
- 用戶的創(chuàng)建流程
- 在用戶創(chuàng)建的過程需要參考 /etc/login.defs和/etc/default/useradd 這兩個文件,默認參考.
- 組的基本管理
- 1.創(chuàng)建組 groupadd
- 2.修改組 groupmod
- 3.刪除組 groupdel
- su 和 su -
- 加載的環(huán)境變量不一樣
- sudo提權
- 1.有管理人員來分配權visudo | visduo -c 檢查語法
- 2.普通用戶僅需要檢查自身的sudo權限即可 sudo -l