8 Linux文件属性:文件类型、基础权限、软硬链接、用户和用户组、linux修改、访问、改变时间简介

 

[root@oldboyedu-01 ~]# ls -lhi /etc/hosts
260126 - rw-r--r--. 2 root root 158 Dec 12 08:33 /etc/hosts
inode号 文件类型 文件权限(与selinux有关) 文件硬链接数 主人 家人(用户属于的家庭) 文件修改时间 文件名

inode和block简介:
获得一个硬盘到可以向硬盘中存放数据
硬盘(房子),分区(划分隔断),格式化创建系统(装修不同风格),挂载(安装门窗)

  

inode:用来存放文件属性的空间(家庭),通过inode号(住址)可以找到这个空间。index node。256字节。
说明:
1.文件名不在inode中,说明文件名不属于文件属性。
2.inode是格式化创建系统时来的。
3.inode中存放block的位置。
4.创建一个文件要占用一个inode号。
5.inode节点号相同的文件互为硬链接文件,可以认为是一个文件的不同入口
6.inode在某一个文件系统(分区),是唯一的。

[root@oldboyedu-01 ~]# ls -i //查看文件的inode号
411669 anaconda-ks.cfg 411084 ett.txt 390150 install.log.syslog 411673 right.txt
411674 error.txt 390149 install.log 411675 right_error.txt 420718 test.txt
[root@oldboyedu-01 ~]# df -i //系统中inode号使用情况
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 593344 82620 510724 14% /
tmpfs 488561 1 488560 1% /dev/shm
/dev/sda1 51200 39 51161 1% /boot


block:实际存放数据的位置。数据快。
说明:
1.block是格式化创建系统时来的。
2.block 4k(centos 6.x)1k 8k。
3.创建大文件会占用多个block,如果小文件1k,4k剩余的空间会浪费。
4.创建一个非空文件要占用一个inode和至少1个block。
5.每读取一个block就会消耗一次磁盘I/O
正常情况下block会使用的快!
[root@oldboyedu-01 ~]# ls -lh
total 60K
-rw-------. 1 root root 1.1K Dec 11 22:18 anaconda-ks.cfg
-rw-r--r--. 1 root root 30 Dec 12 00:17 error.txt
-rw-r--r--. 1 root root 292 Dec 12 03:27 ett.txt
-rw-r--r--. 1 root root 22K Dec 11 22:18 install.log
-rw-r--r--. 1 root root 5.8K Dec 11 22:16 install.log.syslog
-rw-r--r--. 1 root root 38 Dec 12 00:19 right_error.txt
-rw-r--r--. 1 root root 8 Dec 12 00:17 right.txt
-rw-r--r-- 1 root root 18 Dec 12 22:54 test.txt
[root@oldboyedu-01 ~]# df -h //磁盘block使用情况
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 3.8G 4.6G 46% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot

磁盘空间不足问题原因:
(1)block满了?! [root@oldboyedu-01 ~]# df -h
a.看看到底哪里满了;
b.查看是哪个 目录占用的空间大,最终定位到目录或者文件;
c.确保是否可以删除。
(2)inode满了?! [root@oldboyedu-01 ~]# df -ih
环境模拟:
[root@oldboyedu-01 ~]# mkdir -p /app/logs
[root@oldboyedu-01 ~]# dd if=/dev/zero of=/dev/sdc bs=8k count=10
10+0 records in
10+0 records out
81920 bytes (82 kB) copied, 0.000719564 s, 114 MB/s
[root@oldboyedu-01 ~]# ls -l /dev/sdc
-rw-r--r-- 1 root root 81920 Dec 13 12:51 /dev/sdc
[root@oldboyedu-01 ~]#
[root@oldboyedu-01 ~]# ls -il /dev/sdc
115160 -rw-r--r-- 1 root root 81920 Dec 13 12:51 /dev/sdc
[root@oldboyedu-01 ~]# mkfs.ext4 /dev/sdc
mke2fs 1.41.12 (17-May-2010)
/dev/sdc is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
16 inodes, 80 blocks
4 blocks (5.00%) reserved for the super user
First data block=1
1 block group
8192 blocks per group, 8192 fragments per group
16 inodes per group

Writing inode tables: done

