Linux 文件属性-下
配置Apache时执行了./configure --prefix=/application/apache2.2.17来编译Apace,在make install完成后,希望用户的访问路径更简单,需要给/application/apache2.2.17目录做一个软链/application/apache,使得内部开发或管理人员通过/application/apache就可以访问到apache的安装目录/application/apache2.2.17下的内容,请你给出实现的命令。(提示:Apache为httpd web服务)
[root@oldbouedu-39 ~]# mkdir /application/apache2.2.17 -p
[root@oldbouedu-39 ~]# ls -l /application/
total 4
drwxr-xr-x 2 root root 4096 Apr 17 10:26 apache2.2.17
[root@oldbouedu-39 ~]# ln -s /application/apache2.2.17/ /application/apache
[root@oldbouedu-39 ~]# ls -l /application/
total 4
lrwxrwxrwx 1 root root 26 Apr 17 10:27 apache -> /application/apache2.2.17/
drwxr-xr-x 2 root root 4096 Apr 17 10:26 apache2.2.17
1.2 目录软链接相关知识讲解

1.3 Linux文件属性;文件删除原理

i_link=2 #当前文件的硬链接数量
i_count=3 #当前文件被进程调用的数量
文件被彻底删除的条件:i_link=0 并且i_count=0
文件被彻底删除的条件:
★i_link=0 硬链接数如何为0 ==èrm 命令
★i_count=0 进程调用数===è找到对应的软件重启对应的服务lsof
[root@oldbouedu-39 oldboydir]# lsof /var/log/messages
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 1253 root 1w REG 8,3 4780 261884 /var/log/messages
文件删除原理(Linux删除一个文件的条件)
1.硬链接数为0 rm命令
2.进程调用数为0 重启or关闭(使用这个文件的进程/软件)
**1.4 **企业案例:
磁盘空间不足
磁盘满故障http://oldboy.blog.51cto.com/2561410/612351
du -sh /usr/* |grep G
查看文件被那个文件占用lsof |grep messages
(1)安装httpd web服务
yum install httpd -y
/etc/init.d/httpd start
lsof -i :80
/etc/init.d/iptables stop
cd/etc/httpd/conf 编辑配置文件,让日志记录到/app/logs下面。
sed -i's@#CustomLog logs/access_log common@CustomLog /app/logs/access_logcommon@g' httpd.conf
(2)创建一个小的文件系统,用于存放上述access_log日志。
dd if=/dev/zero of=/dev/sdc bs=8K count=10
ls -l /dev/sdc
mkfs -t ext4 /dev/sdc
tune2fs -c -1 /dev/sdc
mount -o loop /dev/sdc /app/logs
echo oldboy >/var/www/html/index.html
(3)重启httpd服务,确保日志记录到了上述文件系统挂载的/app/log下面
/etc/init.d/httpd restart
(4)写个循环脚本访问httpd,使得httpd日志充满/app/logs整个空间。
for n in `seq 100000`;do curl -s 127.0.0.1>/dev/null;done
[root@C64log]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 7.2G 2.0G 4.9G 30% /
tmpfs 244M 0 244M 0% /dev/shm
/dev/sda1 194M 54M 131M 30% /boot
/dev/sdc 73K 73K 0 100% /app/log
(5)错误的删除方案
[root@oldboylogs]# rm -f /app/logs/access_log
[root@oldboylogs]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.6G 6.9G 19% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 36M 145M 20% /boot
/dev/sdc 73K 68K 1.0K 99% /app/logs
提示:此时空间并未被释放,你可知道原因?
查看被删除的但仍由进程占用的文件名。
[root@oldboylogs]# lsof|grep del
httpd 6148 root 7w REG 7,0 55260 12 /app/logs/access_log (deleted)
httpd 38178 apache 7w REG 7,0 55260 12 /app/logs/access_log (deleted)
httpd 38483 apache 7w REG 7,0 55260 12 /app/logs/access_log (deleted)
httpd 38484 apache 7w REG 7,0 55260 12 /app/logs/access_log (deleted)
httpd 38752 apache 7w REG 7,0 55260 12 /app/logs/access_log (deleted)
(5)解决问题
1、请先停掉模拟访问测试脚本
forn in `seq 100000`;do curl -s 127.0.0.1 >/dev/null;done
2、重启Http服务
[root@C64log]# /etc/init.d/httpd restart
Stoppinghttpd: [ OK ]
Startinghttpd: [ OK ]
(6)查看处理结果
[root@C64log]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 7.2G 2.0G 4.9G 30% /
tmpfs 244M 0 244M 0% /dev/shm
/dev/sda1 194M 54M 131M 30% /boot
/dev/sdc 73K 14K 55K 21%/app/logs
(7)较好的处理方案
清空日志而不删除日志。
>/app/logs/access_log
########一个文件被 彻底删除条件(文件删除原理)################
#1.硬链接数为零 rm
#2.进程调用数为零 lsof文件 or lsof|grep 文件
案例-硬链接数为零,但是进程调用数不为零
lsof |grep delete
[root@oldbouedu-39 ~]# lsof |grep delete
[root@oldbouedu-39 ~]# rm /var/log/messages -f
[root@oldbouedu-39 ~]# lsof |grep delete
rsyslogd 4756 root 1w REG 8,3 5569 261884 /var/log/messages (deleted)
[root@oldbouedu-39 ~]# /etc/init.d/rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
1.5 Linux系统用户分类讲解
文件删除原理:一个文件被彻底删除:1.硬链接数为0;2.进程调用数为0
磁盘空间满了(no space left on device): ①inode满了-定时任务②block正常满了③block硬链接数为0,进程调用数不为零lsof|grep delete。
超级用户:root
默认是root用户,其UID和GID均为0。root用户在每台unix/Linux操作系统中都是唯一真实存在的,通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限。
在生成环境中,一般会禁止root账户通过SSH远程连接服务器,当然,也会更改默认的SSH端口,以加强系统安全。
最小化安全:
- 安装系统(最小化安装+必要的包组)
- 开启的服务最小化

普通用户:
这类用户一般是由具备系统管理员root的权限的运维或系统管理人员添加的。例如:oldboy这类的用户可以登录系统,但不仅具备操作自己家目录中的文件及目录的权限,除此之外,还可以进入或者浏览相关目录(/etc/ ,/var/log),但是无法创建、修改和删除;
虚拟用户(傀儡):
安装系统后默认就会存在,且默认情况大多数不能登录系统。但是,他们是系统正常运行不可缺少的,他们的存在主要是方便系统管理,满足相应的系统进程对文件属性的要求。
Linux 安全优化:
- 安装系统后可以删除用不到的虚拟用户,但最好不删而是注释掉,万一出问题可以恢复回来。
- 部署服务的时候,也会创建虚拟用户,满足服务的需求!
系统中不同用户角色对应的UID说明:
| UID整数范围 | 具备改UID用户特性 | |
|---|---|---|
| 0 | 超级用户(皇帝) | 当用户的UID为0时,表示这个账户为超级管理员账户,如果需要增加一个系统管理员账号,只需要将该账号的UID改成0即可。 |
| 1-499 | 虚拟用户 | 这个范围是保留给系统使用的UID,之所以这样划分,是为了防止人为建立账户的UID和系统UID之间冲突。并没有其它特殊的含义。 |
| 500-65535 | 普通用户 | 普通用户UID当使用useradd oldboy建立账户时默认情况下UID就是从500开始的。 |
1.6 在passwd文件中,第一行内容就是超级用户root行,我们可以看到它的uid和gid都为0,
[root@oldbouedu-39 local]# grep nobody /etc/passwd
nobody:x:99:99:Nobody:/:/sbin/nologin
[root@oldbouedu-39 local]# egrep "nobody|oldboy" /etc/passwd
nobody:x:99:99:Nobody:/:/sbin/nologin
oldboy:x:500:500::/home/oldboy:/bin/bash
1.7 Linux中三种时间+课程
文件被修改或被访问的时间
Mtime modify time 【修改时间】 文件/目录的修改时间。文件内容修改。
Ctime change time 【属性改变时间】文件/目录的属性的修改时间,大小,硬链接数,权限,所有者。所属于的组,类型。
Atime access time 【访问时间】文件/目录的访问时间,cat 查看。
Mtime:
[root@oldbouedu-39 ~]# stat oldboy.txt
File: `oldboy.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 136466 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-04-18 08:06:18.523551208 +0800
Modify: 2018-04-18 08:06:18.523551208 +0800
Change: 2018-04-18 08:06:18.523551208 +0800
[root@oldbouedu-39 ~]# echo oldboyedu.com >oldboy.txt
[root@oldbouedu-39 ~]# stat oldboy.txt
File: `oldboy.txt'
Size: 14 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 136466 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-04-18 08:06:18.523551208 +0800
Modify: 2018-04-18 08:08:19.363550364 +0800
Change: 2018-04-18 08:08:19.363550364 +0800
[root@oldbouedu-39 ~]# ifconfig eth0 |sed -nr '2s#^.*dr:(.*) Bc.*$#\1#gp'
10.0.0.200

浙公网安备 33010602011771号