基础_权限&特殊属性&打包压缩

1,用户权限

[root@localhost ~]# ls -l

total 24

-rw-r--r--. 1 root root  12 Jul 29 15:29 10.txt

drwxrwxrwx. 2 root root    6 Jul 24 10:55 www

-rw-r--r--. 1 root root  10 Jul 31 10:25 z.txt


- /d   文件的类型                   

rw-r--r-- 权限

三种身份:   rw- 属主   r-- 属组   r-- 陌生人   (每三个字符是一组)

                      User        Group     Others

                        u               g              o          


每个角色对应三种权限:

r  可读                                 4

w  可写                                2

x  可执行                             1

-  权限占位符   没有权限     0


权限的执行过程:系统会判断这个用户是否是文件的属主,如果是就按照属主的权限执行;如果不是就判断用户是否是是文件的属组,是就按照属组的权限执行;如果不是就按照陌生人的权限执行


设置权限:  chmod

选项: -R   递归设置针对当前目录及目录以下所有文件进行权限修改

             +  添加权限

              -  收回权限

              =  覆盖权限


设置权限的方法:

字母设置

[root@localhost ~]# ll

total 24

-rw-r--r--. 1 root root  12 Jul 29 15:29 10.txt


#属主增加执行权限

[root@localhost ~]# chmod u+x 10.txt

[root@localhost ~]# ll 10.txt

-rwxr--r--. 1 root root 12 Jul 29 15:29 10.txt

#属组减去可读权限

[root@localhost ~]# chmod g-r 10.txt

[root@localhost ~]# ll 10.txt

-rwx---r--. 1 root root 12 Jul 29 15:29 10.txt

#陌生人加上可读执行权限

[root@localhost ~]# chmod o+wx 10.txt

[root@localhost ~]# ll 10.txt

-rwx---rwx. 1 root root 12 Jul 29 15:29 10.txt


# 所有减去可读权限 , a代表所有

[root@localhost ~]# ll 10.txt

-rwx-wxrw-. 1 root root 12 Jul 29 15:29 10.txt

[root@localhost ~]# chmod a-w 10.txt

[root@localhost ~]# ll 10.txt

-r-x--xr--. 1 root root 12 Jul 29 15:29 10.txt

#  用逗号分隔,多次设置

[root@localhost ~]# chmod u+w,g+r 10.txt

[root@localhost ~]# ll 10.txt

-rwxr-xr--. 1 root root 12 Jul 29 15:29 10.txt

# 直接覆盖属主的权限为可写

[root@localhost ~]# chmod u=w 10.txt

[root@localhost ~]# ll 10.txt

--w-r-xr--. 1 root root 12 Jul 29 15:29 10.txt

数字设置

权限是使用八进制的数字进行标示权限  0-7

把每个角色的权限相加 rwx=7  rw=6  wx=3


[root@localhost ~]# ll file1

-rw-r--r--. 1 root root 58 Jul 30 14:43 file1

[root@localhost ~]# chmod 622 file1

[root@localhost ~]# ll file1

-rw--w--w-. 1 root root 58 Jul 30 14:43 file1


2,权限对文件及目录的影响


对文件的影响    (注意不能在root用户下创建文件)

r   可读  读取文件内容

w  可写  修改,编辑文件内容

x  可执行  执行文件 执行脚本

-  没有权限   没有任何操作权限



#  r 权限   只能读取文件的内容,不能编辑追加,删除复制

[root@babysnow ~]# touch /opt/abc.txt

[root@babysnow ~]# echo '1235'>/opt/abc.txt

[root@babysnow ~]# cat /opt/abc.txt

1235

[root@babysnow ~]# su - snow001

[snow001@babysnow ~]$ cat /opt/abc.txt

1235

[snow001@babysnow ~]$ echo 'jjjjjj'>/opt/abc.txt

-bash: /opt/abc.txt: Permission denied

[snow001@babysnow ~]$ rm -f /opt/abc.txt

rm: cannot remove ‘/opt/abc.txt’: Permission denied

[snow001@babysnow ~]$ mv /opt/abc.txt  ./abcc.txt

mv: cannot move ‘/opt/abc.txt’ to ‘./abcc.txt’: Permission denied


#  w 权限 , 只能追加,或覆盖源文件,不能查看内容,复制

[root@babysnow ~]# chmod o=w /opt/abc.txt

[root@babysnow ~]# ll /opt/abc.txt

-rw-r---w-. 1 root root 5 Aug  2 19:33 /opt/abc.txt


[root@babysnow ~]# su - snow001

[snow001@babysnow ~]$ cat /opt/abc.txt

cat: /opt/abc.txt: Permission denied

[snow001@babysnow ~]$ echo '2222'>>/opt/abc.txt

[snow001@babysnow ~]$ cp /opt/abc.txt  /etc/aaa.txt

cp: cannot open ‘/opt/abc.txt’ for reading: Permission denied



#   x 权限    啥也做不了

[root@babysnow ~]# chmod o=x /opt/abc.txt

[root@babysnow ~]# ll /opt/abc.txt

-rw-r----x. 1 root root 10 Aug  2 19:38 /opt/abc.txt


[root@babysnow ~]# su - snow001

Last login: Sun Aug  2 19:38:22 CST 2020 on pts/0

