一、练习题一

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

第三十五章 Linux常规练习题(二)参考答案的更多相关文章

  1. 第三十四章 Linux常规练习题(一)参考答案

    一.练习题一 1.超级用户(管理员用户)提示符是___#_,普通用户提示符是___$_. 2.linux关机重启的命令有哪些 ? 关机命令 重启命令 shutdown -h now shutdown ...

  2. 第三十三章 linux常规练习题(二)

    一.练习题一 1.删除用户基本组shanghai03.发现无法正常删除,怎样才能将其删除掉,不能删除用户.2.打开多个xshell窗口连接登录同一虚拟机,使用不同的用户登录多次,分别使用w和who命令 ...

  3. Gradle 1.12用户指南翻译——第三十五章. Sonar 插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  4. “全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  5. “全栈2019”Java第三十五章:面向对象

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. 第三十二章 Linux常规练习题(一)

    一.练习题一 1.超级用户(管理员用户)提示符是____,普通用户提示符是____.2.linux关机重启的命令有哪些 ?3.bash是什么?4.bash特性, 常见的bash特性有哪些?5.网卡的配 ...

  7. 第三十六章 Linux常用性能检测的指令

    作为一个Linux运维人员,介绍下常用的性能检测指令! 一.uptime 命令返回的信息: 19:08:17              //系统当前时间 up 127 days,  3:00     ...

  8. 第三十五章 metrics(3)- codahale-metrics基本使用

    <!-- metrics --> <dependency> <groupId>io.dropwizard.metrics</groupId> <a ...

  9. 【第三十五章】 metrics(3)- codahale-metrics基本使用

    <!-- metrics --> <dependency> <groupId>io.dropwizard.metrics</groupId> <a ...

随机推荐

  1. oracle之二数据字典表和动态性能视图

    数据字典表和动态性能视图 Oracle提供了大量的内部表,它们记录了数据库对象的更改和修正.可以将这些内部表划分为两种主要类型:静态的数据字典表和动态的性能表.这些内部表是由oracle维护的,可以说 ...

  2. [LeetCode]69. x 的平方根(数学,二分)

    题目 https://leetcode-cn.com/problems/sqrtx 题解 方法一:牛顿迭代法 按点斜式求出直线方程(即过点Xn,f(Xn)),然后求出直线与x轴交点,即为Xn+1: 求 ...

  3. MySQL隐式转换的坑

    MySQL以以下规则描述比较操作如何进行转换: 两个参数至少有一个是 NULL 时,比较的结果也是 NULL,例外是使用 <=> 对两个 NULL 做比较时会返回 1,这两种情况都不需要做 ...

  4. JavaScript闭包函数的理解

    闭包就是一个函数能够访问其函数外部作用域中的变量,即在外面可以调用函数中的函数的变量,其实他就是将函数内外部连接起来的桥梁 闭包三大特点: 1. 函数嵌套函数 2. 内部函数可以访问外部函数的变量 3 ...

  5. Vue iview可编辑表格的实现

    创建table实例页 views/table.vue <template> <h1>table page</h1> </template> <sc ...

  6. 深入了解几种IO模型(阻塞非阻塞,同步异步)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zk3326312/article/details/79400805一般来说,Linux下系统IO主要 ...

  7. 解决vue版本不匹配的问题 Vue packages version mismatch:

    解决方式:重新单独安装提示冲突的模块  比如如上的冲突,我重新下载了 npm i vue-template-compiler@2.6.7 --save 再重新启动就可以了 npm run dev

  8. Redis散列(Hash)的相关命令

    散列 就像一个减配的Redis 内部及其类似Java的Map 内容就是key:value结构 hash类型在面向对象编程的运用中及其适合,因为它可以直接保存编程语言中的实体类关系 增 hset hse ...

  9. spring注解(Component、依赖注入、生命周期、作用域)

    1.注解 注解就是一个类,使用@加上注解名称,开发中可以使用注解取代配置文件 2.@Component 取代<bean  class="">,@Component 取代 ...

  10. python3的基础数据类型

    看了很多文档,想自己整理一下关于python的数据类型.说干就干,下面接上. 首先,了解 常量与变量. 常量是什么?常量是指在整个程序操作过程中其值保持不变的数据: 变量是什么?变量即在程序运行过程中 ...