第三十五章 Linux常規練習題(二)參考答案


一、練習題一

1.刪除用戶基本組shanghai03。發現無法正常刪除,怎樣才能將其刪除掉,不能刪除用戶。

groupdel shanghai03

移除其所屬組的用戶


2.打開多個xshell窗口連接登錄同一虛擬機,使用不同的用戶登錄多次,分別使用w和who命令顯示當前系統上的所有已經登錄的用戶,取出用戶名這一列,注意:同一個用戶登錄多次,則只顯示一次即可。

w |awk '{print $1}' |sed '1,2d' |sort |uniq


3.創建用戶olddir,其ID號為1005,基本組為old

groupadd old

useradd -u 1005


4.顯示當前登錄的用戶的UID號,你有幾種方法實現?

id

cat /etc/passwd |grep yonghu


5.對於用戶來說,組有幾種類別?有什么區別?

基本組     #一個用戶只能擁有一個基本組
附加組     #當基本組的權限不夠用戶使用的,就出現了附加組 一個用戶允許擁有多個附加組


6./etc/group文件以:為分隔符,分為四列,解釋其每列的含義?

 

 

 

 

第一列組的名稱

第二列組的密碼占位符

第三列組的gid

第四列用戶名,哪些用戶用此組作為附屬組


7./etc/gshadow文件以:為分隔符,分為四列,解釋其每列的含義?

 

 

 第一列組的名稱

第二列組的密碼信息

第三列用戶組的管理者

第四列用戶名,哪些用戶用此組作為附屬組


8.如果想從root用戶切換到普通用戶,使用什么命令?

su - yonghu

sudo su - yonghu


9.切換到普通用戶后,想返回到root用戶,怎么做?有幾種方法,有什么區別?t

su - 

sudo su -

 

10.Shell主要分為哪幾類?

四類:

登錄式shell    #通過用戶名和密碼的方式進行登錄的 

非登錄式shell  #不是通過用戶名和密碼的方式進行登錄的    執行一個bash,就是一個非登錄式shell

交互式shell   #終端操作   輸入一條指令,需要等待系統的處理及返回結果

非交互式shell  #腳本的執行方式就是      用戶執行完指令 不需要跟系統進行交互

 

11.Bash Shell的個人及全局配置文件有哪些?哪個優先級別高?

