1.文件属性

1.1inode

1.含义
用来存放文件属性的空间。通过inode号找到这个空间
inode号码--家庭住址
inode空间--家庭
文件名不存放在inode中

2.怎么来的
格式化创建文件系统

3.特点
1)inode存放文件属性
2)创建一个文件要占用一个inode
3)存放block的位置,block的指针
4)inode节点号相同的文件,互为硬链接文件,可以认为是一个文件的不同入口
5)inode在某一个文件系统中是唯一的。

4.怎样查看
ls -i 查看inode号 
df -hi 查看inode使用了多少,剩多少

1.2block

1.含义
实际存放数据的位置

2.怎么来的
格式化文件系统

3.特点
1)block是实际存放数据的地方
2)block大小-4k(centos6.x默认大小),还有1k,8k
3)创建大文件会占用多个block,如果文件小于1k,剩余空间浪费
4)创建一个非空的文件,至少占用一个block
5)每读取一个block就会消耗一次磁盘I/O

4.怎么查看
df -h查看磁盘使用多少
ls -lh查看每个文件大小

1.3查看文件的过程

1.4文件类型

[root@oldboyedu01-nb ~]# ls -l /tmp/services.tar.gz /bin/ls /etc/hosts
-rwxr-xr-x. 1 root root 117048 Mar 23  2017 /bin/ls
-rw-r--r--. 2 root root    158 Feb 20 02:46 /etc/hosts
-rw-r--r--. 1 root root  55368 Feb 22 00:49 /tmp/services.tar.gz
[root@oldboyedu01-nb ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
[root@oldboyedu01-nb ~]# file /etc/hosts
/etc/hosts: ASCII text
[root@oldboyedu01-nb ~]# file /tmp/services.tar.gz 
/tmp/services.tar.gz: gzip compressed data, from Unix, last modified: Fri Feb 22 00:49:51 2019

1.5用户

1.id查看用户信息,属于哪个组
UID用户的号码,相当于×××号,在系统中也是唯一的
GID组的号码,相当于户口本的号码,在系统中也是唯一的
[root@oldboyedu01-nb ~]# id oldboy
uid=500(oldboy) gid=500(oldboy) groups=500(oldboy)
[root@oldboyedu01-nb ~]# useradd oldgirl
[root@oldboyedu01-nb ~]# id oldgirl
uid=501(oldgirl) gid=501(oldgirl) groups=501(oldgirl)

2.root用户
UID  0

3.虚拟用户
UID  1-499 系统中每个进程要有一个对应的用户,虚拟用户是无法使用的

4.普通用户
UID 500+

5.如何保护root用户
1)禁止root远程登录
2)修改ssh默认的端口号
3)定期分析/var/log/secure 记录着用户的登录信息

6.与用户相关的文件
/etc/group 保存组信息
/etc/gshadow
/etc/passwd 保存用户信息
/etc/shadow 保存密码信息

7.详解/etc/passwd
[root@oldboyedu01-nb ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
第一列:用户名字
第二列:存放密码的地方
第三列:UID
第四列:GID
第五列:用户的说明信息,默认为空
第六列:用户的家目录
第七列:用户默认的bash,用户使用的命令解释器
/bin/bash Centos默认的命令解释器
/sbin/nologin 用户无法登录系统

1.6 9位权限说明

r  4  read可以读取文件
w  2  write修改文件
x  1  excute可以运行的文件
-	0什么权限都没有

1.7软连接与硬链接

"软连接与硬链接的区别"
1.创建方式
软连接ln -s 硬链接ln
2.原理
硬链接文件的inode和源文件的inode相同,软连接的inode和源文件的inode不同
硬链接不能对目录创建连接,只能对文件创建硬链接。软连接既可以对目录创建连接也可以对文件创建连接
硬链接不能在不同的分区(文件系统)创建,软连接可以在不同分区创建连接
3.删除
删除硬链接对源文件没有影响,删除软连接对原文件也没有影响
删除源文件对硬链接没有影响,但是软连接失效
删除源文件和硬链接文件,整个文件才被删除
1.软连接怎么来的
[root@oldboyedu01-nb oldboy]# ln -s oldboy.txt o
[root@oldboyedu01-nb oldboy]# ll
total 9380
lrwxrwxrwx. 1 root root      10 Feb 22 05:27 o -> oldboy.txt
-rw-r--r--. 1 root root      29 Feb 22 01:12 oldboy.txt

2.软连接特点
1)存放源文件的位置
2)源文件被删除,连接无效
3)源文件和链接的文件inode不同
1.硬链接怎么来的
[root@oldboyedu01-nb oldboy]# ln oldboy.txt h
[root@oldboyedu01-nb oldboy]# ll
total 9384
-rw-r--r--. 1 root root 9599190 Feb 22 01:03 etc.tar.gz
-rw-r--r--. 2 root root      29 Feb 22 01:12 h
lrwxrwxrwx. 1 root root      10 Feb 22 05:27 o -> oldboy.txt
-rw-r--r--. 2 root root      29 Feb 22 01:12 oldboy.txt

