一置谦、顯示/etc目錄下,以非字母開頭,后面隔了一個字母以及其他任意長度任意字符的文件或者目錄腰湾;
[root@localhost etc]# cd /etc
[root@localhost etc]# touch 1.txt 1ab.abc
[root@localhost etc]# mkdir 111 1ab
[root@localhost etc]# ls |grep "^[^[:alpha:]][[:alpha:]].*"
1ab
1ac.abc
二埃篓、復(fù)制/etc目錄下所有以p開頭处坪,以非數(shù)字結(jié)尾的文件或者目錄到/tmp/mytest目錄中;
[root@localhost etc]# ls | grep "^p.*[^0-9]$"
pam.d
passwd
passwd-
pki
plymouth
pm
popt.d
postfix
ppp
prelink.conf.d
printcap
profile
profile.d
protocols
python
[root@localhost etc]# ls /tmp/mytest1/
[root@localhost etc]# ls | grep "^p.*[^0-9]$" | xargs -i cp -r {} /tmp/mytest1
[root@localhost etc]# ls /tmp/mytest1/
pam.d passwd passwd- pki plymouth pm popt.d postfix ppp prelink.conf.d printcap profile profile.d protocols python
三架专、將/etc/issue文件中的內(nèi)容轉(zhuǎn)換為大寫后保存至/tmp/issue.out文件中同窘;
[root@localhost ~]# cat /etc/issue
\S
Kernel \r on an \m
[root@localhost ~]# cat /etc/issue | tr 'a-z' 'A-Z'
\S
KERNEL \R ON AN \M
[root@localhost ~]# cat /etc/issue | tr 'a-z' 'A-Z' >/tmp/issue.out
[root@localhost ~]# cat /tmp/issue.out
\S
KERNEL \R ON AN \M
四、請總結(jié)描述用戶和組管理類命令的使用方法并完成以下練習部脚;
Linux系統(tǒng)中的用戶和用戶組想邦;
為了實現(xiàn)不同的用戶可以設(shè)置不同的訪問權(quán)限,需要針對每個不同的用戶創(chuàng)建對應(yīng)的用戶委刘。而為了管理對多個用戶設(shè)置權(quán)限更方便丧没,可以將用戶加到組中。此外每一個用戶必須要屬于一個組锡移,此組稱為主組呕童。用戶也可以再加入到其它多個額外的組中,這個組稱為附屬組淆珊,從屬組或附加組夺饲。
在Linux系統(tǒng)中每一個用戶都有一個唯一的用戶編號和這個用戶對應(yīng),我們將這個編號稱為UID(Uder IDentifier)。UID是Linux用來辨識用戶的一個無符號整型數(shù)值往声。
在Linux中區(qū)分不同的用戶茫蛹,就是用UID實現(xiàn),并非用戶名烁挟。每個登陸用戶的基本信息都保存在/etc/passwd中婴洼,每一行對應(yīng)一個用戶的信息。
用戶user
?令牌token,identity
?Linux用戶:Username/UID
?管理員:root, 0
?普通用戶:1-60000 自動分配
?系統(tǒng)用戶:1-499, 1-999 (CentOS7)
對守護進程獲取資源進行權(quán)限分配
?登錄用戶:500+, 1000+(CentOS7)
交互式登錄
組group
?Linux組:Groupname/GID
?管理員組:root, 0
?普通組:
?系統(tǒng)組:1-499, 1-999(CENTOS7)
?普通組:500+, 1000+(CENTOS7)
安全上下文
?Linux安全上下文
運行中的程序:進程 (process)
以進程發(fā)起者的身份運行:
root: /bin/cat
mage: /bin/cat
進程所能夠訪問資源的權(quán)限取決于進程的運行者的身份
組的類別
?Linux組的類別
用戶的主要組(primary group)
用戶必須屬于一個且只有一個主組
組名同用戶名撼嗓,且僅包含一個用戶柬采,私有組
用戶的附加組(supplementary group)
一個用戶可以屬于零個或多個輔助組
用戶和組的配置文件
?Linux用戶和組的主要配置文件:
/etc/passwd:用戶及其屬性信息(名稱、UID且警、主組ID等)
/etc/group:組及其屬性信息
/etc/shadow:用戶密碼及其相關(guān)屬性
/etc/gshadow:組密碼及其相關(guān)屬性
passwd文件格式
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
gaolu:x:1000:1000:gaolu:/home/gaolu:/bin/bash
?login name:登錄用名(gaolu)
?passwd:密碼 (x)
?UID:用戶身份編號 (1000)
?GID:登錄默認所在組編號 (1000)
?GECOS:用戶全名或注釋
?home directory:用戶主目錄 (/home/gaolu)
?shell:用戶默認使用shell (/bin/bash)
root用戶作為超級用戶或管理員粉捻,對整個Linux具有最高權(quán)限。當然Linux判斷是否為超級用戶斑芜,不是看用戶名是否是root肩刃,而是看其UID是否為0。換言之杏头,用戶的UID是0盈包,那么就是超級用戶。
上面密碼都是顯示x醇王,這里的x并不是真實的密碼呢燥,只是占位符而已,用戶真正的密碼存放在/etc/shadow文件中寓娩,而且是密文叛氨。
shadow文件格式
[root@localhost ~]# cat /etc/shadow
root:$6$bv5NckVD0Jd.RpOP$buMXJdtuEJyeozfsyn2kRbDNsnK2e1YMKxuS6R7iwoD/LbTjlIUHoBEcA7wAJwCs.dGIAc4FiC4aI0HgklW0x/::0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::
lp:*:17834:0:99999:7:::
sync:*:17834:0:99999:7:::
shutdown:*:17834:0:99999:7:::
halt:*:17834:0:99999:7:::
mail:*:17834:0:99999:7:::
operator:*:17834:0:99999:7:::
games:*:17834:0:99999:7:::
ftp:*:17834:0:99999:7:::
nobody:*:17834:0:99999:7:::
systemd-network:!!:18422::::::
dbus:!!:18422::::::
polkitd:!!:18422::::::
sshd:!!:18422::::::
postfix:!!:18422::::::
gaolu:$6$.wCpiS69VJYen3A4$s.EjkEcJjBrSE6AgocyUcuKAE8wEaXtEjGzr2y5JZyxO42FMRlrCYqN1AJkdC8Tnd416aqPjZx7SdiwrMf5Qp1::0:99999:7:::
?登錄用名
?用戶密碼:一般用sha512加密
?從1970年1月1日起到密碼最近一次被更改的時間
?密碼再過幾天可以被變更(0表示隨時可被變更)
?密碼再過幾天必須被變更(99999表示永不過期)
?密碼過期前幾天系統(tǒng)提醒用戶(默認為一周)
?密碼過期幾天后帳號會被鎖定
?從1970年1月1日算起,多少天后帳號失效
密碼加密
? 加密機制:
加密:明文--> 密文
解密:密文--> 明文
? 單向加密:哈希算法棘伴,原文不同寞埠,密文必不同
相同算法定長輸出,獲得密文不可逆推出原始數(shù)據(jù)
雪崩效應(yīng):初始條件的微小改變焊夸,引起結(jié)果的巨大改變
md5: message digest, 128bits
sha1: secure hash algorithm, 160bits
sha224: 224bits
sha256: 256bits
sha384: 384bits
sha512: 512bits
? 更改加密算法:
authconfig --passalgo=sha256 --update
密碼的復(fù)雜性策略
?足夠長
?使用數(shù)字仁连、大寫字母、小寫字母及特殊字符中至少3種
?使用隨機密碼
?定期更換,不要使用最近曾經(jīng)使用過的密碼
密碼期限
group文件格式
[root@localhost ~]# cat /etc/gshadow
root:::
bin:::
daemon:::
sys:::
adm:::
tty:::
disk:::
lp:::
mem:::
kmem:::
wheel:::
cdrom:::
mail:::postfix
man:::
dialout:::
floppy:::
games:::
tape:::
video:::
ftp:::
lock:::
audio:::
nobody:::
users:::
utmp:!::
utempter:!::
input:!::
systemd-journal:!::
systemd-network:!::
dbus:!::
polkitd:!::
ssh_keys:!::
sshd:!::
postdrop:!::
postfix:!::
gaolu:!!::gaolu
?群組名稱:就是群組名稱
?群組密碼:通常不需要設(shè)定淳地,密碼是被記錄在 /etc/gshadow
?GID:就是群組的 ID
?以當前組為附加組的用戶列表(分隔符為逗號)
gshdow文件格式
?群組名稱:就是群的名稱
?群組密碼:
?組管理員列表:組管理員的列表怖糊,更改組密碼和成員
?以當前組為附加組的用戶列表:多個用戶間用逗號分隔
用戶和組管理命令
?用戶管理命令
useradd
usermod
userdel
?組帳號維護命令
groupadd
groupmod
groupdel
用戶創(chuàng)建:useradd
?useradd [options] LOGIN
-u UID
-o 配合-u 選項帅容,不檢查UID的唯一性
-g GID 指明用戶所屬基本組颇象,可為組名,也可以GID
-c "COMMENT“ 用戶的注釋信息
-d HOME_DIR 以指定的路徑(不存在)為家目錄
-s SHELL 指明用戶的默認shell程序并徘,可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...] 為用戶指明附加組遣钳,組須事先存在
-N 不創(chuàng)建私用組做主組,使用users組做主組
-r 創(chuàng)建系統(tǒng)用戶 CentOS 6: ID<500麦乞,CentOS 7: ID<1000
-m 創(chuàng)建家目錄蕴茴,用于系統(tǒng)用戶
-M 不創(chuàng)建家目錄劝评,用于非系統(tǒng)用戶
新建用戶的相關(guān)文件和命令
?/etc/default/useradd
?/etc/skel/*
?/etc/login.defs
?newusers passwd格式文件 批量創(chuàng)建用戶
?chpasswd 批量修改用戶口令
用戶屬性修改
?usermod [OPTION] login
-u UID: 新UID
-g GID: 新主組
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被
覆蓋倦淀;若保留原有蒋畜,則要同時使用-a選項
-s SHELL:新的默認SHELL
-c 'COMMENT':新的注釋信息
-d HOME: 新家目錄不會自動創(chuàng)建;若要創(chuàng)建新家目錄并移動原家數(shù)據(jù)撞叽,
同時使用-m選項
-l login_name: 新的名字
-L: lock指定用戶,在/etc/shadow 密碼欄的增加 !
-U: unlock指定用戶,將 /etc/shadow 密碼欄的 ! 拿掉
-e YYYY-MM-DD: 指明用戶賬號過期日期
-f INACTIVE: 設(shè)定非活動期限
刪除用戶
?userdel [OPTION]... login
-r: 刪除用戶家目錄
查看用戶相關(guān)的ID信息
?id [OPTION]... [USER]
-u: 顯示UID
-g: 顯示GID
-G: 顯示用戶所屬的組的ID
-n: 顯示名稱姻成,需配合ugG使用
切換用戶或以其他用戶身份執(zhí)行命令
?su [options...] [-] [user [args...]]
?切換用戶的方式:
su UserName:非登錄式切換,即不會讀取目標用戶的配置文件愿棋,不改變
當前工作目錄
su - UserName:登錄式切換科展,會讀取目標用戶的配置文件,切換至家目
錄糠雨,完全切換
?root su至其他用戶無須密碼才睹;非root用戶切換時需要密碼
?換個身份執(zhí)行命令:
su [-] UserName -c 'COMMAND'
?選項:-l --login
su -l UserName 相當于 su - UserName
設(shè)置密碼
?passwd [OPTIONS] UserName: 修改指定用戶的密碼
?常用選項:
-d:刪除指定用戶密碼
-l:鎖定指定用戶
-u:解鎖指定用戶
-e:強制用戶下次登錄修改密碼
-f:強制操作
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天開始警告
-i inactivedays:非活動期限
--stdin:從標準輸入接收用戶密碼
示例:echo "PASSWORD" | passwd --stdin USERNAME
修改用戶密碼策略
?chage [OPTION]... LOGIN
-d LAST_DAY
-E --expiredate EXPIRE_DATE
-I --inactive INACTIVE
-m --mindays MIN_DAYS
-M --maxdays MAX_DAYS
-W --warndays WARN_DAYS
-l 顯示密碼策略
?示例:
chage -d 0 tom 下一次登錄強制重設(shè)密碼
chage -m 0 –M 42 –W 14 –I 7 tom
chage -E 2016-09-10 tom
用戶相關(guān)的其它命令
?chfn 指定個人信息
?chsh 指定shell
?finger
創(chuàng)建組
?groupadd [OPTION]... group_name
-g GID 指明GID號;[GID_MIN, GID_MAX]
-r 創(chuàng)建系統(tǒng)組
CentOS 6: ID<500
CentOS 7: ID<1000
修改和刪除組
?組屬性修改:groupmod
groupmod [OPTION]... group
-n group_name: 新名字
-g GID: 新的GID
?組刪除:groupdel
groupdel GROUP
更改組密碼
?組密碼:gpasswd
?gpasswd [OPTION] GROUP
-a user 將user添加至指定組中
-d user 從指定組中移除用戶user
-A user1,user2,... 設(shè)置有管理權(quán)限的用戶列表
?newgrp命令:臨時切換主組
如果用戶本不屬于此組甘邀,則需要組密碼
更改和查看組成員
?groupmems [options] [action]
options:
-g, --group groupname 更改為指定組 (只有root)
actions:
-a, --add username 指定用戶加入組
-d, --delete username 從組中刪除用戶
-p, --purge 從組中清除所有成員
-l, --list 顯示組成員列表
?groups [OPTION].[USERNAME]... 查看用戶所屬組列表
練習:
1琅攘、創(chuàng)建組distro, 其GID為2019;
[root@localhost ~]# groupadd -g2019 distro
[root@localhost ~]# cat /etc/group|grep distro
distro:x:2019:
2松邪、創(chuàng)建用戶mandriva, 其ID號為1005乎澄,基本組為distro
[root@localhost ~]# useradd -u 1005 -g distro mandriva
[root@localhost ~]# id mandriva
uid=1005(mandriva) gid=2019(distro) groups=2019(distro)
3、創(chuàng)建用戶mageia测摔,其ID號為1100置济,家目錄為/home/linux;
[root@localhost ~]# cat /etc/passwd|grep mageia
mageia:x:1100:1100::/home/linux:/bin/bash
4锋八、給用戶mageia添加密碼浙于,密碼為mageedu,并設(shè)置用戶密碼7天后過期;
[root@localhost ~]# echo mageedu | passwd --stdin mageia
Changing password for user mageia.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd -x7 mageia
Adjusting aging data for user mageia.
passwd: Success
[root@localhost ~]# getent shadow mageia
mageia:$6$CjRqfpIu$zq4ICIgWoTlpsY8W4g3lLisuhIwrriDE1YdJgfGbPPrzsYHcPbzFkacUQWztVK3m0lVafW00RP3eNfM.BdPC.1:18438:7:7:7:::
5挟纱、刪除mandriva, 但保留其家目錄
[root@localhost ~]# userdel mandriva
[root@localhost ~]# id mandriva
id: mandriva: no such user
[root@localhost ~]# ls /home
gaolu linux mandriva
6羞酗、創(chuàng)建用戶slackware, 其ID號為2002,基本組為distor, 附加組為peguin;
[root@localhost ~]# useradd -u 2002 -g distro -G peguin slackware
useradd: group 'peguin' does not exist
[root@localhost ~]# groupadd peguin
[root@localhost ~]# useradd -u 2002 -g distro -G peguin slackware
[root@localhost ~]# getent passwd slackware
slackware:x:2002:2019::/home/slackware:/bin/bash
[root@localhost ~]# id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin)
7紊服、修改slackware的默認shell為/bin/tcsh;
由6知slackware的shell為 /bin/bash
[root@localhost ~]# usermod -s /bin/tcsh slackware
[root@localhost ~]# getent passwd slackware
slackware:x:2002:2019::/home/slackware:/bin/tcsh
8檀轨、為用戶slackware新增附加組admins;
[root@localhost ~]# groupadd admins
[root@localhost ~]# usermod -a -G admins slackware
[root@localhost ~]# id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin),2021(admins)