[snow001@babysnow ~]$ cat /opt/abc.txt

cat: /opt/abc.txt: Permission denied

[snow001@babysnow ~]$ echo 'ddh'>/opt/abc.txt

-bash: /opt/abc.txt: Permission denied

[snow001@babysnow ~]$ cp /opt/abc.txt  /etc/aaa.txt

cp: cannot open ‘/opt/abc.txt’ for reading: Permission denied


#  rx  权限, 可以正常读取和执行文件,不能修改复制文件

[root@babysnow ~]# chmod o=rx /opt/abc.txt

[root@babysnow ~]# ll /opt/abc.txt

-rw-r--r-x. 1 root root 10 Aug  2 19:38 /opt/abc.txt


[root@babysnow ~]# su - snow001

[snow001@babysnow ~]$ cat /opt/abc.txt

1235

2222

[snow001@babysnow ~]$ echo 'hhhh'>>/opt/abc.txt

-bash: /opt/abc.txt: Permission denied

[snow001@babysnow ~]$ cp /opt/abc.txt  /etc/acb.txt

cp: cannot create regular file ‘/etc/acb.txt’: Permission denied

[snow001@babysnow ~]$ /opt/abc.txt

/opt/abc.txt: line 1: 1235: command not found

/opt/abc.txt: line 2: 2222: command not found


# wx 权限,只能追加或者覆盖文件

[root@babysnow ~]# chmod o=wx /opt/abc.txt

[root@babysnow ~]# ll /opt/abc.txt

-rw-r---wx. 1 root root 10 Aug  2 19:38 /opt/abc.txt


[snow001@babysnow ~]$ cat /opt/abc.txt

cat: /opt/abc.txt: Permission denied

[snow001@babysnow ~]$ echo '222'>>/opt/abc.txt

[snow001@babysnow ~]$ cp /opt/abc.txt  /etc/aaa.txt

cp: cannot open ‘/opt/abc.txt’ for reading: Permission denied

[snow001@babysnow ~]$ vim /opt/abc.txt

[snow001@babysnow ~]$ /opt/abc.txt

bash: /opt/abc.txt: Permission denied


# rw权限  可以正常读写,可以用vim

[root@babysnow ~]# chmod o=rw /opt/abc.txt

[root@babysnow ~]# ll /opt/abc.txt

-rw-r--rw-. 1 root root 14 Aug  2 19:50 /opt/abc.txt


[root@babysnow ~]# su - snow001

Last login: Sun Aug  2 19:49:53 CST 2020 on pts/0

[snow001@babysnow ~]$ cat /opt/abc.txt

1235

2222

222

[snow001@babysnow ~]$ echo 'pppp'>>/opt/abc.txt

[snow001@babysnow ~]$ cp /opt/abc.txt  /etc/aaa.txt



对目录的影响

r  具有浏览目录下的列表及属性信息

w 拥有新建 删除 移动目录中文件的权利

x 拥有进入文件的权利 cd

-  没有权限


[root@babysnow ~]# mkdir /opt/test

[root@babysnow ~]# touch /opt/test/test{1,2}

[root@babysnow ~]# ll /opt/test/

total 0

-rw-r--r--. 1 root root 0 Aug  2 20:01 test1

-rw-r--r--. 1 root root 0 Aug  2 20:01 test2


# r 权限  ,只能读取目录下的文件名,看不到目录下文件的属性

其他什么都做不了

[root@babysnow ~]# chmod o=r /opt/test

[root@babysnow ~]# ll /opt/

drwxr-xr--. 2 root root 32 Aug  2 20:01 test

-rw-r--r--. 1 root root  0 Aug  2 19:30 test1


[snow001@babysnow ~]$ ll /opt/test

ls: cannot access /opt/test/test1: Permission denied

ls: cannot access /opt/test/test2: Permission denied

total 0

-????????? ? ? ? ?            ? test1

-????????? ? ? ? ?            ? test2


[snow001@babysnow ~]$ cd /opt/test/

-bash: cd: /opt/test/: Permission denied

[snow001@babysnow ~]$ cp /opt/test /root

cp: omitting directory ‘/opt/test’


# w 权限    啥也干不了

[root@babysnow ~]# chmod o=w /opt/test

[root@babysnow ~]# ll /opt/

drwxr-x-w-. 2 root root 32 Aug  2 20:01 test

-rw-r--r--. 1 root root  0 Aug  2 19:30 test1


[root@babysnow ~]# su - snow001

Last login: Sun Aug  2 20:17:08 CST 2020 on pts/0

[snow001@babysnow ~]$ ll /opt/test

ls: cannot open directory /opt/test: Permission denied

[snow001@babysnow ~]$ touch /opt/test/1.txt

touch: cannot touch ‘/opt/test/1.txt’: Permission denied

[snow001@babysnow ~]$ cd /opt/test/

-bash: cd: /opt/test/: Permission denied





#  x 权限 ,可以cd,可以cp,其他什么都没有

[root@babysnow ~]# chmod o=x /opt/test/

[root@babysnow ~]# ll /opt/test

total 0

-rw-r--r--. 1 root root 0 Aug  2 20:01 test1

-rw-r--r--. 1 root root 0 Aug  2 20:01 test2

[root@babysnow ~]# ll /opt/test/

total 0

