一、文件管理
1.命令加正则
(1)用一条命令建立12个文件
$ touch alexw_class{1..2}_linux{1..6}
$ ls
alexw_class1_linux1 alexw_class1_linux5 alexw_class2_linux3
alexw_class1_linux2 alexw_class1_linux6 alexw_class2_linux4
alexw_class1_linux3 alexw_class2_linux1 alexw_class2_linux5
alexw_class1_linux4 alexw_class2_linux2 alexw_class2_linux6
(2)正则匹配批量cp
$ cp /home/alexw/Desktop/mytest/alexw_class[[:digit:]]_linux[[:digit:]] /root/Desktop
(3)正则匹配奇偶
cp alexw_class[02468]_linux[02468] DOUBLE
cp alexw_class[13579]_linux[13579] SINGLE
二、文件输入输出管理
0.stdin stdout stderr
标准输入0 标准正确输出1 标准错误输出2
1.输入重定向
大小写转换
[alexw@alexw-device Desktop]$ tr 'a-z' 'A-Z' < test 这里的test时一个文件
[alexw@alexw-device Desktop]$ tr 'a-z' 'A-Z' <<EOF
> test
> owen
> EOF
TEST
OWEN
2.输出重定向
######################## 所有输出追加到out ############
[alexw@alexw-device Desktop]$ find /etc -name passwd &>> out
[alexw@alexw-device Desktop]$ cat out
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/dhcp’: Permission denied
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/nftables’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
######################## 正确输出追加到out1 ############
[alexw@alexw-device Desktop]$ find /etc -name passwd >> out1
[alexw@alexw-device Desktop]$ cat out1
/etc/pam.d/passwd
/etc/passwd
######################## 错误输出追加到out1 ############
[alexw@alexw-device Desktop]$ find /etc -name passwd 2>> out2
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/nftables’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
3.管道
- 把前一条命令的输出变成输入传递到下一条命令进行操作
- 管道只处理正确输出!
(1)统计命令正确输出的行数
[alexw@alexw-device Desktop]$ find /etc -name passwd | wc -l
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/nftables’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
2
因为正确输出只有两行
(2)复制正确输出到指定位置,并统计命令正确输出的行数
tee复制输出到指定位置,这里到right文件
[alexw@alexw-device Desktop]$ find /etc -name passwd | tee right | wc -l
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/nftables’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
2
[alexw@alexw-device Desktop]$ ll
total 8
-rw-rw-r--. 1 alexw alexw 30 Oct 27 11:30 out
-rw-rw-r--. 1 alexw alexw 30 Oct 27 11:32 right
[alexw@alexw-device Desktop]$ cat right
/etc/pam.d/passwd
/etc/passwd
(3)复制所有输出到指定位置,并统计命令输出的行数
[alexw@alexw-device Desktop]$ find /etc -name passwd 2>&1 | tee all | wc -l
17
[alexw@alexw-device Desktop]$ cat all
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/dhcp’: Permission denied
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/nftables’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
(4)查找/etc/下的passwd文件,保存到all并显示输出内容
[alexw@alexw-device Desktop]$ find /etc -name passwd 2>&1 | tee all | cat
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/dhcp’: Permission denied
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/nftables’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
(5)查找/etc/下的passwd文件,转换输出为大写并显示输出内容
[alexw@alexw-device Desktop]$ find /etc -name passwd 2>&1 | tee all | tr 'a-z' 'A-Z' | cat
FIND: ‘/ETC/PKI/RSYSLOG’: PERMISSION DENIED
FIND: ‘/ETC/GRUB.D’: PERMISSION DENIED
FIND: ‘/ETC/LVM/ARCHIVE’: PERMISSION DENIED
FIND: ‘/ETC/LVM/BACKUP’: PERMISSION DENIED
FIND: ‘/ETC/LVM/CACHE’: PERMISSION DENIED
FIND: ‘/ETC/DHCP’: PERMISSION DENIED
/ETC/PAM.D/PASSWD
/ETC/PASSWD
FIND: ‘/ETC/CUPS/SSL’: PERMISSION DENIED
FIND: ‘/ETC/NFTABLES’: PERMISSION DENIED
FIND: ‘/ETC/POLKIT-1/RULES.D’: PERMISSION DENIED
FIND: ‘/ETC/POLKIT-1/LOCALAUTHORITY’: PERMISSION DENIED
FIND: ‘/ETC/SSSD’: PERMISSION DENIED
FIND: ‘/ETC/AUDIT’: PERMISSION DENIED
FIND: ‘/ETC/LIBVIRT’: PERMISSION DENIED
FIND: ‘/ETC/FIREWALLD’: PERMISSION DENIED
FIND: ‘/ETC/SUDOERS.D’: PERMISSION DENIED
(6)非交互式
[alexw@alexw-device Desktop]$ cat mytest
echo this is a test
touch testfile
echo "套娃" > testfile
[alexw@alexw-device Desktop]$ sh mytest
this is a test
[alexw@alexw-device Desktop]$ cat testfile
套娃
4.watch
terminal1:
watch -n 1 "tail -n 4 /root/Desktop/test;echo =======;"
terminal2:
echo "12345" >> test
效果
三 、文件权限管理
1.权限位
rwx|r--|r--
属主、属组、其他
2.权限的数字表示
二进制表示
rw- = 110 = 6
rwx = 111 = 7
3.umask
- 查看保留权利
[alexw@alexw-device ~]$ umask
0002
- 临时提权
[alexw@alexw-device ~]$ umask 0777
[alexw@alexw-device ~]$ umask
0777
4.属主和属组管理
chown username file ##更改属主
chgrp groupname file ##更改属组
chown username:groupname file ##同时更改文件的属主和属组
chown|chgrp -R user|group dir ##更改目录本身及目录中内容的属主或属组
5.特殊权限
777给的是任何用户可读可写可执行的权限,也可以指定其他的
(1)o+t
- 粘制位
chmod 1777 /test/
chmod o+t /test/
[alexw@alexw-device ~]$ ll /test/
total 0
-rw-rw-r--. 1 alex alex 0 Oct 27 16:35 alex
-rw-rw-r--. 1 alexw alexw 0 Oct 27 16:36 alexw
[alexw@alexw-device ~]$ rm -rf /test/*
rm: cannot remove '/test/alex': Operation not permitted
- 不属于自己的文件不能删除
(2)g+s
- 强制位
- 目录中新建的文件自动归属到目录的所属组中
chmod 2777 dir
chmod g+s dir
[root@alexw-device ~]# su - alexw
Last login: Thu Oct 27 16:35:56 CST 2022 on pts/0
[alexw@alexw-device ~]$ touch /test/alexw
[alexw@alexw-device ~]$ ll /test/
total 0
-rw-rw-r--. 1 alex alex 0 Oct 27 16:35 alex
-rw-rw-r--. 1 alexw root 0 Oct 27 16:40 alexw
实验
######### terminal1运行一个程序,阻塞
su - alexw
/bin/cat
######### terminal2 watch监控,阻塞
watch -n 1 "ps ax -o user,group,comm | grep cat"
alexw alexw cat
######### terminal3 修改该程序的权限,切换到另一个用户并运行程序,阻塞
用root用户身份
chmod g+s /bin/cat
su - alex
/bin/cat
######### terminal2 watch监控发生变化
alexw alexw cat
alex root cat
(3)u+s
- 冒险位
- 只对二进制可执行文件
- 当运行二进制可执行文件时都是用文件拥有者身份运行,和执行用户无关
6.acl权限
实验1
terminal1:
观察输入下列命令后权限的变化
watch -n 1 "getfacl mytest"
terminal2:
[alexw@alexw-device Desktop]$ setfacl -m u:alex:rw mytest
[alexw@alexw-device Desktop]$ setfacl -m g:alex:rw mytest
[alexw@alexw-device Desktop]$ setfacl -m u::rwx mytest
[alexw@alexw-device Desktop]$ setfacl -m g::0 mytest
[alexw@alexw-device Desktop]$ setfacl -x u:alex mytest
[alexw@alexw-device Desktop]$ setfacl -b mytest
实验2
[alexw@alexw-device Desktop]$ setfacl -m g::7 mytest 指定了组的rwx权限后,再进行chmod降低权限,acl一样会被修改
[root@alexw-device Desktop]# chmod 755 mytest