2.硬链接特点
1)在同一个分区中,两个或多个文件的inode号码相同,这些文件互为硬链接
2)删除硬链接或源文件,文件还是可以使用的
3)把硬链接和源文件都删除,文件被删除。==硬链接数为0

1.8文件删除原理

1.硬链接数量为0
2.进程调用数为0

1.9磁盘空间已满

如何删除大量小文件
如何删除大量小文件
[root@oldboyedu-02 test]# touch {1..500000}.txt
-bash: /bin/touch: Argument list too long
[root@oldboyedu-02 test]# echo {1..500000}.txt|xargs touch
[root@oldboyedu-02 ~]# find / -type d -size +1M|xargs ls -lhd
dr-xr-xr-x. 25 root root 1.4M Feb 28 16:29 /
drwxr-xr-x   2 root root  15M Feb 28 18:25 /oldboy/test
[root@oldboyedu-02 ~]# rm -rf /oldboy/test/*
-bash: /bin/rm: Argument list too long
[root@oldboyedu-02 ~]# ls /oldboy/test/|xargs rm -rf
如果还是不可以,就批量删除,rm -rf A*

1.10文件的三个时间

mtime modified time 文件的修改时间,文件的内容修改时间
atime acces time 文件的访问时间,cat 文件的时间
ctime change time 创建文件的时间 文件属性的改变时间,硬连接数,文件大小,权限等的修改时间

查看文件的三个时间
[root@oldboyedu01-nb log]# stat /oldboy/oldboy.txt 
  File: `/oldboy/oldboy.txt'
  Size: 29        	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 392658      Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-02-22 05:34:11.855975925 +0800
Modify: 2019-02-22 01:12:58.341993040 +0800
Change: 2019-02-22 05:37:23.927977954 +0800
[root@oldboyedu01-nb oldboy]# echo "test" >oldboy.txt 
[root@oldboyedu01-nb oldboy]# stat oldboy.txt 
  File: `oldboy.txt'
  Size: 5         	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 392658      Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-02-22 05:34:11.855975925 +0800
Modify: 2019-02-22 07:54:53.574968230 +0800
Change: 2019-02-22 07:54:53.574968230 +0800
[root@oldboyedu01-nb oldboy]# ln oldboy.txt oo
[root@oldboyedu01-nb oldboy]# stat oldboy.txt 
  File: `oldboy.txt'
  Size: 5         	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 392658      Links: 3
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-02-22 05:34:11.855975925 +0800
Modify: 2019-02-22 07:54:53.574968230 +0800
Change: 2019-02-22 07:56:09.542959563 +0800
[root@oldboyedu01-nb oldboy]# cat oldboy.txt 
test
[root@oldboyedu01-nb oldboy]# stat oldboy.txt 
  File: `oldboy.txt'
  Size: 5         	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 392658      Links: 3
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-02-22 07:58:08.785926400 +0800
Modify: 2019-02-22 07:54:53.574968230 +0800
Change: 2019-02-22 07:56:09.542959563 +0800