-rw-r--r--. 1 root root 0 Aug  2 20:01 test1

-rw-r--r--. 1 root root 0 Aug  2 20:01 test2

[root@babysnow ~]# ll /opt

drwxr-x--x. 2 root root 32 Aug  2 20:01 test

-rw-r--r--. 1 root root  0 Aug  2 19:30 test1


[root@babysnow ~]# su - snow001

[snow001@babysnow ~]$ ll /opt/test

ls: cannot open directory /opt/test: Permission denied

[snow001@babysnow ~]$ cd /opt/test/

[snow001@babysnow test]$ mv /opt/test /root/test11

mv: failed to access ‘/root/test11’: Permission denied

[snow001@babysnow test]$ cp /opt/test/test1 /tmp/

[snow001@babysnow test]$ ll /tmp/

total 0

-rw-r--r--. 1 snow001 snow001 0 Aug  2 20:12 test1



# wx 权限  可以cd到该目录下,可以删除,移动,创建该目录到文件

[root@babysnow ~]# chmod o=wx /opt/test

[root@babysnow ~]# ll /opt/

drwxr-x-wx. 2 root root 32 Aug  2 20:01 test

-rw-r--r--. 1 root root  0 Aug  2 19:30 test1

[root@babysnow ~]# su - snow001

[snow001@babysnow ~]$ ll /opt/test

ls: cannot open directory /opt/test: Permission denied

[snow001@babysnow ~]$ touch /opt/test/1.txt

[snow001@babysnow ~]$ cp /opt/test/1.txt /root/

cp: cannot stat ‘/root/1.txt’: Permission denied

[snow001@babysnow ~]$ rm -f /opt/test/1.txt

[snow001@babysnow ~]$ mv /opt/test/test1 ./



# rx 权限  可以正常查看目录下的文件及属性

[root@babysnow ~]# chmod o=rx /opt/test

[root@babysnow ~]# ll /opt/

drwxr-xr-x. 2 root root 19 Aug  2 20:27 test

-rw-r--r--. 1 root root  0 Aug  2 19:30 test1


[snow001@babysnow ~]$ ll /opt/

drwxr-xr-x. 2 root root 19 Aug  2 20:27 test

-rw-r--r--. 1 root root  0 Aug  2 19:30 test1

[snow001@babysnow ~]$ mv /opt/test/test2 ./

mv: cannot move ‘/opt/test/test2’ to ‘./test2’: Permission denied

3,属主属组设置

[root@localhost ~]# ll /root/test

total 0

-rw-r--r--. 1 test11 test11 0 Aug  3 15:10 test1

-rw-r--r--. 1 test11 test11 0 Aug  3 15:10 test2

#  默认改变属主

[root@localhost ~]# chown root /root/test/test1

[root@localhost ~]# ll /root/test/test1

-rw-r--r--. 1 root test11 0 Aug  3 15:10 /root/test/test1

#改变属组  .root

[root@localhost ~]# chown .root /root/test/test1

[root@localhost ~]# ll /root/test/test1

-rw-r--r--. 1 root root 0 Aug  3 15:10 /root/test/test1

#也可同时改变

[root@localhost ~]# chown test11.test11 /root/test/test1

[root@localhost ~]# ll /root/test/test1

-rw-r--r--. 1 test11 test11 0 Aug  3 15:10 /root/test/test1


-R  递归设置该目录下的所有文件

[root@localhost ~]# ll /root/test/

total 0

-rw-r--r--. 1 test11 test11  0 Aug  3 15:10 test1

-rw-r--r--. 1  test11 test11 0 Aug  3 15:10 test2

[root@localhost ~]# chown -R root.root /root/test/

[root@localhost ~]# ll /root/test/test2

-rw-r--r--. 1 root root 0 Aug  3 15:10 /root/test/test2

[root@localhost ~]# ll /root/test/test1

-rw-r--r--. 1 root root 0 Aug  3 15:10 /root/test/test1


# chgrp 只能修改属组

[root@localhost ~]# chgrp test11 /root/test/test1

[root@localhost ~]# ll /root/test/test1

-rw-r--r--. 1 root test11 0 Aug  3 15:10 /root/test/test1


4, umask控制权限


# 以下为默认创建的目录和文件,目录权限 drwxr-xr-x ;文件权限 -rw-r--r--


[root@localhost ~]# ll

total 0

drwxr-xr-x. 2 root root 6 Aug  3 15:52 test

-rw-r--r--. 1 root root 0 Aug  3 15:58 test1

-rw-r--r--. 1 root root 0 Aug  3 15:58 test2


[root@localhost ~]# umask 044

[root@localhost ~]# mkdir date

[root@localhost ~]# touch date1

[root@localhost ~]# ll

total 0

drwx-wx-wx. 2 root root  6 Aug  3 16:16 date

-rw--w--w-. 1 root root  0 Aug  3 16:17 date1

drwxr-xr-x. 2 root root 19 Aug  3 16:05 test

-rw-r--r--. 1 root root  0 Aug  3 15:58 test1

-rw-r--r--. 1 root root  0 Aug  3 15:58 test2

# 以上改变umask044.

创建出的目录权限为drwx-wx-wx,最大权限777-044=733,即drwx-wx-w

文件权限为 -rw--w--w,最大权限666-044=622 即 -rw--w--w


