寫作:N27_loong 2017-7-27
[TOC]
一 本周內(nèi)容回顧
學(xué)習(xí)要點(diǎn)
第五天:
1后雷、Linux文件權(quán)限r(nóng)wx及文件屬性講解
2深纲、Linux文件權(quán)限表示法:賦權(quán)表示澄步、授權(quán)表示南缓、數(shù)值表示法
3蛀骇、Linux文件權(quán)限管理命令:chmod厌秒、chown、chgrp
4擅憔、Linux默認(rèn)權(quán)限umask鸵闪、隱藏屬性chattr、lsattr暑诸、
5岛马、bash編程基礎(chǔ)之邏輯組合與或非
6、bash腳本編程配置文件profile類屠列、bashrc類、以及l(fā)ogout類文件詳解
7伞矩、基本正則表達(dá)式及擴(kuò)展正則表達(dá)式精講
8笛洛、文本搜索工具:grep, egrep, fgrep
9、文本查看及處理工具wc, cut, sort, uniq, diff, patch詳解"
第六天:
1乃坤、vim編輯:vim的三種模式之命令模式苛让、編輯模式、末行模式之間的切換湿诊,以及快捷鍵的使用
2狱杰、vim進(jìn)階:可視化模式、文件查找厅须、多窗口模式
3仿畸、bash腳本編程之算術(shù)運(yùn)算let VAR=算術(shù)表達(dá)式、VAR=$[算術(shù)表達(dá)式]朗和、VAR=$((算術(shù)表達(dá)式))错沽、VAR=$(expr $ARG1 $OP $ARG2)
4、文件查找非實(shí)時(shí)查找locate命令講解
5眶拉、文件實(shí)時(shí)查找find命令查找條件:-name千埃、-iname、-regex忆植、-user放可、-group谒臼、-nouser、-type耀里、-size蜈缤、-perm,處理動(dòng)作-print备韧、-ls劫樟、-delete、-fls 织堂、-ok 叠艳、-exe及xargs命令的學(xué)習(xí)
6、特殊權(quán)限SUID易阳、SGID附较、SBIT和facl文件訪問(wèn)控制命令講解"
二 練習(xí)題
1.列出當(dāng)前系統(tǒng)上所有登錄的用戶的用戶名,同一用戶多次登錄的只顯示一次潦俺。
[root@centos ~]# who
root tty1 2020-03-06 10:56
root pts/0 2020-03-18 14:36 (172.16.7.186)
root pts/1 2020-03-18 15:43 (172.16.7.186)
lw pts/2 2020-03-18 15:48 (172.16.7.186)
[root@centos ~]# who |cut -d' ' -f1|sort -u
lw
root
[root@centos ~]#
2.取出最后登錄到當(dāng)前系統(tǒng)的用戶的相關(guān)信息
[root@centos ~]# who
root tty1 2020-03-06 10:56
root pts/0 2020-03-18 14:36 (172.16.7.186)
root pts/1 2020-03-18 15:43 (172.16.7.186)
lw pts/2 2020-03-18 15:48 (172.16.7.186)
[root@centos ~]# who |cut -d' ' -f1|tail -1|xargs id
uid=500(lw) gid=500(lw) 組=500(lw)
[root@centos ~]#
擴(kuò)展 :xargs命令:
功能:從標(biāo)準(zhǔn)輸入讀取命令參數(shù)或執(zhí)行命令拒课。上面的命令表示,用who列出所有用戶登錄信息事示,然后傳送到cut進(jìn)行截取早像,截取出用戶名列表,再傳送給tail命令取出最后一條信息肖爵,最后通過(guò)xargs命令將其做為id的命令參數(shù)卢鹦。這樣就讀取了最后一個(gè)登錄用戶的信息。
3.取出當(dāng)前系統(tǒng)上被用戶當(dāng)作其默認(rèn)shell的最多的那個(gè)shell
pi@raspberrypi:~ $ cat /etc/passwd |cut -d: -f7|uniq -c|sort -n|tail -1
13 /usr/sbin/nologin
pi@raspberrypi:~ $
說(shuō)明
1劝堪、cat /etc/passwd |cut -d: -f7 :讀出passwd文件的內(nèi)容并傳遞給cut命令冀自,在cut命令中-d指定以:做分隔符,顯示第7個(gè)字段秒啦,即用戶的默認(rèn)shell
2熬粗、結(jié)果傳遞到uniq命令,使用-c選項(xiàng)對(duì)文本中重復(fù)的行(shell)出現(xiàn)的次數(shù)進(jìn)行計(jì)數(shù)余境,可以統(tǒng)計(jì)出各個(gè)默認(rèn)shell的使用次數(shù)驻呐。
3、結(jié)果再傳遞到sort命令芳来,使用-n選項(xiàng)暴氏,按數(shù)字從小到大排序,使用次數(shù)最多的shell因?yàn)閿?shù)字大绣张,會(huì)排在最后一行答渔。此時(shí)用tail -1輸出最后一行結(jié)果即可。
4. 將/etc/passwd中的第三個(gè)字段數(shù)值最大的后10個(gè)用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中侥涵。
pi@raspberrypi:~ $ cat /etc/passwd |sort -t : -k 3 -n|tail -10|cut -d : -f1|tr [a-z] [A-Z]>/tmp/maxuser.txt
pi@raspberrypi:~ $ cat /tmp/maxuser.txt
SSHD
AVAHI
LIGHTDM
EPMD
COLORD
SANED
HPLIP
PI
MUDTEST
NOBODY
pi@raspberrypi:~ $
步驟說(shuō)明
1沼撕、 cat /etc/passwd 讀出文件內(nèi)容宋雏,|傳遞給sort命令
2.、sort -t : -k 3 -n : -t參數(shù)指定passwd文件字段的分隔符务豺,-k參數(shù)指定要排序的字段磨总,-n參數(shù)指定以數(shù)字大小進(jìn)行排序。sort命令會(huì)對(duì)passwd文件進(jìn)行重新排序笼沥。
3蚪燕、tail -10:僅顯示文件尾部的最后10行,也就是第三個(gè)字段數(shù)字最大的后10個(gè)用戶奔浅。
4馆纳、cut -d : -f1 :表示對(duì)上個(gè)結(jié)果文本剪切。-d 指定分隔符汹桦,-f指定字段
5鲁驶、tr [a-z] [A-Z]:tr為對(duì)位轉(zhuǎn)換命令,將小寫字母一一對(duì)應(yīng)的轉(zhuǎn)換為大寫字母
6舞骆、>/tmp/maxuser.txt:>表示重定向輸出到文件钥弯,將上個(gè)命令結(jié)果存入指定文件中。
5. 取出當(dāng)前主機(jī)的IP地址督禽,提示:對(duì)ifconfig命令的結(jié)果進(jìn)行切分脆霎。
pi@raspberrypi:~ $ ifconfig|grep -E "\<inet\>.*\<broadcast\>.*"
inet 192.168.31.47 netmask 255.255.255.0 broadcast 192.168.31.255
pi@raspberrypi:~ $
6 列出/etc目錄下所有以.conf結(jié)尾的文件的文件名,并將其名字轉(zhuǎn)換為大寫后保存至/tmp/etc.conf文件中
[root@MiWiFi-R3-srv ~]# cd /etc && ls *.conf|tr [a-z] [A-Z]>/tmp/etc.conf
[root@MiWiFi-R3-srv etc]# cat /tmp/etc.conf
ASOUND.CONF
CHRONY.CONF
DRACUT.CONF
E2FSCK.CONF
GEOIP.CONF
HOST.CONF
首先cd到etc目錄狈惫,命令成功執(zhí)行l(wèi)s命令睛蛛,將結(jié)果通過(guò)tr命令轉(zhuǎn)換后重定向輸出到指定文件。
也可以
[root@MiWiFi-R3-srv etc]# ls /etc|grep -o ".*\.conf\$"|tr [a-z] [A-Z]>/tmp/etc1.conf
[root@MiWiFi-R3-srv etc]# diff /tmp/etc.conf /tmp/etc1.conf
[root@MiWiFi-R3-srv etc]#
首先列出etc目錄的文件列表虱岂,傳送給grep命令,-o選項(xiàng)控制僅輸出和模式匹配的文本菠红,再用tr命令轉(zhuǎn)換后保存到指定文件第岖。用diff命令可以比較上個(gè)方法產(chǎn)生結(jié)果文件是否有差異,無(wú)輸出則表示無(wú)差異试溯。
7.顯示/var目錄下一級(jí)子目錄或文件的總個(gè)數(shù)
[root@MiWiFi-R3-srv ~]# ls -a /var|sort |wc -l
23
wc 選項(xiàng) -l:統(tǒng)計(jì)行數(shù)蔑滓,-c:統(tǒng)計(jì)字節(jié)數(shù),-d:統(tǒng)計(jì)單詞數(shù)
8.取出/etc/group文件中第三個(gè)字段數(shù)值最小的10個(gè)組的名字
[root@MiWiFi-R3-srv ~]# cat /etc/group|sort -n -t : -k 3|cut -d : -f1|head -10
root
bin
daemon
sys
adm
tty
disk
lp
mem
kmem
[root@MiWiFi-R3-srv ~]#
9.將/etc/fstab和/etc/issue文件的內(nèi)容合并為同一個(gè)內(nèi)容后保存至/tmp/etc.test文件中
[root@MiWiFi-R3-srv ~]# cat /etc/fstab /etc/issue >> /tmp/etc.test
[root@MiWiFi-R3-srv ~]# cat /tmp/etc.test
UUID=29b74cbb-382b-49ea-91c8-f1dcb9cae36c / ext4 defaults,noatime 0 0
UUID=FE5A-B773 /boot vfat defaults,noatime 0 0
UUID=b0c2039d-218d-47ba-9c9f-dffb7df77228 swap swap defaults,noatime 0 0
\S
Kernel \r on an \m
10 請(qǐng)總結(jié)描述用戶和組管理類命令的使用方法并完成以下練習(xí)
- 1 創(chuàng)建組distro遇绞,其GID為2016
[root@centos ~]# groupadd -g 2016 distro
[root@centos ~]# tail -1 /etc/group
distro:x:2016
- 2 創(chuàng)建用戶mandriva,其ID號(hào)為1005键袱,基本組為distro
[root@centos ~]# useradd -u 1005 -g distro mandriva
[root@centos ~]# tail -2 /etc/passwd
gentoo:x:502:502::/home/gentoo:/bin/bash
mandriva:x:1005:2016::/home/manddriva:/bin/bash
- 3 創(chuàng)建用戶mageia,其id號(hào)為1100摹闽,家目錄為/ home/linux;
[root@centos ~]# useradd -u 1100 -d /home/linux mageia
[root@centos ~]# tail -2 /etc/passwd
mandriva:x:1005:2016::/home/mandriva:/bin/bash
mageia:x:1100:1100::/home/linux:/bin/bash
- 4 給用戶mageia添加密碼蹄咖,為mageedu
[root@centos ~]# echo "mageedu"|passwd --stdin mageia
更改用戶 mageia 的密碼 。
passwd: 所有的身份驗(yàn)證令牌已經(jīng)成功更新付鹿。
- 5 刪除mandriva澜汤,但是保留家目錄
[root@centos ~]# userdel mandriva
[root@centos ~]# ls /home
c_primer6 gentoo linux lost+found lw mandriva
- 6 創(chuàng)建用戶slackware蚜迅,其id號(hào)為2002,基本組為distro俊抵,附加組peguin谁不;
[root@centos ~]# useradd -u 2002 -g distro -G peguin slackware
useradd: group 'peguin' does not exist
[root@centos ~]# groupadd peguin
[root@centos ~]# useradd -u 2002 -g distro -G peguin slackware
[root@centos ~]# tail -1 /etc/passwd
slackware:x:2002:2016::/home/slackware:/bin/bash
[root@centos ~]# tail -5 /etc/group
gentoo:x:502:
magedu:x:503:gentoo,fedora
distro:x:2016:
mageia:x:1100:
peguin:x:2017:slackware
- 7 修改slackware的默認(rèn)shell為/bin/tcsh;
[root@centos ~]# usermod -s /bin/tcsh slackware
[root@centos ~]# tail -2 /etc/passwd
mageia:x:1100:1100::/home/linux:/bin/bash
slackware:x:2002:2016::/home/slackware:/bin/tcsh
[root@centos ~]#
- 8 為用戶slackware新增附加組admins;
[root@centos ~]# groupadd admins
[root@centos ~]# usermod -a -G admins slackware
[root@centos ~]# tail -2 /etc/group
peguin:x:2017:slackware
admins:x:2018:slackware
[root@centos ~]# id slackware
uid=2002(slackware) gid=2016(distro) 組=2016(distro),2017(peguin),2018(admins)
/*也可以通過(guò)gpasswd命令來(lái)給組添加用戶
[root@centos ~]# gpasswd -a slackware admins
Adding user slackware to group admins
用戶和組的管理命令:
一 用戶和組管理:
- linux用戶分為管理員用戶(root)和普通用戶徽诲,普通用戶又分為系統(tǒng)用戶和登錄用戶刹帕。系統(tǒng)用戶僅用于運(yùn)行服務(wù)程序,可以不用登錄到系統(tǒng)上谎替;登錄用戶是實(shí)際的系統(tǒng)資源的使用者偷溺。
- 用戶組:為一批用戶統(tǒng)一授權(quán)的容器,相同權(quán)限用戶的集合院喜。組為管理員組和普通用戶組亡蓉。普通用戶組也分為系統(tǒng)用戶組和登錄用戶組。
- 用戶id和組id:linux系統(tǒng)使用16位二進(jìn)制數(shù)字來(lái)標(biāo)識(shí)用戶和組喷舀。用戶標(biāo)識(shí)叫userid或UID砍濒,組標(biāo)識(shí)為groupid或GID×蚵椋可標(biāo)識(shí)范圍為0 ~ 65535爸邢。用戶中root用戶標(biāo)識(shí)為0,系統(tǒng)用戶標(biāo)識(shí)占用1 ~ 999(centos7)拿愧,普通用戶占用1000+范圍杠河。管理員組標(biāo)識(shí)號(hào)也為0,系統(tǒng)用戶組占用1 ~ 999(centos7)浇辜,登錄用戶組占用1000+范圍券敌。
- 組類別:從用戶上來(lái)看分為用戶的主組(基本組)和附加組。從組中成員看可分用戶私有組(組名與用戶名相同且只有一個(gè)此用戶)和公共組(包含了多個(gè)用戶)
- 用戶信息庫(kù)和組信息庫(kù):用戶信息庫(kù)保存在/etc/passwd文件中柳洋,分為 以下七個(gè)段內(nèi)容待诅。
name:password:UID:GID:GECOS:directory:shell
密碼實(shí)際保存在/etc/shadow中,GID指用戶基本組熊镣,gecos指用戶注釋卑雁,后面為用戶家目錄和默認(rèn)shell
組信息庫(kù)保存在/etc/group中,組密碼保存在/etc/gshadow绪囱。組信息庫(kù)分為以下內(nèi)容:
GRGNAME:x:GID:user1测蹲,user2,...
user1,user2:表示以此組為附加組的用戶列表鬼吵。
- 相關(guān)命令 useradd扣甲,usermod,userdel齿椅,groupmod文捶,groupadd,groupdel,passwd.
- 1 groupadd命令:添加組荷逞。
-g,指明組id號(hào)粹排;
-r爬早,創(chuàng)建系統(tǒng)組曾沈; - 2 groupmod:修改組信息
-g,修改組gid;
-n女气,修改組名坝咐; - 3 groupdel:刪除組
- 4 useradd:添加用戶
-c:用戶注釋解虱,一般是用戶全名盆色;
-d:指定用戶家目錄。目錄不能事先存在胰耗,否則會(huì)有警告信息限次,不會(huì)得到skel相關(guān)文件給用戶
-g:設(shè)定用戶的基本組組名或GID
-G:設(shè)定用戶所屬的附加組列表,彼此間用逗號(hào)隔開柴灯,中間沒有空格
-m:強(qiáng)制創(chuàng)建用戶家目錄
-M:不創(chuàng)建用戶家目錄
-s:指定用戶默認(rèn)shell卖漫。安全shell列表為/etc/shells文件中的shell
-u:設(shè)定用戶的UID;用戶 ID 的數(shù)字值赠群。此值必須為唯一的羊始,除非使用了 -o選項(xiàng),此值必須非負(fù)查描,默認(rèn)使用大于等于 UID_MIN突委,且大于任何其他用戶ID 最小值
-o:允許使用重復(fù)的UID創(chuàng)建用戶賬號(hào)
useradd -D:顯示創(chuàng)建用戶時(shí)的默認(rèn)設(shè)置,即顯示的是/etc/default/useradd文件內(nèi)容冬三;
useradd -D 選項(xiàng):設(shè)置某默認(rèn)選項(xiàng)匀油;設(shè)置的也是/etc/default/useradd文件內(nèi)容;
例: ~]# useradd -D -s /bin/tcsh
-e, --expiredate EXPIRE_DATE:設(shè)定禁用日期勾笆,用戶賬號(hào)的過(guò)期期限敌蚜,過(guò)期后會(huì)被鎖定;格式為YYYY-MM-DD匠襟;
注意:這個(gè)與密碼過(guò)期時(shí)間是沒有關(guān)系的钝侠;
-f, --inactive INACTIVE:設(shè)置非活動(dòng)期该园,密碼過(guò)期后酸舍,賬戶被徹底禁用之前的天數(shù)。0 表示密碼過(guò)期后賬戶立即禁用里初,-1 表示禁用這個(gè)功能啃勉;
- 1 groupadd命令:添加組荷逞。
- 5 userdel:刪除用戶命令
userdel [選項(xiàng)] 登錄名
-r: 刪除用戶時(shí),同時(shí)一并刪除用戶家目錄和用戶郵箱.用戶郵箱在/var/spool/mail/目錄下 - 6 usermod命令:修改用戶的帳戶信息双妨。用法:usermod [選項(xiàng)] 登錄名
-c, --comment COMMENT:修改注釋信息淮阐;
-d, --home HOME_DIR:修改家目錄為新的位置叮阅,但一般應(yīng)該同時(shí)使用-m選項(xiàng)以保證原家目錄中的文件會(huì)移動(dòng)到新目錄中;
-e, --expiredate EXPIRE_DATE:修改禁用日期泣特;格式為YYYY-MM-DD浩姥;
-f, --inactive INACTIVE:修改非活動(dòng)期;
-g, --gid GROUP:修改基本組GID状您;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改附加組勒叠,修改時(shí)會(huì)覆蓋原有的附加組,一同使用-a選項(xiàng)膏孟,表示為用戶追加添加新的附加組眯分;
-a, --append:將用戶添加到附加組。只能和 -G 選項(xiàng)一起使用
-l, --login NEW_LOGIN:修改當(dāng)前用戶的用戶名柒桑;
-s, --shell SHELL:修改用戶登錄的shell弊决;
-u, --uid UID:修改用戶UID,這個(gè)值必須是唯一的魁淳,除非使用了-o選項(xiàng)飘诗,必須是非負(fù)值;
-o先改,--non-unique:用戶ID改為非唯一值疚察;
-L, --lock:鎖定用戶密碼,這會(huì)在用戶加密的密碼之前放置一個(gè)!仇奶;
-U, --unlock:解鎖用戶的密碼貌嫡;這將移除加密的密碼之前的!;
創(chuàng)建用戶時(shí)的默認(rèn)配置文件:
/etc/login.defs
定義了:mail目錄路徑该溯、密碼相關(guān)的期限(最長(zhǎng)岛抄、最小、警告)和密碼最少長(zhǎng)度狈茉、最小用戶uid夫椭、最大用戶uid、最小系統(tǒng)用戶uid氯庆、最大系統(tǒng)用戶uid蹭秋、最小組gid、最大組gid堤撵、最小系統(tǒng)組gid仁讨、最大系統(tǒng)組gid、是否自動(dòng)創(chuàng)建家目錄等內(nèi)容实昨;
/etc/default/useradd
定義默認(rèn)設(shè)置了:用戶的家目錄路徑洞豁、默認(rèn)shell、目錄骨架等內(nèi)容;
創(chuàng)建用戶時(shí)家目錄的環(huán)境配置文件:就是創(chuàng)建用戶后丈挟,系統(tǒng)會(huì)自動(dòng)創(chuàng)建用戶家目錄且會(huì)在里面自動(dòng)創(chuàng)建幾個(gè)固定文件即骨架目錄(.bash_logout .bash_profile .bashrc .mozilla)刁卜;是從/etc/skel里復(fù)制到家目錄的;
/etc/skel:家目錄骨架曙咽;
- 7 用戶影子口令文件/etc/shadow和passwd命令
密碼文件/etc/shadow格式:9個(gè)字段蛔趴,用冒號(hào)分隔
登錄名:加密了的密碼:最近一次更改密碼的日期:密碼的最短使用期限:密碼最長(zhǎng)使用期限:密碼過(guò)期提前警告天數(shù):非活動(dòng)期:賬戶禁用日期:保留字段
1、登錄名:有效登錄名例朱;
2夺脾、加密的密碼:密碼格式為:
!!$加密算法$salt$加密的密碼字符串
!!表示鎖定;
3茉继、最近一次更改密碼的日期:表示從1970年1月1日開始的天數(shù)咧叭,0表示用戶應(yīng)該在下次登錄系統(tǒng)時(shí)更改密碼,空字段表示密碼年齡功能被禁用烁竭;
4菲茬、密碼最短使用期限:用戶一次更改密碼之后,要等多長(zhǎng)時(shí)間才再次被允許更改密碼派撕;空或0表示隨時(shí)可修改密碼婉弹;
5、密碼最長(zhǎng)使用期限:就是有效期终吼,相對(duì)于上次修改密碼后的天數(shù)镀赌;99999天無(wú)限制,如果最大密碼年齡小于最小密碼年齡际跪,用戶將會(huì)不能更改密碼商佛;
6、最短警告期限:登錄就警告姆打;
7良姆、非活動(dòng)期:密碼過(guò)期后賬號(hào)禁用之前,就是寬限期幔戏;登錄后必須先改密碼玛追;空為沒限定;
禁用日期:
passwd命令:密碼管理命令
常用選項(xiàng):
-l:鎖定密碼闲延;
-u:解鎖密碼痊剖;
-f:強(qiáng)制;
-d:清除密碼垒玲;
-e:修改禁用日期:
-n:修改密碼最短使用期限陆馁;
-x:修改密碼最長(zhǎng)使用期限;
-w:修改密碼過(guò)期后警告期限侍匙;
-i:修改非活動(dòng)期限氮惯;
--stdin:從標(biāo)準(zhǔn)輸入設(shè)置密碼
例: echo "PASSWD" | passwd --stdin USERNAME
- 8 id 命令:查看用戶相關(guān)id信息,顯示結(jié)果包括UID想暗、基本組GID和所有組(包括附加組和基本組)
-u:僅查看UID妇汗;
-g:僅查看基本組GID;
-G:查看所屬的所有組ID说莫;
-n:顯示名稱杨箭,而非ID; - 9 gpasswd:組密碼修改命令
組密碼文件:/etc/gshadow
/etc/gshadow文件格式:
組名:加密了的組密碼:管理員:成員
1储狭、組名:必須是系統(tǒng)中已經(jīng)存在的有效組互婿;
2、加密了的組密碼:密碼格式為: !!$加密算法$salt$加密的密碼字符串
為空時(shí)只有組成員可以獲取組權(quán)限辽狈;以嘆號(hào)開始意味著密碼被鎖定慈参;
3、管理員:
4刮萌、成員:必須是一個(gè)逗號(hào)分隔的用戶名列表驮配,成員無(wú)需組密碼;
gpasswd [選項(xiàng)] group
-a, --add USERNAME:向組中添加用戶着茸;
-d, --delete USERNAME:從此組中移除用戶壮锻;