個人配置文件:/etc/profile、/etc/bashrc、/etc/profile.d/*.sh

全局配置文件:/root/.bashrc、/root/.bash_profile

個人配置文件優先級最高


12.登錄式Shell配置文件執行順序?

/etc/profile>/etc/profile.d/*.sh>.bash_profile>.bashrc>/etc/bashrc


13.非登錄式shell配置文件執行順序?

.bashrc >/etc/bashrc>/etc/profile.d/*.sh


14.在root用戶下,以普通用戶身份執行"pwd"命令。

su - yonghu -c "pwd"

 

15.什么是sudo?

用戶提權 給普通用來提權


16.可以根據哪個文件對sudo提權?

/etc/sudoers


17.登錄到普通用戶,查看/etc/shadow文件的內容,發現查看不了,怎么辦?

[root@jindada ~]# visudo
jindada ALL=(ALL) /bin/cat /etc/shadow
[root@jindada ~]# visudo -c
/etc/sudoers: parsed OK
[root@jindada ~]# su - jindada
Last login: Wed Jul 22 16:10:13 CST 2020 on pts/2
[jindada@jindada ~]$ sudo cat /etc/shadow 就可以查看了


18.登錄到普通用戶,刪除/opt目錄,若無法刪除,該怎么解決?

[root@jindada ~]# visudo
jindada ALL=(ALL) /bin/rm
[root@jindada ~]# visudo -c
/etc/sudoers: parsed OK
[root@jindada ~]# su - jindada
Last login: Wed Jul 22 16:10:13 CST 2020 on pts/2
[jindada@jindada ~]$sudo rm -rf /opt 就可以刪除了


19.登錄到普通用戶,使用sudo命令時,不想輸出密碼,怎么解決?

[root@jindada ~]# visudo
jindada ALL=(ALL) NOPASSWD:/bin//bin/rm
[root@jindada ~]# visudo -c
/etc/sudoers: parsed OK
[root@jindada ~]# su - jindada
Last login: Wed Jul 22 16:10:13 CST 2020 on pts/2
[jindada@jindada ~]$sudo rm -rf /opt


20.怎樣查看普通用戶的sudo權限?

sudo -l


21.配置好了sudo授權,怎么檢查語法是否正確?

visudo -c


22.禁止root用戶遠程登錄,怎么實現?

vim /etc/ssh.sshd_config

38gg
進入編輯模式改成
PermitRootLogin no
:wq保存退出
[root@jindada ~]# systemctl restart sshd


23.修改遠程連接端口號為2222,然后進行登錄?

[root@jindada ~]# vim /etc/ssh/sshd_config
17gg
進入編輯模式改成
Port 2222
:wq保存退出
[root@jindada ~]# systemctl restart sshd


24.把對sshd的設置修改成原來的設置。

[root@jindada ~]# vim /etc/ssh/sshd_config
進入編輯模式改成
#PermitRootLogin yes
#Port 22
:wq保存退出
[root@jindada ~]# systemctl restart sshd


25.說出下面幾個特殊符號的含義 * > >> # .. . ^ $ `` !

  *  所有

>  標准輸出重定向

>> 標准輸出追加重定向

#  注釋    管理員命令行提示符

..  當前目錄的上一級目錄

.  當前目錄

^  以什么開頭

$  以什么結尾

``  優先執行里面的命令,把執行的命令結果交給外面的命令  里面必須是命令

!  取反

 

二、練習題二

1.用戶基礎權限為9位,每三位為一組,每組代表着誰的權限?

屬主  屬組  other


2.權限中的rwx-,每個字符所代表什么意思?對應的數字是什么?

r   可讀   4  

w    可寫  2

x    可執行     1

-    空   0


3.-rwxr-xr-x,寫出對應數字權限

755


4.-rwxr--r--,寫出對應數字權限

744


5.-r-xr-x--x,寫出對應數字權限

551

 

6.-rw-r-xr-x,寫出對應數字權限

655


7.-r--r--r--,寫出對應數字權限

444


8.-r-xr-----,寫出對應數字權限

540


9.---x-w-r--,寫出對應數字權限

124


10.-rwxr--rw-,寫出對應數字權限

746


11.-rw-r--r--,寫出對應數字權限

644


12.---xr--rwx,寫出對應數字權限

147


13.777,寫出對應字母權限

-rwxrwxrwx


14.545,寫出對應字母權限

-r-xr--r-x


15.744,寫出對應字母權限

-rwxr--r--


16.600,寫出對應字母權限

-rw-------


17.641,寫出對應字母權限

-rw-r----x


18.711,寫出對應字母權限

-rwx--x--x


19.700,寫出對應字母權限

-rwx------

 

20.555,寫出對應字母權限

-r-xr-xr-x


21.733,寫出對應字母權限

-rwx-wx-wx

 

22.713,寫出對應字母權限

-rwx--x-wx

 

23.建一個目錄/test,查看這個目錄的默認權限是?

mkdir /test

ll -d /test

0755

 

24.進入/test目錄中,建一個文件abc,查看其默認的權限為?

cd /test

touch abc

ll 

0644


25.創建一個文件test.txt,並其將權限改為600.

touch test,txt

chmod 600 test,txt


26.將test.txt文件的權限改為755.

chmod 755 test,txt


27.將test.txt文件的權限改為000.

chmod 000 test,txt


28.修改test.txt文件的權限為644.

chmod 644 test,txt


29.給test.txt文件的屬主加上x權限。

chmod u+x  test,txt


30.給test.txt文件的其他用戶加上x權限。

chmod  o+x  test,txt

  
31.去除test.txt文件的所有執行權限。

chmod a-x   test,txt


32.給/test目錄及目錄下的所有文件或目錄的權限統一改為744。

chmod -R 744 /test


33.給/test目錄及目錄下的所有文件或目錄加上x權限(屬主、屬組、其他用戶都執行權限)。

chmod -R a+x /test


34.使用stat命令查看test.txt文件的權限,並使用awk將權限取出來,比如:755

[root@jindada ~]# stat 1.txt |awk -F '[: (/]*' 'NR==4{print $2}'
0755


35.使用stat命令查看test.txt文件的權限,並使用sed將權限取出來,比如:755

[root@jindada ~]# stat 1.txt |sed -nr '4s#(.* \()(.*)(/-.*$)#\2#gp'
0755

 

三、練習題三

1.創建目錄/web01,所有者是user01,所屬組是user02;創建目錄/web02,所有者是user02,所屬組是user01。

mkdir /web01   /web02

useradd user01 

useradd user02

chown user01:user02 /web01

chown user02:user02 /web02


2.復制/etc/fstab文件到/opt下,設置文件所有者為tomcat讀寫權限,所屬組為apps組有讀寫權限,其他人無權限

useradd tomcat

group apps

cp /etc/fstab  /opt  

chown tomact:apps  /opt/fstab

chmod 660 /opt/fstab


3.將以下權限翻譯成數字,將數字權限用字母表示
rw-r-xr--   654
rw-r--r--   644
rwx--x--x   711
rw-------   600
rwxr--r--   744
rw-rw-r--   664
rwxrwxrwx   777
751     -rwxr-x--x

771     -rwxrwx--x
632     -rw--wx-w-
551     -r-xr-x--x
622     -rw--w--w-
746     -rwxr--rw-
644     -rw-r--r--
755     -rwxr-xr-x


4.假設公司研發部的用戶david和peter屬於組A,財務部的用戶life和laowang屬於組B,根據要求創建用戶及組。

groupadd A

groupadd B

useradd -g A  david

useradd -g A  peter

useradd -g B life

useradd -g B laowang


5.接第4題,建立目錄file1,該目錄里面的文件只能由研發部人員讀取、增加、刪除、修改以及執行,其他用戶不能對該目錄進行任何操作

mkdir -m 770  file1

chown :A file1


6.接第4題,建立目錄file2,該目錄里面的文件只能由財務部人員讀取、增加、刪除、修改以及執行,其他用戶不能對該目錄進行任何操作

mkdir -m 770 file2 

chgrp B file2

 
7.接第4題,建立目錄file3,該目錄里面的文件研發部人員可以讀取、增加、刪除、修改以及執行,其他部門只能做查看操作

mkdir -m 775 file3

chgrp A file3


8.接第4題,建立目錄file4,該目錄里面的文件只有研發部的經理David擁有所有操作權限,研發部的其他人只有查看權限,其他部門不能進行任何操作

mkdir -m 750 file4

chown david:A file4


9.新建用戶組,shengchan,demo,要求如下:
01、tom是shengchan組的附加成員

 

02、leo是demo組的附加成員

03、新建用戶admin不屬於以上任何一個組

groupadd shengchan

groupadd demo

useradd -g shengchan tom

useradd leo -g demo

useradd admin


10.新建目錄要求如下:
01、/pub/目錄為公共存儲目錄,所有用戶可以讀寫執行
02、/sc目錄是生產部的目錄,生產部的成員讀寫執行,並且生產部人員建立的文件自動歸屬到
shengchan組中
03、admin用戶可以在/sc目錄中可以讀

mkdir -m 777  /pub

mkdir -m 2770 /sc

chgrp shengchan /sc

chmod o+x /sc

11.新建目錄/www01,/www02,/www03

mkdir /www{01..03}


12.接第11題,更改/www01目錄的權限,使其他用戶對它沒有任何權限;

chmod o=- /www01

 

13.接第11題,更改/www02目錄的權限,使所屬組對它擁有讀寫執行權限;

chmod g=rwx /www02


14.接第11題,更改/www03目錄的權限,任何用戶都可以讀寫,但是在/www03目錄中創建的任何文件都屬於grp1組

groupadd grp1

chmod 2777 /www03

chgrp -R grp1 /www03


15.新建用戶zhangsan,lisi,wangergou,三個用戶都屬於同一個用戶組f4,密碼都為oldboy

groupadd f4

useradd -g f4 zhangsan

useradd -g f4 lisi

useradd -g f4 wangergou

echo "oldboy" |passwd --stdin zhangsan

echo "oldboy" |passwd --stdin lisi

echo "oldboy" |passwd --stdin wnagergou

 

16.接15題,上述用戶和組都能在/data/code目錄,訪問,創建,刪除文件,其他用戶無法訪問該目錄

mkdir -p -m 770 /data/code

chagrp -R f4 /data.code

 

17.接15題,/data/code目錄下創建的所有文件自動歸屬於f4組所有

chmod 2770 /data/code 


18.接15題,現在新增了一批用戶,屬於默認組,需要開放其他用戶在code目錄的讀權限

chmod o+rx /data/code

 

19.接15題,新增的所有其他用戶在code目錄下創建的文件自動歸屬f4組

chmod o+x   /data/code


20.有兩個用戶組,分別為python組、linux組,python組的人可以修改讀取python組的文件,但不能讓linux組的人讀取;linux組的人可以修改讀取linux組的文件,但不能讓python組的人讀取。

[root@jindada ~]#groupadd linux

[root@jindada ~]#grouadd python

[root@jindada ~]#touch python.txt

[root@jindada ~]#chmod 770 python.txt

[root@jindada ~]#chgrp python python.txt

[root@jindada ~]#touch linux.txt

[root@jindada ~]#chmod 770 linux.txt

[root@jindada ~]#chgrp python linux.txt


21.在當前目錄中新建文件text,假設該文件的權限為614。現要求設置該文件屬主(u)增加執行權限,屬組(g)增加寫權限,其他用戶(o)刪除讀權限,應該如何操作,另外修改后的權限用字母應該如何表示

touch text

chmod 614 text

chmod u+x,g+w,o-r text

730

-rwx-wx---


22.在當前目錄中創建目錄aaa,並把該目錄的權限設置為只有文件主有讀、寫和執行權限

mkdir -m 700 aaa

 

 

23.設某文件myfile的權限為-rw-r--r--,若要增加所有人可執行的權限,應該怎么做

chmod a+x myfile


24.登錄到普通用戶user01,刪除/opt這個目錄,提示權限不足,如果要刪除/opt這個目錄,不使用root用戶刪除的話,你該怎么解決?

sudo 提權

或者

[root@jindada ~]#chmod u+s /usr/bin/rm


25.創建目錄/test,要求所有用戶對這個目錄有所有權限,現在只想讓每個用戶在這個目錄只能對屬於自己的文件進行操作,怎么實現?

mkdir -m 1777 /test


26.創建一個文件/opt/file.txt,這個文件很重要,現要求所有人只能查看和追加內容進去,不允許有其他的操作,怎么實現?

touch /opt/file.txt 

chattr +a /opt/file.txt


27.取消上題的設置,現要求所有人只能查看此文件,不允許有其他的操作,怎么實現?

chattr -a /opt/file.txt

chattr -i /opt/file.txt


28.請問在當前系統中新創建的目錄和文件,權限各是多少,為什么?

目錄755

文件644

umask決定的


29.如果我想要在系統中新創建的目錄權限為555,文件為444,怎么實現?

umask=222


30.umask怎么計算目錄及文件權限的?

目錄的最大權限777減去umask 等於目錄的權限

文件的最大權限666減去umask等於文件的權限

 

31.在你修改了test.txt文件之后,如何知道在你下次要修改這個文件時,這個文件有沒有被別人修改過?

[root@jindada ~]# cp /etc/hosts ./
[root@jindada ~]# ll


total 4
drwxr-xr-x 2 root root 6 Jul 27 12:12 data
-rw-r--r-- 1 root root 158 Jul 28 10:29 hosts
[root@jindada ~]# md5sum hosts > figer.txt
[root@jindada ~]# cat figer.txt
54fb6627dbaa37721048e4549db3224d hosts
[root@jindada ~]# md5sum -c figer.txt
hosts: OK
[root@jindada ~]# echo "1" >> hosts
[root@jindada ~]# md5sum -c figer.txt
hosts: FAILED
md5sum: WARNING: 1 computed checksum did NOT match

 

32.輸入時間命令"date"將當前系統時間輸出到/data/1.txt

[root@jindada ~]# date
Tue Jul 28 10:31:47 CST 2020
[root@jindada ~]# mkdir -p /data
[root@jindada ~]# date > /data/1.txt
[root@jindada ~]# cat /data/1.txt
Tue Jul 28 10:32:22 CST 2020


33.輸入時間命令"date"將當前系統時間追加到/data/1.txt

date >> /date/1.txt


34.在當前系統能ping通百度的情況下,使用" ping -c3 baidu.com "將返回的信息輸出到/data/1.txt

ping -c3 baidu.com >/data/1.txt

 

35.使用“ls /ta”將錯誤的信息輸出到/data/1.txt

[root@jindada ~]# ls /ta 2>/data/1.txt
[root@jindada ~]# cat /data/1.txt
ls: cannot access /ta: No such file or directory


36.將/data/1.txt的文件內容,標准輸出到/data/2.txt

[root@jindada ~]# cat /data/1.txt > /data/2.txt
[root@jindada ~]# cat /data/2.txt
ls: cannot access /ta: No such file or directory


37.使用"seq 10 50"將以0結尾的行標准輸出到3.txt

[root@jindada ~]# seq 10 50 | grep '0$' > 3.txt
[root@jindada ~]# cat 3.txt
10
20
30
40
50
[root@jindada ~]# seq 10 50 | sed -n '/0$/p'
10
20
30
40
50
[root@jindada ~]# seq 10 50 | awk '/0$/'
10
20
30
40
50


38.把/etc/fstab文件內容重定向到/tmp目錄下文件名為fstab.out

[root@jindada ~]# cat /etc/fstab > /tmp/fstab.out
[root@jindada ~]# cat /tmp/fstab.out

#
# /etc/fstab
# Created by anaconda on Mon Jul 6 02:13:15 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=4aa02e85-ffe1-4783-9886-a328f923bee8 / xfs defaults 0 0
UUID=70df4a5b-091c-4aaa-9cc7-d745201ec394 /boot xfs defaults 0 0
UUID=6aefd444-30dc-4c0e-9a8d-75a8b1d9856b swap swap defaults 0 0

 

39.把字符"hello world"追加到/tmp/fstab.out文件尾部

[root@jindada ~]# echo "hello world" >> /tmp/fstab.out

 

 

40.輸入df -h,取出當前系統根分區已用磁盤空間的百分比,並將取出來的數值輸出到/data/1.txt

[root@jindada ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 98G 1.4G 97G 2% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 497M 120M 378M 25% /boot
tmpfs 199M 0 199M 0% /run/user/0
[root@jindada ~]# df -h | awk '/\/$/'
/dev/sda3 98G 1.4G 97G 2% /
[root@jindada ~]# df -h | awk '/\/$/{print $5}'
2%
[root@jindada ~]# df -h | awk '/\/$/{print $(NF-1)}' >/data/1.txt

 

41.使用命令ping測試10.0.0.100是否通暢,把輸出的結果不管是正確的還是錯誤的都追加到/data/1.txt

[root@jindada ~]# ping -c4 10.0.0.100 &> /data/1.txt
[root@jindada ~]# cat /data/1.txt
PING 10.0.0.100 (10.0.0.100) 56(84) bytes of data.
64 bytes from 10.0.0.100: icmp_seq=1 ttl=64 time=0.134 ms
64 bytes from 10.0.0.100: icmp_seq=2 ttl=64 time=0.038 ms
64 bytes from 10.0.0.100: icmp_seq=3 ttl=64 time=0.038 ms
64 bytes from 10.0.0.100: icmp_seq=4 ttl=64 time=0.034 ms

--- 10.0.0.100 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.034/0.061/0.134/0.042 ms


42.使用重定向從文件/etc/passwd中讀取數據。

[root@jindada ~]# 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

 

43.用 << 舉個命令的使用例子。

[root@jindada ~]# cat >123.txt<<EOF
> 12
> EOF
[root@jindada ~]# cat 123.txt
12


44.改變文件所有者的命令是?

[root@jindada ~]#chown

 

45.新建用戶oldboy,oldgirl,屬同一用戶組edu

[root@jindada ~]#groupadd edu

[root@jindada ~]#useradd -g edu oldboy

[root@jindada ~]#useradd -g edu oldgirl


46.修改文件1.txt的所有者為oldboy,屬組為edu

[root@jindada ~]#chown oldboy.edu 1.txt


47.除所有者以外,屬組和其他用戶均沒有任何權限(要求普通用戶進行驗證)
[root@jindada ~]# ll -d 1.txt
-rwx------ 1 oldboy edu 422 Jul 24 18:44 1.txt
[root@jindada ~]# cp -a 1.txt /
[root@jindada ~]# su - jh
Last login: Fri Jul 24 18:45:08 CST 2020 on pts/2
[jh@jindada ~]$ cd /
[jh@jindada /]$ echo '1' >1.txt
-bash: 1.txt: Permission denied


48.復制/etc/fstab文件到/var/tmp下,設置文件所有者為wangcai讀寫權限,所屬組為sysadmins組有讀寫權限,其他人無權限

[root@jindada ~]#cp /etc/fstab /var/tmp

[root@jindada ~]#useradd wangcai

[root@jindada ~]#groupadd sysadmins

[root@jindada ~]#chmod 660 /var/tmp/fstab

 

49.創建下面的用戶、組和組成員關系,用戶natasha,使用admins作為附屬組,用戶harry,也使用admins作為附屬組,用戶sh,不可以登錄系統,natasha,harry,sh密碼都是centos

[root@jindada ~]#groupadd admins

[root@jindada ~]#useradd -G admins natasha

[root@jindada ~]#useradd -G admins harry

[root@jindada ~]#useradd -M -s /sbin/nologin

[root@jindada ~]#echo "centos" | passwd --stdin natasha

[root@jindada ~]#echo "centos" | passwd --stdin harry

[root@jindada ~]#echo "centos" | passwd --stdin sh


50.新建一個用戶rose,uid為555,gid為500,注釋信息為:linux,家目錄在/rose

[root@jindada ~]#groupadd -g 500 rose

[root@jindada ~]#useradd -u 555 -g 500 -c "linux" -d /rose rose


51.翻譯題
01).command not found        #沒有這個命令
02).No such file or directory      #沒有這個文件或者目錄
03).Permission denied        #權限不足
04).overwrite         #覆蓋
05).File exists        #文件已存在
06).Is a directory        #這是個目錄
07).Not a directory          #這不是個目錄
08).Warning: Changing a readonly file     #警告:改變了一個只讀文件
09).Found a swap file by the name ".1.swp"     #找到一個交換文件,他的名字是.1.swp
10).unrecognized option '--oldboy'        #未知的選項 --oldboy
11).Operation not permitted          #操作不允許
12).invalid option         #無效的選項

 

 

四、練習題四


1.找出/tmp目錄下,屬主不是root,且文件名不以f開頭的文件

[root@jindada ~]#find /tmp -type f ! -user root -name "[^f]*"


2.查找/etc/目錄下,所有.conf后綴的文件

[root@jindada ~]#find /etc/ -type f -name "*.conf"

 

3.查找/var目錄下屬主為root,且屬組為mail的所有文件

[root@jindada ~]#find /var -user root -a -group mail

[root@jindada ~]# find /var -user root -a -group mail -ls
201345345 4 drwxrwxr-x 2 root mail 4096 Jul 24 09:08 /var/spool/mail
201696091 4 -rw------- 1 root mail 1857 Jul 22 11:11 /var/spool/mail/root


4.查找/var目錄下7天以前,同時屬主不為root,也不是postfix的文件

[root@jindada ~]#find /var -type f -mtime +7 ! -user root -a ! -user postfix

[root@jindada ~]# find /var -type f -mtime +7 ! \( -user root -o -user postfix \) -ls

 

 

5.查找/etc目錄下大於1M且類型為普通文件的所有文件

[root@jindada ~]#find /etc -type f -size +1M


6.查找/etc目錄下所有用戶都沒有寫權限的文件

[root@jindada ~]#find /etc/ ! -perm /222 -ls

 

 

7.查找/目錄下最后創建時間是3天前,后綴是*.log的文件

[root@jindada ~]#find / -type f -mtime +3 -name "*.log"

 

8.查找/目錄下文件名包含txt的文件

[root@jindada ~]#find / -type -name "*txt*"

 

9.查找/目錄下屬主是oldboy並且屬組是oldboy的文件

[root@jindada ~]#find / -user oldboy -group oldboy


10.查找/目錄下屬主是oldboy但是屬組不是oldboy的文件

[root@jindada ~]#find / -user oldboy ! -group oldboy

 

11.查找/目錄下屬主是oldboy或者屬主是oldgirl的文件

[root@jindada ~]#find / \( -user oldboy -o -user oldgirl \)


12.查找/tmp目錄下屬主既不是oldboy,也不是oldgirl的文件

[root@jindada ~]#find /tmp -type f ! -user oldboy -a ! -user oldgirl

[root@jindada ~]# find /tmp -type f ! \( -user oldboy -o -user oldgirl \) -ls

 

 

13.查找/var/log目錄下7天以前的文件

[root@jindada ~]#find /var/log -type f -mtime +7


14.查找/tmp目錄下15天以前的文件刪除

[root@jindada ~]#find /tmp -type f -mtime +15 -delete

[root@jindada ~]#find /tmp -type f -mtime +15 | xargs rm -f

[root@jindada ~]#find /tmp -type f -mtime +15 -exec rm -f {} \;

[root@jindada ~]#rm -f $(find /tmp -type f -mtime +15 )

[root@jindada ~]#rm -f `find /tmp -type f -mtime +15 `

 

15.查找/home目錄下,類型是目錄的,並且屬主是oldboy的目錄

[root@jindada ~]#find /home -type d -user oldboy


16.查找/var/log下大於100kb且以log結尾的所有文件

[root@jindada ~]#find /var/log -type f -size +100k -name "*log"


17.查找tmp目錄下所屬組group1,所屬主user1的目錄

[root@jindada ~]#find /tmp -type d -user user1 -a -group group1

 

 

18.同時查找根目錄下名為1.txt,2.txt的文件和名字帶a的目錄

[root@jindada ~]# find /data -type f -name "[12].txt" -o -type d -name "*a*"
/data
/data/1.txt
/data/2.txt

[root@jindada ~]# find /data \( -type f -name "[12].txt" -o -type d -name "*a*" \) -ls
818813 0 drwxrws--- 3 root ops_group 147 Jul 28 10:35 /data
818804 4 -rw-r--r-- 1 root ops_group 432 Jul 28 10:44 /data/1.txt
818807 4 -rw-r--r-- 1 root ops_group 49 Jul 28 10:35 /data/2.txt


19.查找/tmp目錄下所有文件並刪除

[root@jindada ~]#find /tmp -type f -delete

 

 

20.查找/etc目錄下至少有一類用戶沒有寫權限的文件

[root@jindada ~]#find /etc -type f ! -perm -222

[root@jindada ~]# find /etc -type f ! -perm -222 -ls

 

21.查找/var目錄下不屬於root、lp、gdm的所有文件

[root@jindada ~]#find /var -type f ! \( -user root -o -user lp -o -user gdm \)

[root@jindada ~]# find /var -type f ! \( -user root -o -user lp -o -user gdm \) -ls

 

22.將/etc/中的所有目錄(僅目錄)復制到/tmp下,目錄結構不變

[root@jindada ~]# find /etc -type d | xargs -I {} mkdir -p /tmp/{}

[root@jindada ~]# find /etc/ -type d -exec mkdir -p /opt/{} \;

 

23.將/etc目錄復制到/var/tmp/,/var/tmp/etc的所有目錄權限777 /var/tmp/etc目錄中所有文件權限666

[root@jindada ~]#cp -a /etc /var/tmp/

[root@jindada ~]#find /var/tmp/etc/ -type d -exec chmod 777 {} \;

[root@jindada ~]#find /var/tmp/etc/ -type f -exec chmod 666 {} \;


24.保留/var/log/下最近7天的日志文件,其他全部刪除

[root@jindada ~]#find /var/log ! -mtime -7 -delete


25.創建touch file{1..10}10個文件, 保留file9,其他一次全部刪除

[root@jindada opt]# find ./ -type f ! -name "file9" -delete

 

[root@jindada opt]# find ./ -type f -name "file[^9]*" -delete

26.解釋如下每條命令含義


mkdir /root/dir1 #創建目錄


touch /root/dir1/file{1..10} #創建文件


find /root/dir1 -type f -name "file5" #查找文件名為file5的文件


find /root/dir1 ! -name "file5" #查找文件名不是file5的文件


find /root/dir1 -name "file5" -o -name "file9" #查找文件名是file5或者是file9的文件


#錯誤寫法
find /root/dir1 -name "file5" -o -name "file9" -ls #查找文件名是file5或者是file9的文件並顯示詳細信息


find /root/dir1 \( -name "file5" -o -name "file9" \) -ls #查找文件名是file5或者是file9的文件並顯示詳細信息

 

find /root/dir1 \( -name "file5" -o -name "file9" \) -exec rm -rvf {} \;

#刪除file5或者file9

find /root/dir1 ! \( -name "file4" -o -name "file8" \) -exec rm -vf {} \;

#刪除文件名不叫file4或者file8的文件

 

 

 五、練習題五

1.linux下常見的壓縮包類型有哪些

.zip       #根據zip命令進行打包壓縮的

.gz       #通過gzip命令進行壓縮 只壓縮文件,也會刪除源文件

.bz2       #通過bzip進行壓縮, 只壓縮文件,也會刪除源文件

.tar.gz       #使用tar命令歸檔打包,然后使用gzip命令進行壓縮

.tar.bz2     #使用tar命令歸檔打包,然后使用bzip命令進行壓縮

 

2.將/etc/hosts文件用tar格式打包。

[root@jindada ~]#tar czf hosts.tar.gz /etc/hosts


3.查看打包之后的/etc/hosts的文件內容,在不解壓的情況下查看。

[root@jindada ~]#tar tf hosts.tar.gz

 

4.使用tar打包/var/log/目錄。

[root@jindada ~]#tar czf log.tar.gz /var/log/

 

5.使用zip打包/etc目錄。

[root@jindada ~]#zip -r etc.zip /etc

 

6.查看/var/log/目錄的壓縮包中有哪些內容。

[root@jindada ~]#tar tf log.tar.gz

 

7.將/var/log/目錄解壓到/opt目錄中。

[root@jindada ~]#tar xf log.tar.gz -C /opt

 

 

10.解壓/etc/目錄到/opt目錄中。

[root@jindada ~]#unzip etc.zip -d /opt

 

 

11.用zip打包/opt目錄,要求不顯示打包過程。

[root@jindada ~]#zip -rq opt.zip /opt

 

 

12.打包/etc/目錄,要求是.bz2格式

[root@jindada ~]#tar cjf etc.tar.bz2 /etc/

 

13.打包/var/log目錄,要求是.xz格式

[root@jindada ~]#tar cJf log.tar.xz /var/log

 

14.使用tar命令打包/etc/時,會出現一個刪根的操作,怎樣打包不會進行刪根的操作

[root@jindada ~]#tar czPf etc.tar.gz /etc

[root@jindada ~]#cd / && tar czf /root/etc.tar.gz etc && cd -

 

 

15.打包/etc/目錄,要求不打包/etc/hosts這個文件。

[root@jindada ~]#tar czf etc.tar.gz --exclude=/etc/hosts /etc/

 

16.打包/etc/目錄,要求不打包/etc/hosts和/etc/hostname這兩個文件。

[root@jindada ~]#tar czf etc.tar.gz --exclude=/etc/{hosts,hostname} /etc/

 

17.打包/etc/目錄,但要排除passwd,shadow,group,gshadow,hosts,hostname這些文件。(你能用兩種方法實現嗎)

vim paichu.list
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
/etc/hosts
/etc/hostname

[root@jindada ~]#tar czfX etc.tar.gz paichu.list /etc

 

18.已知/etc/grub2.cfg文件是個軟連接文件,在你不知道的情況下,請問怎么打包該文件的真實文件。

[root@jindada ~]#tar czhf grub.tar.gz /etc/grub2.cfg

 

19.把/var/log/目錄中所有.log的文件進行打包成一個壓縮包,名稱定義為log.tar.gz的壓縮包。

[root@jindada ~]#find /var/log -type f -name "*.log" | xrags tar czf log.tar.gz

 

 

20.已知文件oldboy.gz,請問在不解壓的情況下,怎樣查看該文件的內容。

[root@jindada ~]#zcat oldboy.gz

 

21.打包/etc/目錄,命令以ip地址+當前時間方式的壓縮包:比如: 10.0.0.100_2019-12-24_etc.tar.gz

[root@jindada ~]#tar czf $(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)_etc.tar.gz /etc

 

22.創建/data/bak目錄,然后復制如下文件到/data/bak目錄下
/etc/hosts
/etc/resolv.conf
/etc/fstab
/etc/bashrc
/etc/profile
/etc/rc.local
/etc/sudoers

[root@jindada ~]# mkdir -p /data/bak && echo -e "hosts\nresolv.conf\nfstab\nbashrc\nprofile\nrc.local\nsudoers" |sed -nr 's#(.*)#cp /etc/\1 /data/bak#gp' |bash

[root@jindada ~]# mkdir -p /data/bak && echo -e "hosts\nresolv.conf\nfstab\nbashrc\nprofile\nrc.local\nsudoers" |awk '{print "cp /etc/"$1" /data/bak"}'|bash

 

23.接22題,使用tar命令對/data/bak目錄下的文件及目錄以gzip的格式進行歸檔壓縮到/data目錄下(壓縮包的名字以自己名字命名)

[root@jindada ~]#tar czf /data/jindada.tar.gz /data/bak


24.使用tar命令查看上題/data目錄下壓縮包內的內容。

[root@jindada ~]#tar tf /data/jindada.tar.gz


25.把第23題/data目錄下的壓縮包,解壓到/backup目錄下

[root@jindada ~]#mkdir /backup

[root@jindada ~]#tar xf /data/jindada.tar.gz -C /backup

 

26.再次使用tar命令把/data/bak目錄下的文件及目錄以gzip的格式進行歸檔壓縮到/data目錄下,但是在進行歸檔壓縮時,排除文件“sudoers”,然后查看該壓縮包內容是否存在文件“sudoers”(壓縮包名自行擬定)

[root@jindada ~]#tar czf /data/jindada.tar.gz --exclude=/data/bak/sudoers /data/bak

 

27.打包/etc目錄下所有普通文件到root用戶家目錄。

[root@jindada ~]#find /etc/ -type f | xargs tar czf /root/file.tar.gz

 

 

28.打包/etc/目錄到/opt/目錄下,名稱要求以當前主機名和ip地址命名,例:oldboy_10.0.0.100.tar.gz

[root@jindada ~]#tar czf /opt/$(hostname)_$(date +%F)_etc.tar.gz /etc

 

29.如何使用gzip命令對文件進行壓縮、解壓

gzip file.txt

gzip -d file.txt.gz

 

 

30.如何用zip命令對文件以及目錄進行壓縮、解壓

zip file.txt.zip file.txt

zip -r etc.zip /etc

unzip etc.zip

unzip etc.zip -d /opt

 

 

31.創建一個自己名字的文件至/opt目錄

[root@jindada ~]#mkdir /opt/jh

 

32.打包opt整個目錄,並命名test_opt.tar.gz

[root@jindada ~]#tar czf test_opt.tar.gz /opt

 

 

33.查看打包好的test_opt.tar.gz里的文件

[root@jindada ~]#tar tf test_opt.tar.gz

 

34.將打包好的test_opt.tar.gz內容指定解壓至/tmp目錄

[root@jindada ~]#tar xf test_opt.tar.gz -C /tmp

 

35.打包etc目錄下的所有文件,不要目錄只要文件

[root@jindada ~]#find /etc ! -type d -exec cp {} /opt/ \;

[root@jindada ~]#tar czf opt.tar.gz /opt

[root@jindada ~]#find /etc ! -type d | xargs tar czf file.tar.gz

 

 

36.打包etc目錄下的所有文件,排除passwd,shadow

[root@jindada ~]#tar czf etc.tar.gz --exclude=/etc/{passwd,shadow} /etc

 

37.打包etc目錄下的所有以p開頭的文件

[root@jindada ~]#find /etc/ -type f -name "p*" | xargs tar czf p.tar.gz

 

 

38.打包etc目錄下所有大於1M的文件

[root@jindada ~]#find /etc/ -type f -size +1M | xargs tar czf big_file.tar.gz

 

 六、練習題六

 

1.某系統管理員需要每天做一定的重復工作,編制一個解決方案: 
(1).從下午4:50刪除/abc目錄下的全部子目錄和全部文件;  

[root@jindada ~]#crontab -e
50 16 * * * /bin/rm -rf /abc/* &>/dev/null

(2).每逢周一下午5:50將/data目錄下的所有目錄和文件歸檔並壓縮為文件backup.tar.gz;  

[root@jindada ~]#crontab -e
50 17 * * 1 /bin/tar czf $(date +\%F)_backup.tar.gz /data &>/dev/null

 

 

2.在每個月的第一天壓縮/etc目錄下的所有內容,存放在/root/backup目錄里,且文件名為當前系統時間?

[root@jindada ~]#crontab -e
00 00 1 * * /bin/tar czf /root/backup/$(date +\%F)_etc.tar.gz /etc &>/dev/null

 

3.每周三01:00~04:00每3分鍾執行一次/home/data/demo.sh

[root@jindada ~]#crontab -e
*/3 1-4 * * 3 /bin/bash /home/data/demo.sh &>/dev/null

 