[root@localhost ~]# umask 333

[root@localhost ~]# touch 123.txt

[root@localhost ~]# ll

total 0

-r--r--r--. 1 root root  0 Aug  3 16:30 123.txt

注意:当文件遇奇数,需加1    666-333=333,加上1即444,所以-r--r--r--

系统默认umask值为022



5,特殊权限



# setuid 权限表示在属主的x位

[root@localhost ~]# ll /usr/bin/rm

-rwxr-xr-x. 1 root root 62872 Aug 20  2019 /usr/bin/rm

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

[root@localhost ~]# ll /usr/bin/rm

-rwsr-xr-x. 1 root root 62872 Aug 20 2019 /usr/bin/rm


执行这个命令,相当于这个命令的的所有者

[test11@localhost ~]$ rm -r /opt/

[test11@localhost ~]$ ll /opt

ls: cannot access /opt: No such file or directory


[test11@localhost ~]$ mv /etc/passwd ./

mv: cannot move ‘/etc/passwd’ to ‘./passwd’: Permission denied


[root@localhost ~]# chmod u+s /usr/bin/mv

[root@localhost ~]# su - test11

Last login: Tue Aug  4 10:08:15 CST 2020 on pts/0

[test11@localhost ~]$ mv /etc/passwd /opt/

[test11@localhost ~]$ cat /opt

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

。。。。。。。



# setgid 权限表示在属组的x位

#先新建个目录,该目录下建个文件

[root@localhost ~]# mkdir /opt/test

[root@localhost ~]# touch /opt/test/test1


[root@localhost ~]# ll -d /opt/test

drwxr-xr-x. 2 root root 19 Aug  4 13:33 /opt/test

[root@localhost ~]# ll -d /opt/test/

drwxr-xr-x. 2 root root 19 Aug  4 13:33 /opt/test/

[root@localhost ~]# ll -d /opt/test/test1

-rw-r--r--. 1 root root 0 Aug  4 13:33 /opt/test/test1


# 用另一个用户在该目录下也建个文件

[root@localhost ~]# su - snow1

[snow1@localhost ~]$ touch /opt/test/test2

[root@localhost ~]# ll -d /opt/test/

drwxrwxrwx. 2 root root 32 Aug  4 13:36 /opt/test/

[root@localhost ~]# ll  /opt/test

-rw-r--r--. 1 root  root  0 Aug  4 13:33 test1

-rw-rw-r--. 1 snow1 snow1 0 Aug  4 13:36 test2     

 ##这里注意属主和属组


# 加上stgid权限

[root@localhost ~]# chmod g+s /opt/test/

[root@localhost ~]# ll -d /opt/test/

drwxrwsrwx. 2 root root 32 Aug  4 13:36 /opt/test/


[root@localhost ~]# stat /opt/test/                         --->这一步是查看该目录权限,4777中的4代表setgid

  File: ‘/opt/test/’

  Size: 40        Blocks: 0          IO Block: 4096  directory

Device: 803h/2051d Inode: 67765615    Links: 2

Access: (4777/drwsrwxrwx)  Uid: (    0/    root)  Gid: (    0/    root)

Context: unconfined_u:object_r:usr_t:s0

Access: 2020-08-04 13:16:03.520573584 +0800

Modify: 2020-08-04 13:13:56.719578719 +0800

Change: 2020-08-04 13:16:47.649571797 +0800

Birth: -

# 新建qqq组,归属于test目录的组,然后新建文件的属组就是qqq

[root@localhost ~]# groupadd qqq

[root@localhost ~]# chgrp qqq /opt/test/

[root@localhost ~]# ll -d /opt/test/

drwxrwsrwx. 2 root qqq 32 Aug  4 13:36 /opt/test/

[root@localhost ~]# touch /opt/test/test4

[root@localhost ~]# ll /opt/test/

-rw-r--r--. 1 root  root  0 Aug  4 13:33 test1

-rw-rw-r--. 1 snow1 snow1 0 Aug  4 13:36 test2

-rw-r--r--. 1 root  qqq  0 Aug  4 13:41 test4


#  该目录权限改为770 显示删除其他用户创建的文件没有权限

[root@localhost ~]# chmod 770 /opt/test/

[root@localhost ~]# su - snow1

[snow1@localhost ~]$ rm -f /opt/test/test1

rm: cannot remove ‘/opt/test/test1’: Permission denied


# 把snow1用户加入到qqq组

[root@localhost ~]# usermod -aG qqq snow1

[root@localhost ~]# id snow1

uid=1009(snow1) gid=1009(snow1) groups=1009(snow1),6670(qqq)


#  再执行删除其他用户创建的文件就可以了

[snow1@localhost ~]$ ll /opt/test/

-rw-r--r--. 1 root  root  0 Aug  4 13:33 test1

-rw-rw-r--. 1 snow1 snow1 0 Aug  4 13:36 test

[snow1@localhost ~]$ rm -f /opt/test/test1

[snow1@localhost ~]$ ll /opt/test/

total 0

-rw-rw-r--. 1 snow1 snow1 0 Aug  4 13:36 test2

#  sticky   t   T(主要看有没有执行权限,有就是t,没有x就是T)

[root@localhost ~]# ll -d /tmp

drwxrwxrwt. 11 root root 218 Aug  4 12:08 /tmp


