zoukankan      html  css  js  c++  java
  • 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 resolv.conf fstab bashrc profile rc.local sudoers" |sed -nr 's#(.*)#cp /etc/1 /data/bak#gp' |bash

    [root@jindada ~]# mkdir -p /data/bak && echo -e "hosts resolv.conf fstab bashrc profile rc.local sudoers" |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

     

  • 相关阅读:
    poj3669 广搜
    检索所有课程都选修的的学生的学号与姓名
    UVA10160 Servicing Stations
    uva11205 The broken pedometer 子集生成
    poj1101 the game 广搜
    poj3009 Curling 2.0 深搜
    poj 1564 Sum It Up 搜索
    HDU 2268 How To Use The Car (数学题)
    codeforces 467C George and Job(简单dp,看了题解抄一遍)
    HDU 2267 How Many People Can Survive(广搜,简单)
  • 原文地址:https://www.cnblogs.com/jhno1/p/13473799.html
Copyright © 2011-2022 走看看