Filesystem too small for a journal
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@oldboyedu-01 ~]# mount -o loop /dev/sdc /app/logs
[root@oldboyedu-01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 3.8G 4.6G 46% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
/dev/sdc 73K 14K 55K 21% /app/logs
[root@oldboyedu-01 ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 593344 82622 510722 14% /
tmpfs 488561 1 488560 1% /dev/shm
/dev/sda1 51200 39 51161 1% /boot
/dev/sdc 16 11 5 69% /app/logs
[root@oldboyedu-01 ~]# cd /app/logs/
[root@oldboyedu-01 logs]# touch stu{1..6}.log
touch: cannot touch `stu6.log': No space left on device
[root@oldboyedu-01 logs]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 3.8G 4.6G 46% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
/dev/sdc 73K 14K 55K 21% /app/logs
[root@oldboyedu-01 logs]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 593344 82622 510722 14% /
tmpfs 488561 1 488560 1% /dev/shm
/dev/sda1 51200 39 51161 1% /boot
/dev/sdc 16 16 0 100% /app/logs
//
[root@oldboyedu-01 logs]# ls
lost+found stu1.log stu2.log stu3.log stu4.log stu5.log
[root@oldboyedu-01 logs]# rm -rf *
do not use rm -rf lost+found stu1.log stu2.log stu3.log stu4.log stu5.log
[root@oldboyedu-01 logs]# \rm -rf *.log
[root@oldboyedu-01 logs]# ls
lost+found
[root@oldboyedu-01 logs]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 593344 82622 510722 14% /
tmpfs 488561 1 488560 1% /dev/shm
/dev/sda1 51200 39 51161 1% /boot
/dev/sdc 16 11 5 69% /app/logs

f file 普通文件
[root@oldboyedu-01 ~]# 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@oldboyedu-01 ~]# file /etc/hosts //文本文件
/etc/hosts: ASCII text
[root@oldboyedu-01 ~]# file /opt/cmake-2.8.8.tar.gz //数据文件
/opt/cmake-2.8.8.tar.gz: gzip compressed data, from Unix, last modified: Thu Apr 19 02:10:55 2012

用户和用户组:
(1)对于一个文件/目录来说,用户分为三类:
主人 家人 陌生人
所有者名字 所有者属于的组的名字 无缘无故,隔壁老王
[root@oldboyedu-01 ~]# ll -ih /etc/hosts
260126 -rw-r--r--. 2 root root 158 Dec 12 08:33 /etc/hosts

[root@oldboyedu-01 ~]# id root //id查询用户信息
uid=0(root) gid=0(root) groups=0(root)
[root@oldboyedu-01 ~]# id oldboy
uid=500(oldboy) gid=500(oldboy) groups=500(oldboy)

(2)linux中存在于系统中的用户如何分类:
UID user id 用户的id号码--身份证号
GID group id 用户组的id号码--户口本的号码

皇帝 root UID:0
傀儡 虚拟用户 UID:1~499 系统中每个进程要有一个对应的用户,无法使用的。
平民百姓 普通用户 UID:500+

如何加强root安全:
1.禁止root远程登录;
2.修改ssh默认的端口号22;
3.定期分析/var/log/secure 记录着用户的登录信息。
......

与用户有关的文件:
[root@oldboyedu-01 ~]# ls -al /etc/passwd /etc/shadow /etc/group /etc/gshadow
-rw-r--r-- 1 root root 600 Dec 12 09:23 /etc/group //用户组的信息
---------- 1 root root 490 Dec 12 09:23 /etc/gshadow
-rw-r--r-- 1 root root 1140 Dec 12 09:23 /etc/passwd//存放的是用户的信息
---------- 1 root root 852 Dec 12 09:23 /etc/shadow//用户密码的信息
[root@oldboyedu-01 ~]# cat /etc/passwd
root :x:0 :0 :root:/root :/bin/bash
oldboy:x:500:500: :/home/oldboy:/bin/bash
说明:
第1列:用户名字
第2列:存放密码的地方
第3列:UID
第4列:GID
第5列:用户的说明信息,默认为空
第6列:用户的家目录:root ~/root; oldboy ~/home/oldboy
第7列:用户使用的shell,命令解释器。
/bin/bash是centos默认的命令解释器。
/sbin/nologin表示用户无法登陆系统,相当于是傀儡用户。

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

linux基础权限:
[root@oldboyedu-01 ~]# ll /etc/hosts
-rw-r--r--. 2 root root 158 Dec 12 08:33 /etc/hosts //x:execute
420 400 400
6 4 4
软链接(符号链接):
[root@oldboyedu-01 ~]# ln -s /oldboy/ett.log /oldboy/ett.log-soft //软链接(符号链接),相当于快捷方式
[root@oldboyedu-01 ~]# ls -ilh /oldboy/ett.log*
411677 -rw-r--r-- 1 root root 51 Dec 13 14:19 /oldboy/ett.log
420709 lrwxrwxrwx 1 root root 15 Dec 13 14:19 /oldboy/ett.log-soft -> /oldboy/ett.log
特点:
1.存放着源文件的位置;
2.源文件被删除软链接文件失效;
3.节约时间;
4.软链接文件的inode号与源文件不同。

硬链接:
两个文件或者多个文件的inode号相同,这些文件互为硬链接。
[root@oldboyedu-01 ~]# ln /oldboy/new.log /oldboy/new.log-hard //
[root@oldboyedu-01 ~]# ls -ilh /oldboy/new.log*
411688 -rw-r--r-- 2 root root 14 Dec 12 23:07 /oldboy/new.log
411688 -rw-r--r-- 2 root root 14 Dec 12 23:07 /oldboy/new.log-hard
特点:
1.删除源文件或者硬链接,文件还可使用。
2.两者都被删除才是真正的删除。

其他特点:
1.不能对目录创建硬链接,但可以创建软链接,对目录的软链接会经常用到。
2.软链接文件可以跨越文件系统,硬链接文件不可。

  

文件删除原理:
1.删除这个文件相关的所有硬链接/硬链接数为0 rm--eg:删除厕所的所有入口
2.这个文件的进程调用数也为0/进程调用数为0 --eg:没有人在使用厕所
问题:
eg:磁盘满了但是du -sh/* 搜不到的情况?
原因是:系统中某个文件没有被彻底删除,导致的磁盘空间满了。
一般情况下,大多数服务(包括脚本)在运行时,是不能删除当前正在写入的日志文件的。
找到机器自身的服务后重启。

eg:如何找出硬链接数为0,进程调用数不为0的文件?
[root@oldboyedu-01 ~]# lsof |grep delete
mysqld_sa 35742 root 0u CHR 136,0 0t0 3 /dev/pts/0 (deleted)
mysqld_sa 35742 root 1u CHR 136,0 0t0 3 /dev/pts/0 (deleted)
mysqld_sa 35742 root 2u CHR 136,0 0t0 3 /dev/pts/0 (deleted)
mysqld 36479 mysql 5u REG 8,3 0 392651 /tmp/ib1hlfL0 (deleted)
//服务名称

这里比如服务是rsyslog,重启对应的服务即可。
[root@oldboyedu-01 ~]# /etc/init.d/rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
[root@oldboyedu-01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 3.8G 4.6G 46% / //显示正常了!OK
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
/dev/sdc 73K 14K 55K 21% /app/logs

//(deleted)该标记表明这些文件硬链接数为0,进程调用数不为0


总结磁盘空间不足的原因:
1.block满了,正常。500G的刚好存放500G视频。
2.inode满了,大量的小文件。
3.block硬链接数量为0,进程调用数不为0,文件没有被彻底删除导致磁盘空间不足。

linux修改、访问、改变时间简介:
mtime --modified time //文件的修改时间,文件内容的变化时间
ctime --change time //文件属性的改变时间 硬链接数量、文件大小、文件权限
atime --access time //文件的访问时间 cat
[root@oldboyedu-01 ~]# ls -l /oldboy/ett.log
-rw-r--r-- 1 root root 51 Dec 13 14:19 /oldboy/ett.log
[root@oldboyedu-01 ~]# stat /oldboy/ett.log //
File: `/oldboy/ett.log'
Size: 51 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 411677 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-12-13 14:18:53.984628060 +0800
Modify: 2017-12-13 14:19:05.357631617 +0800
Change: 2017-12-13 14:19:05.357631617 +0800
[root@oldboyedu-01 ~]# date
Wed Dec 13 15:15:51 CST 2017

 

posted @ 2017-12-19 22:29  bkycrmn  阅读(170)  评论(0)    收藏  举报