[root@localhost ~]# touch /tmp/a.txt

[root@localhost ~]# su - baby1

Last login: Tue Aug  4 12:04:48 CST 2020 on pts/2

[baby1@localhost ~]$ touch /tmp/b.txt

[baby1@localhost ~]$ su - baby2

Password:

[baby2@localhost ~]$ touch /tmp/c.txt


[baby2@localhost ~]$ ll /tmp/

total 4

-rw-r--r--. 1 root  root    0 Aug  4 12:20 a.txt

-rw-r--r--. 1 baby1 babyy  0 Aug  4 12:20 b.txt


#  可以查看其他文件内容,删除自己创建的文件,不可以对其他文件进行删除

[baby2@localhost ~]$ rm -f /tmp/a.txt

rm: cannot remove ‘/tmp/a.txt’: Operation not permitted

[baby2@localhost ~]$ rm -f /tmp/c.txt

[baby2@localhost ~]$ ll /tmp/

total 4

-rw-r--r--. 1 root  root    0 Aug  4 12:20 a.txt

-rw-r--r--. 1 baby1 babyy  0 Aug  4 12:20 b.txt


6,特殊属性

不受权限的控制

a    #针对文件操作  只能对这个文件追加内容, 查看、复制内容,不能修改移动删除

i    #无敌查看,复制可以,其他说明都不允许

lsattr   查看特殊属性

chattr  设置特殊属性


[root@localhost ~]# touch 123.txt

[root@localhost ~]# ll

total 0

-rw-r--r--. 1 root root 0 Aug  3 16:39 123.txt

[root@localhost ~]# echo '12345'>123.txt

[root@localhost ~]# cat 123.txt

12345

[root@localhost ~]# chattr +a test1

[root@localhost ~]# lsattr 123.txt

-----a---------- 123.txt

[root@localhost ~]# cat 123.txt

12345

[root@localhost ~]# chattr -a test1

[root@localhost ~]# chattr +a 123.txt

[root@localhost ~]# cat 123.txt

12345

[root@localhost ~]# echo '666'>>123.txt

[root@localhost ~]# cat 123.txt

12345

666

[root@localhost ~]# mv 123.txt /opt/333.txt

mv: cannot move ‘123.txt’ to ‘/opt/333.txt’: Operation not permitted

[root@localhost ~]# rm -f 123.txt

rm: cannot remove ‘123.txt’: Operation not permitted


[root@localhost ~]# touch date1

[root@localhost ~]# echo 'abcdefg'>date1

[root@localhost ~]# chattr +i date1

[root@localhost ~]# lsattr date1

----i----------- date1

[root@localhost ~]# echo '123' >>date1

-bash: date1: Permission denied


7,输入输出


stdin       0  # 标准输入            默认从键盘从读取内容

stdout    1  # 标准输出              默认将输出的内容输出到从屏幕上

stderr      2  # 错误输出           默认将错误的输出内容输出到从屏幕上


输出重定向

>  标准覆盖输出重定向    会覆盖源文件,源文件不存在时会自己创建

>>标准追加输出重定向   将内容追加刀片文件的底部 ,源文件不存在时会自己创建

2> 标准错误覆盖输出重定向   将错误的信息 覆盖源文件的内容 ,源文件不存在时会自己创建

2>>标准错误追加输出重定向 将错误的信息追加到文件底部,源文件不存在时会自己创建


[root@localhost ~]# touch bb

[root@localhost ~]# echo '12345' >bb

[root@localhost ~]# cat bb

12345

[root@localhost ~]# echo '666'>>bb

[root@localhost ~]# cat bb

12345

666


[root@localhost ~]# cat ee 2>cc

[root@localhost ~]# cat cc

cat: ee: No such file or directory


[root@localhost ~]# ll /ppt 2>>cc

[root@localhost ~]# cat cc

cat: ee: No such file or directory

ls: cannot access /ppt: No such file or directory


#  打开2.txt 输出的正确内容到a.txt 错误到输出到b.txt

[root@babysnow ~]# cat 2.txt>a.txt 2>b.txt

[root@babysnow ~]# cat a.txt

[root@babysnow ~]# cat b.txt

cat: 2.txt: 没有那个文件或目录


# 打开bbq这个文件的内容不管是否错误都输入到file2这个文件里

[root@babysnow ~]# cat bbq.txt >file2 2>&1

[root@babysnow ~]# cat file2

cat: bbq.txt: 没有那个文件或目录


<    标准输入重定向     默认从键盘中读取内容变成从指定的命令或文件中读取内容 

<<  限定标识符重定向   直到遇到限定标识符的分节符为止


[root@babysnow ~]# cat 1.txt