2.权限讲解

2.1文件的rwx

对文件来说,rwx的含义:
1.r读取文件内容
2.w修改文件内容,只有w的情况下可追加内容到文件中,但是需要r的配合,修改后才能查看内容,验证是否正确
3.x权限表示执行,只有x权限是不能执行脚本的,他需要r权限的配合。


r权限
[root@oldboyedu-01 oldboy]# chmod u=r alex.sh
[oldboy@oldboyedu-01 oldboy]$ ll
total 4
-r--r--r-- 1 oldboy oldboy 13 Feb 25 10:13 alex.sh
[oldboy@oldboyedu-01 oldboy]$ echo "ls -ld /opt">alex.sh 
-bash: alex.sh: Permission denied
[oldboy@oldboyedu-01 oldboy]$ ./alex.sh
-bash: ./alex.sh: Permission denied
w权限
[root@oldboyedu-01 oldboy]# chmod u=w alex.sh
[oldboy@oldboyedu-01 oldboy]$ ll
total 4
--w-r--r-- 1 oldboy oldboy 13 Feb 25 10:19 alex.sh
[oldboy@oldboyedu-01 oldboy]$ cat alex.sh 
cat: alex.sh: Permission denied
[oldboy@oldboyedu-01 oldboy]$ echo 'w'>>/oldboy/alex.sh 
[oldboy@oldboyedu-01 oldboy]$ /oldboy/alex.sh
-bash: /oldboy/alex.sh: Permission denied
[oldboy@oldboyedu-01 oldboy]$
x权限
[root@oldboyedu-01 oldboy]# chmod u=x alex.sh
[oldboy@oldboyedu-01 oldboy]$ ll
total 4
---xr--r-- 1 oldboy oldboy 15 Feb 25 10:25 alex.sh
[oldboy@oldboyedu-01 oldboy]$ 
[oldboy@oldboyedu-01 oldboy]$ cat alex.sh 
cat: alex.sh: Permission denied
[oldboy@oldboyedu-01 oldboy]$ echo "w">alex.sh 
-bash: alex.sh: Permission denied
[oldboy@oldboyedu-01 oldboy]$ /oldboy/alex.sh 
bash: /oldboy/alex.sh: Permission denied

[root@oldboyedu-01 oldboy]# chmod u=rx alex.sh
[oldboy@oldboyedu-01 oldboy]$ ll
total 4
-r-xr--r-- 1 oldboy oldboy 15 Feb 25 10:25 alex.sh
[oldboy@oldboyedu-01 oldboy]$ /oldboy/alex.sh 
oldboyedu-01
/oldboy

2.2目录的rwx

对目录来说,rxw权限的含义:
r权限只能查看目录,即只能ls -ld查看该目录的信息
w权限控制是否能在目录中删除,创建内容,需要x的配合
x权限控制是否能够进入目录中,需要r的配合