4.每周一到周六的凌晨3點20分,運行tar命令對/etc/目錄進行存檔另存,存儲位置為/data/bak,文件名為“system_+當前系統時間”

[root@jindada ~]#crontab -e
20 3 * * 1-6 /bin/tar czf /data/bak/system_$(date +\%F).tar.gz /etc/ &>/dev/null

 

5.每日凌晨2點30分,運行cp命令對/etc/fstab文件拷貝到/tmp下

[root@jindada ~]#crontab -e
30 2 * * * /bin/cp /etc/fstab /tmp/fstab_$(date +\%F) &>/dev/null

 

6.每月每天凌晨3點30分和中午12點20分執行test.sh腳本

[root@jindada ~]#crontab -e
30 3 * * * /bin/bash test.sh &>/dev/null

[root@jindada ~]#crontab -e
20 12 * * * /bin/bash test.sh &>/dev/null

 

7.每月每天每隔6小時的每30分鍾執行test.sh腳本

[root@jindada ~]#crontab -e
*/30 */6 * * * /bin/bash test.sh &>/dev/null

 

8.每月每天早上8點到下午18點每隔2小時的每30分鍾執行test.sh腳本

[root@jindada ~]#crontab -e
*/30 8-18/2 * * * /bin/bash test.sh &>/dev/null

 