Ip7GK[sG<1^(Q

[root@babysnow ~]# tr 'p' 'Q' <1.txt

IQ7GK[sG<1^(Q


# 可省略的<

[root@babysnow ~]# grep -r 'root' <./

.bash_history:locate -i /root

.bash_history:wget https://liunx.web3.xin/ -qO /root/aaa

.bash_history:grep -w 'root' passwd

==

[root@babysnow ~]# grep -r 'root' ./

./.bash_history:locate -i /root

./.bash_history:wget https://liunx.web3.xin/ -qO /root/aaa

./.bash_history:grep -w 'root' passwd


[root@babysnow ~]# cat >bbq.txt<<abc

> 123

> 2324

> 333

> abc

[root@babysnow ~]# cat bbq.txt

123

2324

333


tee 

-a  追加


[root@localhost ~]# echo $|md5sum|tee aa.txt

f21e02b3bdc1281addf2a73bde17f8fa  -

[root@localhost ~]# cat aa.txt

f21e02b3bdc1281addf2a73bde17f8fa  -


[root@localhost ~]# echo '122222'|tee -a aa.txt

122222

[root@localhost ~]# cat aa.txt

f21e02b3bdc1281addf2a73bde17f8fa  -

122222



|  管道符,即把左边的命令执行作为一个标准输出,通过管道符交给右边的命令去执行

如果执行不了  加上xargs

[root@localhost ~]# ls|tee bbb.txt

10.txt

111.txt

aaa.txt

aa.txt

anaconda-ks.cfg

bbb.txt

file1

file2

passwd

www

z.txt

[root@localhost ~]# cat bbb.txt

10.txt

111.txt

aaa.txt

aa.txt

anaconda-ks.cfg

bbb.txt

file1

file2

passwd

www

z.txt



8,文件查找  find 命令


根本文件的名称 类型 权限 属主属组 目录层次 大小

语法: find 路径 选项 表达式 动作

根据名称进行查找:

-name  :根据名称查找

-iname : 查找的时候不区分大小写


#  -print 为默认可不加

[root@localhost ~]# find / -name "rm"

/usr/bin/rm

/usr/share/locale/rm

=

[root@localhost ~]# find / -name "rm" -print

/usr/bin/rm

/usr/share/locale/rm


#搜索以baby为开头的文件

[root@localhost ~]# find / -name "baby*"

/var/spool/mail/baby1

/var/spool/mail/baby2

/var/spool/mail/baby3

/home/baby1

/home/baby2

/home/baby3


#搜索以bash为结尾的文件

[root@localhost ~]# find / -name "*bash" 

/usr/bin/bash

/usr/lib/dracut/modules.d/00bash

/usr/share/doc/util-linux-2.23.2/getopt-parse.bash


# 查找含有[root@localhost ~]# find / -name "*sbin*"          名字保护这个字符串的都满足

/usr/sbin

/usr/lib/debug/usr/sbin

/usr/lib/debug/sbin

/usr/lib/firmware/amd/amd_sev_fam17h_model0xh.sbin

/usr/local/sbin

/sbin


根据类型查找

-type

f        普通文件

d       目录

l        软连接

c      字符设备

b      快设备

s       socket文件 套接字

p      管道文件


#查找普通文件a.txt名称的文件

[root@localhost ~]#

[root@localhost ~]# find / -type f -name "a.txt"

/tmp/a.txt

/home/baby2/a.txt


#查找opt路径下的目录文件

[root@localhost ~]# find /opt -type d

/opt

/opt/anaconda

/opt/audit

/opt/user04

/opt/test


#会默认把隐藏文件查找出来

[root@localhost ~]# find /root -type f

/root/.bash_logout

/root/.bash_profile

/root/.bashrc

/root/.cshrc

/root/.tcshrc



根据目录层级查找

-maxdepth

#          注意该选项要放在最前面

[root@localhost ~]# find -maxdepth 2 -type f -name "*txt*"

./aaa.txt

./10.txt

./z.txt

./111.txt

./aa.txt

./bbb.txt


根据文件大小查找

-size

b k M G


# 查找普通文件大小为200k的文件

[root@localhost ~]# find / -type f -size 200k

find: ‘/proc/73399/task/73399/fdinfo/6’: No such file or directory

find: ‘/proc/73399/fdinfo/5’: No such file or directory

/usr/lib/modules/3.10.0-1127.el7.x86_64/kernel/arch/x86/kvm/kvm.ko.xz

/usr/lib/python2.7/site-packages/yum/__init__.pyc

/usr/share/locale/sv/LC_MESSAGES/binutils.mo



#查找大于5k的普通文件   (会把文件大小进行凑整)

[root@localhost ~]# find /var/log -size +5k

/var/log/tallylog

/var/log/lastlog

/var/log/wtmp

/var/log/audit/audit.log

/var/log/anaconda/anaconda.log

/var/log/anaconda/syslog


#  查找小于1k的文件

[root@localhost ~]# find /var/log -size -1k

/var/log/anaconda/ks-script-vEWePy.log

/var/log/anaconda/ks-script-yKmYMu.log

/var/log/boot.log

/var/log/firewalld

/var/log/spooler-20200730

/var/log/spooler-20200723

/var/log/btmp


#查找空文件

[root@localhost ~]# find / -size 0b


根据文件权限进行查找

-perm

xxx:精确查找

-xxx :模糊匹配

/xxx :满足其中一个条件即可

#  精确查找

[root@localhost ~]# find -perm 644

./.bash_logout

./.bash_profile

./.bashrc

./.cshrc


根据时间进行查找

-mtime  根据时间属性查找


与网络时间同步

[root@localhost ~]# nptdate ntp.aliyun.com


#  3天以前的文件

[root@localhost ~]# find /root -type f -mtime +3

/root/.bash_logout

/root/.bash_profile

/root/.bashrc

/root/.cshrc

/root/.tcshrc


#  3天内的文件

[root@localhost ~]# find /root -type f -mtime -3

/root/.bash_history

/root/111.txt

/root/aa.txt

/root/bbb.txt


# 第三天的文件

[root@localhost ~]# find / -type f -mtime 3

find: ‘/proc/74299/task/74299/fdinfo/6’: No such file or directory

find: ‘/proc/74299/fdinfo/5’: No such file or directory

/run/sudo/ts/bb1



根据文件属主属组进行查找

-user  属主

-group  属组

-nouser  没有属主

-nogroup   没有属组


[root@localhost ~]# find / -nouser -ls

find: ‘/proc/74484/task/74484/fd/6’: No such file or directory

find: ‘/proc/74484/task/74484/fdinfo/6’: No such file or directory

find: ‘/proc/74484/fd/5’: No such file or directory

find: ‘/proc/74484/fdinfo/5’: No such file or directory

592023    0 -rw-rw----  1 5455    mail            0 Jul 29 10:46 /var/spool/mail/user04





find的动作

-print  打印 默认动作

-ls  以长格式显示文件

-delete 删除文件 只能删除空目录

-exec  后面跟自定义shell命令


9,打包压缩


制作一个压缩包

减少磁盘空间

加快传输速度

windows: .zip     .rar

Linux     : .zip   不支持.rar


压缩包的类型:

.zip                  zip命令进行压缩

.gz                   gzip格式进行压缩

.tar.gz                 使用tar命令进行打包,gzip进行压缩


zip压缩

选项

-r   递归压缩 压缩目录

-q   静默输出


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

[root@localhost ~]# unzip passwd.zip


[root@localhost ~]# ll

-rw-r--r--. 1 root root 12576333 Aug  4 15:40 etc.zip

-rw-r--r--. 1 root root      525 Aug  4 15:39 passwd.zip

unzip

-l  下那是压缩包列表信息

-q  静默输出

-d  解压到指定的目录


#  列表信息

[root@localhost ~]# unzip -l passwd.zip

Archive:  passwd.zip

  Length      Date    Time    Name

---------  ---------- -----  ----

      835  07-30-2020 14:44  passwd

---------                    -------

      835                    1 file


#   解压到指定目录etc目录

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



gzip  只能压缩文件 会删除源文件  不需要指定压缩包

-d 解压

[root@localhost ~]# gzip 10.txt

[root@localhost ~]# ll

-rw-r--r--. 1 root root      39 Jul 29 15:29 10.txt.gz


# 打开压缩包

[root@localhost ~]# zcat 10.txt.gz

e3e74e9f3ed


#解压压缩包

[root@localhost ~]# gzip -d 10.txt

[root@localhost ~]# ll

-rw-r--r--. 1 root root 12 Jul 29 15:29 10.txt



tar命令  归档打包

选项:

z  使用gzip格式打包

c  创建一个压缩包

f  指定压缩包名称

v  显示过程


zcf   打包组合


t  显示列表

tf  显示指定的压缩包的列表信息

x  解压

xf  解压指定的压缩包

-C 解压到指定的目录

h  打包软连接的真实路径

P 使用绝对路径打包

X  指定排除列表

--exclude=    指定排除文件

--exclude-from=  指定排除列表                      


[root@localhost ~]# tar zcf aaa.tar.gz aaa.txt

[root@localhost ~]# ll

-rw-r--r--. 1 root root      125 Aug  5 14:51 aaa.tar.gz

-rw-r--r--. 1 root root        9 Jul 29 15:25 aaa.txt


# 查看该压缩包的列表信息

[root@localhost ~]# tar tf aaa.tar.gz

aaa.txt


#  解压到指定opt目录下

[root@localhost ~]# tar xf aaa.tar.gz -C /opt/

[root@localhost ~]# ll /opt/

total 400

-rw-r--r--. 1 root root      9 Jul 29 15:25 aaa.txt


[root@localhost ~]# tar zcf opt.tar.gz --exclude=/opt/aaa.txt /opt/


[root@localhost ~]# cat file00

/opt/aaa.txt

/opt/yum.log


[root@localhost ~]# tar zcf opt.tar.gz --exclude-from=file00 /opt/


[root@localhost ~]# tar zcfX opt.tar.gz file00 /opt


以上三个都是一样的,压缩排除目录下的某个文件




10,时间命令


date 命令


[root@localhost ~]# date +%Y     年

2020

[root@localhost ~]# date +%y    年

20

[root@localhost ~]# date +%m   月

08

[root@localhost ~]# date +%d   日

05

[root@localhost ~]# date +%F  

2020-08-05

[root@localhost ~]# date +%H   时

15

[root@localhost ~]# date +%M  分

47


[root@localhost ~]# date +%S   秒

35


[root@localhost ~]# date +%T

15:48:55

[root@localhost ~]# date +%j

218                                                今年过了多少天


##     按照指定时间进行显示

date -d

[root@localhost ~]# date -d "+1month" +%F

2020-09-05

[root@localhost ~]# date -d "-1year" +%F

2019-08-05


##  真正改变时间

date -s

[root@localhost ~]# date -s 2019

Wed Aug  5 20:19:00 CST 2020


[root@localhost ~]# date 15:30:20

date: invalid date ‘15:30:20’


[root@localhost ~]# date -s "20200502 15:20:30"

Sat May  2 15:20:30 CST 2020

[root@localhost ~]# date

Sat May  2 15:20:33 CST 2020


#   同步系统时间           yum install ntpdate -y

[root@localhost ~]# ntpdate ntp.aliyun.com

5 Aug 15:55:54 ntpdate[97506]: step time server 203.107.6.88 offset 8210072.486906 sec

[root@localhost ~]# date

Wed Aug  5 15:56:01 CST 2020


11,rpm软件包管理


选项:

-i  按照

-v  显示过程

-h  显示安装进度条

-e  卸载一个软件包

-U  升级


#本地安装的软件包,需要依赖,自己不会找依赖

#挂在光盘


[root@localhost ~]# ll /dev/sr0

brw-rw----. 1 root cdrom 11, 0 Jul 16 16:12 /dev/sr0


[root@localhost ~]# ll /mnt/

[root@localhost ~]# mount sr0 /mnt/


[root@localhost ~]# mount dev/sr0 /mnt/


[root@localhost ~]# rmp -ivh nss_wrapper-1.1.3-1.el7.x86_64.rpm

[root@localhost ~]# rpm -e tree


#  联网安装

-U  升级

[root@localhost ~]# rpm -ivh https://mirrors.aliyun.com/centos-vault/7.6.1810/dotnet/x86_64/Packages/


#  显示指定的软件包是否安装

[root@localhost ~]# rpm -q tree

tree-1.6.0-10.el7.x86_64


# 显示已安装的软件包

[root@localhost ~]# rpm -qa tree


#显示软件包的列表信息

[root@localhost ~]# rpm -ql tree

/usr/bin/tree

/usr/share/doc/tree-1.6.0

/usr/share/doc/tree-1.6.0/LICENSE

/usr/share/doc/tree-1.6.0/README

/usr/share/man/man1/tree.1.gz


# 显示软件的配置文件信息

[root@localhost ~]# rpm -qc tree


# 查询一个命令属于哪个软件包    -注意反引号

[root@localhost ~]# rpm -qf `which ntpdate`

ntpdate-4.2.6p5-29.el7.centos.2.x86_64

也可以先查到命令路径再执行

[root@localhost ~]# which ntpdate

/usr/sbin/ntpdate

[root@localhost ~]# rpm -qf /usr/sbin/ntpdate

ntpdate-4.2.6p5-29.el7.centos.2.x86_64



12,yum软件包管理器

软件包

yum源                           yum仓库

公网的仓库                 本地搭建的仓库

软件官方源:   nginx  php  zabbix  docker

源的提供者:  阿里云  清华源  中科大 163源

#  显示可用的仓库

yum repolist


# 显示所有源

yum repolist all


#显示系统中可安装的包

yum list


# 显示系统中已经安装的包

yum list installed


#  显示系统中可以更新的包

yum list updates

yum check-update


# 更新软件包

yum update  -y


# 免交互安装

yum install -y

# 移除一个软件包

yum remove -y

yum erase -y


# 本地安装

yum localinstall -y /mnt/.....


#搜索

yum search sudo


# 查询一个命令属于哪个软件包

yum provides sudo


#  显示软件包的基本信息

yum info sudo


# 生成缓存

yum makecache


# 查看历史ID所操作

[root@localhost ~]# yum history list all

Loaded plugins: fastestmirror

ID    | Login user              | Date and time    | Action(s)      | Altered

-------------------------------------------------------------------------------

    13 | root <root>              | 2020-08-05 10:07 | Install        |    1 

    12 | root <root>              | 2020-08-04 15:39 | Install        |    2 

    11 | root <root>              | 2020-07-29 12:21 | Install        |    2 

    10 | root <root>              | 2020-07-29 12:01 | Install        |    1 

    9 | root <root>              | 2020-07-29 09:59 | Install        |  21 

    8 | root <root>              | 2020-07-29 09:53 | Install        |    1 

    7 | root <root>              | 2020-07-27 14:17 | Install        |    1 

    6 | root <root>              | 2020-07-27 11:37 | Install        |  31 

    5 | root <root>              | 2020-07-21 15:43 | Install        |    1 

    4 | root <root>              | 2020-07-21 15:13 | Install        |    1 

    3 | root <root>              | 2020-07-20 13:50 | Install        |    1 

    2 | root <root>              | 2020-07-20 13:50 | Install        |    1 

    1 | System <unset>          | 2020-07-16 15:42 | Install        |  305 

history list

[root@localhost ~]# yum history info 4

Loaded plugins: fastestmirror

Transaction ID : 4

Begin time    : Tue Jul 21 15:13:47 2020

Begin rpmdb    : 307:9594609d7a17b772a7ad4275291cfe11f098f962

End time      :            15:13:48 2020 (1 seconds)

End rpmdb      : 308:c8edda8a7fcfd0227096d22385ade078e080a644

User          : root <root>

Return-Code    : Success

Command Line  : install -y mlocate

Transaction performed with:

    Installed    rpm-4.11.3-43.el7.x86_64                      @anaconda

    Installed    yum-3.4.3-167.el7.centos.noarch              @anaconda

    Installed    yum-plugin-fastestmirror-1.1.31-53.el7.noarch @anaconda

Packages Altered:

    Install mlocate-0.26-8.el7.x86_64 @base

history info