对目录来说:
r 只有r权限时
不能cd进入到该目录
[oldboy@oldboyedu01-nb opt]$ cd etc/
-bash: cd: etc/: Permission denied
执行find命令时,不能列举出该目录下面的内容
[oldboy@oldboyedu01-nb opt]$ find /opt/ -name "*"
/opt/
/opt/etc
find: '/opt/etc': Permission denied
/opt/rh
执行ls命令时,只能看到该目录下的文件名,看不到文件属性
[oldboy@oldboyedu01-nb opt]$ ls etc/
ls: cannot access etc/sysconfig: Permission denied
sysconfig
[oldboy@oldboyedu01-nb opt]$ ll etc/
ls: cannot access etc/sysconfig: Permission denied
total 0
d????????? ? ? ? ?            ? sysconfig
有r和x权限时
可以进入到该目录
可以通过find命令查看到该目录下的内容
可以通过ll命令查看到文件权限
但是不能删除目录,修改目录名称,在目录中创建文件
[oldboy@oldboyedu-02 oldboy]$ ll
total 8
dr-xr-xr-x 2 oldboy oldboy 4096 Feb 26 08:29 alexdir
--w-rwxrwx 1 oldboy oldboy    5 Feb 26 08:19 alex.sh
[oldboy@oldboyedu-02 oldboy]$ find alexdir/
alexdir/
alexdir/luffy05
alexdir/luffy04
alexdir/luffy02
alexdir/luffy01
alexdir/luffy03
[oldboy@oldboyedu-02 oldboy]$ rm -rf alexdir/luffy01
rm: cannot remove 'alexdir/luffy01': Permission denied
[oldboy@oldboyedu-02 oldboy]$ mkdir alexdir/test
mkdir: cannot create directory 'alexdir/test': Permission denied
只有wx权限时,可以进入目录,删除其中的文件,创建文件,但是不能查看里面有哪些内容
[oldboy@oldboyedu-02 oldboy]$ ll
total 8
d-wxr-xr-x 2 oldboy oldboy 4096 Feb 25 10:43 alexdir
--w-rwxrwx 1 oldboy oldboy    5 Feb 26 08:19 alex.sh
[oldboy@oldboyedu-02 oldboy]$ rm -rf alex
alexdir/ alex.sh  
[oldboy@oldboyedu-02 oldboy]$ rm -rf alexdir/*
[oldboy@oldboyedu-02 oldboy]$ cd alexdir/
[oldboy@oldboyedu-02 alexdir]$ ll
ls: cannot open directory .: Permission denied
[oldboy@oldboyedu-02 alexdir]$ touch test01
[oldboy@oldboyedu-02 alexdir]$ rm -rf test01

2.3权限的计算

r===4
w==2
x===1
-===0

2.4linux系统的默认权限

文件的默认权限是644(666-022)
目录的默认权限是755(777-022)

2.5安全的网站设计

1.网址程序放在/app/blog下面
网站需要通过一个虚拟用户登陆进来
2./app/blog/ndd.jpg
/app/blog/上传/lwang.jpg
对于上传目录,文件644,目录755,用户 www www
除了上传目录外,文件644,目录755,用户root root

2.6umask

文件系统中,文件和目录的默认权限是通过umask值设置的。
文件的最大权限是666,目录的最大权限是777
文件 666 022 644
目录 777 022 755
对于目录,777直接减去umask
对于文件,666减去umask的值,如果umask某一位上面是奇数,减完umask奇数位需要+1
/etc/profile中修改

2.7lsattr chattr

lsattr 查看属性
chattr 设置属性
+a只能追加
+i无敌的,不可更改的
[root@oldboyedu-01 oldboy]# lsattr alexdir/
-------------e- alexdir/luffy05
-------------e- alexdir/luffy04
-------------e- alexdir/luffy02
-------------e- alexdir/luffy01
-------------e- alexdir/luffy03
[root@oldboyedu-01 oldboy]# chattr +a alexdir/luffy01
[root@oldboyedu-01 oldboy]# lsattr alexdir/luffy01 
-----a-------e- alexdir/luffy01
[root@oldboyedu-01 oldboy]# cat alexdir/luffy01
[root@oldboyedu-01 oldboy]# echo "append">alexdir/luffy01  //追加内容也不行了
-bash: alexdir/luffy01: Operation not permitted
[root@oldboyedu-01 oldboy]# rm -rf alexdir/luffy01 
rm: cannot remove 'alexdir/luffy01': Operation not permitted
[root@oldboyedu-01 oldboy]# echo "append">>alexdir/luffy01 //只能追加内容到文件中
[root@oldboyedu-01 oldboy]#


+i参数
[root@oldboyedu-01 oldboy]# chattr -a alexdir/luffy01
[root@oldboyedu-01 oldboy]# chattr +i alexdir/luffy01
[root@oldboyedu-01 oldboy]# lsattr alexdir/luffy01
----i--------e- alexdir/luffy01
[root@oldboyedu-01 oldboy]# echo "append">>alexdir/luffy01 
-bash: alexdir/luffy01: Permission denied
[root@oldboyedu-01 oldboy]# rm -rf alexdir/luffy01 
rm: cannot remove 'alexdir/luffy01': Operation not permitted
[root@oldboyedu-01 oldboy]# echo "append">alexdir/luffy01
-bash: alexdir/luffy01: Permission denied

2.7特殊权限

2.7.1suid

(1) 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限;
(2) 启动为进程之后,其进程的属主为原程序文件的属主;
权限设定:
chmod u+s FILE... 
chmod u-s FILE...
危险:所有用户运行命令的时候都相当于是root
[root@oldboyedu-01 oldboy]# ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 30768 Nov 24  2015 /usr/bin/passwd
例如:普通用户不能查看/var/log/messages
可通过chmod u+s /bin/cat就可查看了

2.7.2sgid

默认情况下,用户创建文件时,其属组为此用户所属的基本组;
一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组;

权限设定:
	chmod g+s DIR...
	chmod g-s DIR...

2.7.3sticky

对于一个多人可写的目录,如果设置了sticky,则每个用户仅能删除自己的文件;
粘滞位1777 /tmp目录
任何人可以在目录里面创建文件(原来的权限是777)
每个人只能管理自己的文件,其他人的处理不了
权限设定:
	chmod o+t DIR...
	chmod o-t DIR...

3.正则表达式

3.1什么是正则表达式

通配符号表示文字内容
提高效率
支持正则表达式:linux三剑客 grep sed awk

3.2使用正则表达式的时候注意事项

正则表达式按照行处理
禁止使用中文符号
给grep,egrep配置别名
加到/etc/profile中
alias grep="grep --color=auto"
alias grep="egrep --color=auto"
然后source生效

3.3正则表达式和通配符

用途                                             匹配的内容                                支持的命令 
通配符:用来匹配查找文件名  *.txt *.log 以.txt .log结尾的文件      大部分命令
正则:在文件中匹配查找内容   包含oldboy的行                             linux三剑客

3.4正则表达式分类

基础正则basic regular expression(BRE) grep sed awk
^    以某字符开头
$    以某字符结尾
.     前面字符出现一次
*     前面的字符出现0次或多次
[]    匹配[]内部的字符
[^]  除了[]内部的字符

扩展正则 extend regular expression(ERE)   grep -E/egrep sed -r awk
+  前面字符出现1次或以上
|   或者
{}  前面匹配内容出现的次数的范围
()  分组
?  表示前面一个字符出现0次或1次
环境准备
I am oldboy teacher!
I teach linux.

I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.

not 4900000448.
my god ,i am not oldbey,but OLDBOY!

3.5基本正则表达式

-A表示显示文件中隐藏的特殊字符
grep -o显示匹配的过程
. 任意一个字符,不包含空行
\ 转义符号 脱掉马甲,打回原形
\n 表示回车换行
*前面一个字符出现0次多1次以上
.*表示所有
^$表示空行
1.显示出隐藏的字符
[root@m01 opt]# cat  -A test 
I am oldboy teacher!$
I teach linux.$
$
I like badminton ball ,billiard ball and chinese chess!$
my blog is http://oldboy.blog.51cto.com$
our site is http://www.etiantian.org$
my qq num is 49000448.$
$
not 4900000448.$
my god ,i am not oldbey,but OLDBOY!$
[root@m01 opt]# 

*前面一个字符出现了0次或1次以上

3.6扩展正则表达式

| 或者
Linux正则表达式之问题三:[]与|区别
都可以表示或者 [abc] a|b|c
区别:
[]基础正则,|扩展正则
[]表示单个字符的或者  |表示三个字符的或者或多个字符的或者
[a-z]                  oldboy|linux

() 括号中的内容相当于一个整体,表示后向引用
反向引用或后向引用
sed,把你想要的内容先保护起来,然后再使用它

o{n,m} 前一个字符最少出现n次,最多m次 
o{,m}前一个字符最多m次
o{n,}前一个字符最少n次
o{n}前一个字符恰好出现n次