9.每月每天晚上21點30分執行test.sh腳本

[root@jindada ~]#crontab -e
30 21 * * * /bin/bash test.sh &>/dev/null

 

10.每月1號、10號、22號凌晨4點45分執行test.sh腳本

[root@jindada ~]#crontab -e
45 4 1,10,22 * * /bin/bash test.sh &>/dev/null

 

11.8月份周一、周日凌晨1點10分執行test.sh腳本

[root@jindada ~]#crontab -e
10 1 * 8 1,7 /bin/bash test.sh &>/dev/null

 

12.每月每天每小時整點執行test.sh腳本

[root@jindada ~]#crontab -e
00 * * * * /bin/bash test.sh &>/dev/null

 

13.每月的4號或每周一到周三的11點重啟vsftpd服務

[root@jindada ~]#crontab -e
00 11 4 * 1-3 /usr/bin/systemctl restart vsftpd &>/dev/null

 

14.解釋如下命令的含義
30 3,12 * * * /bin/sh /scripts/oldboy.sh      #每天的3點或者12點的30分執行/scripts/oldboy.sh

30 */6 * * * /bin/sh /scripts/oldboy.sh      #每天每隔6隔小時的30分執行/scripts/oldboy.sh

30 8-18/2 * * * /bin/sh /scripts/oldboy.sh      #每天的8點到18點每隔2隔的30分執行/scripts/oldboy.sh

30 21 * * * /usr/sbin/nginx -s reload        #每天晚上21點30分重載nginx服務


45 4 1,10,22 * * /usr/sbin/nginx -s reload     #每個月的1號 10號 2號的凌晨4點45分 重載nginx服務


10 1 * * 6,0 /usr/sbin/nginx -s reload        #每周六或者周日的凌晨1點10分重載nginx服務


0,30 18-23 * * * /usr/sbin/nginx -s reload     #每天的18點到23點的0分和30分執行重載nginx服務


00 11 * 4 1-3 /usr/sbin/nginx -s reload     #每年的4月份的每周一到周三的上午11點整重載nginx服務

 

15.寫一條計划任務,在每天晚上的3:05分執行腳本/usr/script/tongji.sh

[root@jindada ~]#crontab -e
05 3 * * * /bin/bash /usr/script/tongji.sh &>/dev/null

 

16.在每周6的凌晨3:15執行/home/shell/collect.pl,並將標准輸出和標准錯誤輸出到/dev/null設備,請寫出crontab中的語句

[root@jindada ~]#crontab -e
15 3 * * 6 /bin/bash /home/shell/collect.pl &>/dev/null

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM