文件目录管理

一、隐藏权限lsattr、chattr

1、设置隐藏文件的权限

chattr设置权限的格式为:chattr [+-=] [选项] [文件或者目录名]

[root@mxk-01 ~]# chattr +i 2.txt

[root@mxk-01 ~]# vi 2.txt

"2.txt"

"2.txt" E212: Can't open file for writing (显示不能保存,因此不能更改文件内容)

Press ENTER or type command to continue

 

将/etc/passwd写入到2.txt

[root@mxk-01 ~]# head -n 2 /etc/passwd > 2.txt

-bash: 2.txt: 权限不够

 

2、lsattr 查看权限(不能修改名字,删除,创建)

[root@mxk-01 ~]# lsattr 2.txt

----i----------- 2.txt

 

取消隐藏权限

[root@mxk-01 ~]# mv 2.txt 3.txt

mv: 无法将"2.txt" 移动至"3.txt": 不允许的操作

[root@mxk-01 ~]# chattr -i 2.txt

[root@mxk-01 ~]# mv 2.txt 3.txt

[root@mxk-01 ~]# ll

总用量 4

-rw-r--r-- 1 root root 0 5月 13 15:09 2.txt~

-rw-r--r-- 1 root root 0 5月 13 11:58 3.txt

-rw-------. 1 root root 1578 5月 13 12:55 anaconda-ks.cfg.1

 

3、选项

chattr +a 1.txt(能追加,可以更改时间信息,不能写入,更改,删除,)

chattr -a 1.txt 可以取消该权限

4、目录情况下 ”+i“ 权限(不能更改,不能写入,不能创建子目录,子文件,不能删除,能给已经存在子文件写入内容)

[root@mxk-01 ~]# chattr +i 111

[root@mxk-01 ~]# lsattr -d 111

----i----------- 111

[root@mxk-01 ~]# rm -r 111

rm:是否进入目录"111"? y

rm:是否删除目录 "111/222"?y

rm: 无法删除"111/222": 权限不够

[root@mxk-01 ~]# mv 111 1212

mv: 无法将"111" 移动至"1212": 不允许的操作

[root@mxk-01 ~]# mkdir 111/1212

mkdir: 无法创建目录"111/1212": 权限不够

 

”+a“权限(能追加,能改子文件写入内容)

[root@mxk-01 ~]# chattr +a 111

[root@mxk-01 ~]# touch 111/1212.txt

[root@mxk-01 ~]# head -n 2 /etc/passwd > 2.txt

[root@mxk-01 ~]# cat 111/1212.txt

[root@mxk-01 ~]# head -n 2 /etc/passwd > 111/1212.txt

[root@mxk-01 ~]# cat 111/1212.txt

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

 

选项:

-R 可以查看更多层次的内容

[root@mxk-01 ~]# lsattr -R 111

---------------- 111/222

111/222:

---------------- 111/1212.txt

 

-A 增加该属性,表示文件或目录的 atime 将不可更改

-s 会将数据同步写入磁盘中

-c 表示自动压缩文件,读取时会自动解压

-a 可以查看所有文件

-d 只查看目录本身

知识点:

[root@mxk-01 ~]# ll

总用量 4

-rw-r--r-- 1 root root 0 5月 13 11:58 2.txt

-rw-r--r-- 1 root root 0 5月 13 15:09 2.txt~ (带有 ~ 表示vi 时自动缓存文件)

-rw-------. 1 root root 1578 5月 13 12:55 anaconda-ks.cfg.1

 

二、特殊权限set_uid(可以用 4 表示)

1、s =set_uid(普通用户临时拥有该命令的所有者的权限)

该权限对二进制可执行文件文件,使文件在执行阶段具有文件所有者的权限。

2、授权set_uid的权限(添加 chmod u+s 文件路径,减去权限:chmod u-s 文件路径)

[root@mxk-01 ~]# ls -l /usr/bin/ls

-rwxr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls

[root@mxk-01 ~]# chmod u+s /usr/bin/ls

[root@mxk-01 ~]# ls -l /usr/bin/ls

-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls(颜色发生变化)

 

既可以有权限

[xiaokang@mxk-01 ~]$ ls /root/

ls: 无法打开目录/root/: 权限不够

[xiaokang@mxk-01 ~]$ ls /root/

111 2.txt 2.txt~ 3.txt anaconda-ks.cfg.1

[xiaokang@mxk-01 ~]$ ls -ld /root/

dr-xr-x---. 4 root root 200 5月 13 15:38 /root/

 

用另外一种方式,写入,变成 S ,这是由于没有 x 权限(不受影响)

[root@mxk-01 ~]# chmod u=rws /usr/bin/ls

[root@mxk-01 ~]# ll /usr/bin/ls

-rwSr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls

 

当加上 x 权限时,显示

[root@mxk-01 ~]# chmod u+x /usr/bin/ls

[root@mxk-01 ~]# ll /usr/bin/ls

-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls

 

chmod u+s 文件或者目录 ==chmod 4777 文件或者目录

3、

目录可以设置set_uid权限,但是无意义

三、特殊权限set_gid(可以用 2 表示)

set_gid=该权限可以作用在二进制可执行文件上,也可以作用在目录上

1、与set_uid用法相似,set_uid是普通用户临时拥有该命令的所有者的权限,set_gid是普通用户临时拥有该命令的所属组的权限

先添加给权限

[root@mxk-01 ~]# chmod u=rwx /usr/bin/ls

[root@mxk-01 ~]# chmod g+s /usr/bin/ls

[root@mxk-01 ~]# ll /usr/bin/ls

-rwxr-sr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls

 

添加完成之后,普通用户依然可以执行

[xiaokang@mxk-01 ~]$ ls /root/

111 2.txt 2.txt~ 3.txt anaconda-ks.cfg.1

[xiaokang@mxk-01 ~]$ ls -ld /root/

dr-xr-x---. 4 root root 200 5月 13 15:38 /root/

 

2、set_gid作用在目录上

1)更改所属组,然后添加权限,查看效果

[root@mxk-01 ~]# ls -ld 123

drwxrwxr-x 2 root root 6 5月 13 16:44 123

[root@mxk-01 ~]# chown :xiaokang 123

[root@mxk-01 ~]# ls -ld 123

drwxrwxr-x 2 root xiaokang 6 5月 13 16:44 123

[root@mxk-01 ~]# mkdir 123/ma

[root@mxk-01 ~]# ls -ld 123/ma

drwxrwxr-x 2 root root 6 5月 13 16:45 123/ma

[root@mxk-01 ~]# chmod g+s 123

[root@mxk-01 ~]# mkdir 123/ma1

[root@mxk-01 ~]# ll 123

总用量 0

drwxrwxr-x 2 root root 6 5月 13 16:45 ma

drwxrwsr-x 2 root xiaokang 6 5月 13 16:46 ma1

[root@mxk-01 ~]# chmod g-s 123

[root@mxk-01 ~]# mkdir 123/ma2

[root@mxk-01 ~]# ll 123

总用量 0

drwxrwxr-x 2 root root 6 5月 13 16:45 ma

drwxrwsr-x 2 root xiaokang 6 5月 13 16:46 ma1

drwxrwxr-x 2 root root 6 5月 13 16:47 ma2

 

chmod g+s 文件或者目录 ==chmod 2777 文件或者目录

四、特殊权限stick_bit(可以用 1 表示)

stick_bit 防止删除位

1)

在 1 用户下创建文件 ma,写入内容 修改权限

切换用户 2

可以更改文件 ma ,不能删除文件 ma

2)

在 1 用户下创建目录 ma1 ,修改权限为 777

切换到 2 用户下

可以在目录 ma1 下进行创建目录,创建文件,也可以删除创建的目录和文件,至于能不能删除与目录 ma1 是否添加权限有关。

3)

chmod o+s 文件或者目录 ==chmod 1777 文件或者目录

五、软链接文件(粉绿色)

软链接:是建立一个独立的文件,当读取这个链接文件时,他会把读取的行为转发到该文件所链接的文件上。(源文件和源目录都不能被删除)

软链接命令格式:ln -s [来源文件] [目的文件]

1)软链接,如 /bin

[root@mxk-01 ~]# ls -l /bin

lrwxrwxrwx. 1 root root 7 5月 11 06:28 /bin -> usr/bin

 

当一个文件 1.txt 必须要在某个特定路径下,某种原因不在指定路径下在另一个路径下,可以用软连接来实现

执行:ln -s 源文件 软连接文件

[root@mxk-01 ~]# mkdir -p 123/234/

[root@mxk-01 ~]# ln -s /tmp/xiaokang2/1.txt /root/123/234/1.txt

[root@mxk-01 ~]# ll 123/234

总用量 0

lrwxrwxrwx 1 root root 20 5月 13 18:11 1.txt -> /tmp/xiaokang2/1.txt

 

2)

软连接不仅可以文件,也可以目录

 

[root@mxk-01 ~]# ls /tmp/xiaokang/xk

[root@mxk-01 ~]# ln -s /tmp/xiaokang/xk /root/234/345/xk

[root@mxk-01 ~]# ll 234/345

总用量 0

lrwxrwxrwx 1 root root 16 5月 13 18:15 xk -> /tmp/xiaokang/xk

 

3)

相对路径也可以做软连接,只是存在于当前目录,如果移动或者更改名字,软连接文件将不存在

 

[root@mxk-01 tmp]# ln -s xiaokang/xk xiaokang2/xk1

[root@mxk-01 tmp]# ls -l xiaokang2

总用量 0

lrwxrwxrwx 1 root root 11 5月 13 18:27 xk1 -> xiaokang/xk

 

1)尽量使用绝对路径

2)可以跨分区建立软链接

知识点:

案例:

服务 aming --> /boot/aming.log

/boot/aming.log 移动到 /aming.log

aming 服务不能改动存在路径,负责容易出现状况

解决方案:

cp /boot/aming.log /aming.log (将/boot/aming.log拷贝/aming.log)

rm /boot/aming.log (删除/boot/aming.log)

ln -s /aming.log /boot/aming.log (做软链接)

1、rsync 命令可用于上案例中移动时

2、软链接文件也有大小,与做软链接时路径长度有关,路径越长存储越大

3、删除软链接目录时,不能再软链接目录后添加 /

六、硬链接文件

1)

硬链接文件:当系统要读取一个文件时,先会读取inode号,然后再根据inode中的信息到块区域中将数据取出来

[root@mxk-01 ~]# ln 1.txt 1_heard.txt

[root@mxk-01 ~]# ln -s 1.txt _sorft.txt

[root@mxk-01 ~]# ll

总用量 16

drwxrwxr-x 3 root root 17 5月 13 18:11 123

-rw-rw-r-- 2 root root 28 5月 13 18:56 1_heard.txt

-rw-rw-r-- 2 root root 28 5月 13 18:56 1.txt

drwxrwxr-x 3 root root 17 5月 13 18:14 234

-rw-rw-r-- 1 root root 35 5月 13 18:56 2.txt

-rw-r--r-- 1 root root 0 5月 13 15:09 2.txt~

-rw-------. 1 root root 1578 5月 13 12:55 anaconda-ks.cfg.1

lrwxrwxrwx 1 root root 5 5月 13 18:56 _sorft.txt -> 1.txt

[root@mxk-01 ~]# ls

123 1_heard.txt 1.txt 234 2.txt 2.txt~ anaconda-ks.cfg.1 _sorft.txt

 

2)硬链接特性

两个相互的为硬链接,可以删除源文件

[root@mxk-01 ~]# ls -i 1_heard.txt

33575301 1_heard.txt (真正的文件在inode)

 

不能对目录做硬链接,文件可以做硬链接,但不能跨分区。

[root@mxk-01 ~]# ln /boot/config-3.10.0-693.el7.x86_64 /tmp/config.1

ln: 无法创建硬链接"/tmp/config.1" => "/boot/config-3.10.0-693.el7.x86_64": 无效的跨设备连接

(因为两个分区中存在相同的inode号)

七、find命令

1/搜索文件

find /eyc/ -type -name 具体用法: find 路径 具体条件

1)根据类型或者名字查找文件

[root@mxk-01 ~]# find /etc/ -type l

/etc/pki/ca-trust/source/ca-bundle.legacy.crt

/etc/pki/java/cacerts

/etc/pki/tls/cert.pem

/etc/pki/tls/certs/ca-bundle.crt

/etc/pki/tls/certs/ca-bundle.trust.crt

......

[root@mxk-01 ~]# find /dev/ -type b

/dev/sr0

/dev/sda3

/dev/sda2

/dev/sda1

/dev/sda

/dev/fd0

 

2)-atime -ctime -mtime

stat 命令用来查看文件的具体信息(时间信息)

[root@mxk-01 ~]# ls

123 1_heard.txt 1.txt 234 2.txt 2.txt~ anaconda-ks.cfg.1 _sorft.txt

[root@mxk-01 ~]# stat 2.txt

文件:"2.txt"

大小:35 块:8 IO 块:4096 普通文件

设备:803h/2051d Inode:33575300 硬链接:1

权限:(0664/-rw-rw-r--) Uid:( 0/ root) Gid:( 0/ root)

最近访问:2018-05-13 18:56:20.006631286 +0800(atime)

最近更改:2018-05-13 18:56:20.006631286 +0800(mtime)

最近改动:2018-05-13 18:56:20.008631301 +0800(ctime)

创建时间:-

更改文件内容,mtime时间会发生变动。更改文件权限,ctime会发生变动

用find查找 具体语句:find / -type f -mtime -1(-1小于一天,+1大于一天)

[root@mxk-01 ~]# find /etc/ -type f -mtime -1

/etc/resolv.conf

/etc/group

......

[root@mxk-01 ~]# find /etc/ -type f -ctime -1

/etc/resolv.conf

/etc/cron.daily/mlocate

......

[root@mxk-01 ~]# find /etc/ -type f -atime -1

/etc/resolv.conf

/etc/environment

......

 

命令:find /etc/ -type l -mtime -1 -name ".conf" 中条件是并列关系

find /etc/ -type l -o -mtime -1 -o -name ".conf" 中条件是或者的关系(由 -o 连接)

3)按照inode号查找

[root@mxk-01 ~]# ll

总用量 16

drwxrwxr-x 3 root root 17 5月 13 18:11 123

-rw-rw-r-- 2 root root 28 5月 13 18:56 1_heard.txt

-rw-rw-r-- 2 root root 28 5月 13 18:56 1.txt

drwxrwxr-x 3 root root 17 5月 13 18:14 234

-rwx------ 1 root root 39 5月 13 22:40 2.txt

-rw-r--r-- 1 root root 0 5月 13 15:09 2.txt~

-rw-------. 1 root root 1578 5月 13 12:55 anaconda-ks.cfg.1

lrwxrwxrwx 1 root root 5 5月 13 18:56 _sorft.txt -> 1.txt

[root@mxk-01 ~]# ls -i 1.txt

33575301 1.txt

[root@mxk-01 ~]# find / -inum 33575301

/root/1.txt

/root/1_heard.txt

 

知识点:

1)

whereis 局限性很大,要更新存放命令的库

locate 要使用该命令,首先要进行安装,执行:yum install -y mlocate,安装完成之后,查找

[root@mxk-01 ~]# locate ls

locate: 无法执行 stat () `/var/lib/mlocate/mlocate.db': 没有那个文件或目录

无法查找,需要更新库文件,手动生成命令 updatedb

2)

快捷键使用:

Ctrl l : 清屏

Ctrl d :退出终端 =exit、logout

Ctrl c :终止

Ctrl u :让光标往前清除命令

Ctrl :让光标往后清楚命令

Ctrl e :把光标移到最后

Ctrl a :让光标从头开始

3)

更改语言使用:LANG=en

echo “121212” >> 2.txt :表示在2.txt中增加了一串字符“121212”

[root@mxk-01 ~]# echo "12122"

12122

[root@mxk-01 ~]# echo "1212"

1212

 

find /root/ -type f -mmin -60 (时间为60分钟以内更改的文件,-120:为2h)

[root@mxk-01 ~]# find /root/ -type f -mmin -60

/root/.bash_history

/root/2.txt

5)-exec

find /root/ -type f -mmin -60 -exec ls -l {} \;(表示查找出来文件的详细信息)

[root@mxk-01 ~]# find /root/ -type f -mmin -200 -exec ls -l {} \;

-rw-------. 1 root root 9386 5月 13 22:06 /root/.bash_history

-rwx------ 1 root root 39 5月 13 22:40 /root/2.txt

 

find /root/ -type f -mmin -150 -exec mv {} {}.bak \;(更改查找出来的文件后缀)

[root@mxk-01 ~]# find /root/ -type f -mmin -150

/root/.bash_history

/root/2.txt

[root@mxk-01 ~]# find /root/ -type f -mmin -150 -exec mv {} {}.bak \;

[root@mxk-01 ~]# find /root/ -type f -mmin -150

/root/.bash_history.bak

/root/2.txt.bak

6)-size

find /root/ -type f -size -10k -exec ls -lh {} \;(查找小于10k的文件,并列取详细信息,+10k 表示大于10k的文件,+10M大于10M,-10M小于10M)

[root@mxk-01 ~]# find /root/ -type f -size -10k -exec ls -lh {} \;

-rw-r--r--. 1 root root 18 12月 29 2013 /root/.bash_logout

-rw-r--r--. 1 root root 176 12月 29 2013 /root/.bash_profile

-rw-r--r--. 1 root root 176 12月 29 2013 /root/.bashrc

-rw-r--r--. 1 root root 100 12月 29 2013 /root/.cshrc

-rw-r--r--. 1 root root 129 12月 29 2013 /root/.tcshrc

-rw-r--r-- 1 root root 209 5月 10 23:53 /root/.ssh/suthorized_keys

-rw-r--r-- 1 root root 1.1K 5月 11 23:45 /root/.ssh/authorized_keys

-rw-------. 1 root root 1.6K 5月 13 12:55 /root/anaconda-ks.cfg.1

-rw-r--r-- 1 root root 0 5月 13 15:09 /root/2.txt~

-rw-rw-r-- 2 root root 28 5月 13 18:56 /root/1.txt

-rw-rw-r-- 2 root root 28 5月 13 18:56 /root/1_heard.txt

-rwx------ 1 root root 39 5月 13 22:40 /root/2.txt.bak

 

八、文件名后缀

1、Linux是区分大小写,对字母要求很严谨

2、文件名后缀不是很严谨,可以自定义

3、一般情况下 .gz 是压缩文件,但不是很绝对

4、.conf 一般是配置文件

5、echo LANG 是语言设置

[root@mxk-01 ~]# echo LANG

LANG

[root@mxk-01 ~]# echo $LANG

zh_CN.UTF-8

 

[root@mxk-01 ~]# stat 1.txt

文件:"1.txt"

大小:28 块:8 IO 块:4096 普通文件

设备:803h/2051d Inode:33575301 硬链接:2

权限:(0664/-rw-rw-r--) Uid:( 0/ root) Gid:( 0/ root)

环境:system_u:object_r:admin_home_t:s0

最近访问:2018-05-13 18:56:02.613493736 +0800

最近更改:2018-05-13 18:56:02.613493736 +0800

最近改动:2018-05-14 21:58:29.494998094 +0800

创建时间:-

 

九、Linux和Windows互传文件

1、安装 yum install -y lrzsz

[root@mxk-01 ~]# yum install -y lrzsz

已加载插件:fastestmirror

base | 3.6 kB 00:00:00

extras | 3.4 kB 00:00:00

updates | 3.4 kB 00:00:00

Loading mirror speeds from cached hostfile

* base: mirrors.aliyun.com

* extras: mirrors.163.com

* updates: mirrors.aliyun.com

正在解决依赖关系

--> 正在检查事务

---> 软件包 lrzsz.x86_64.0.0.12.20-36.el7 将被 安装

--> 解决依赖关系完成

 

依赖关系解决

 

====================================================================================================================================

Package 架构 版本 源 大小

====================================================================================================================================

正在安装:

lrzsz x86_64 0.12.20-36.el7 base 78 k

 

事务概要

====================================================================================================================================

安装 1 软件包

 

总下载量:78 k

安装大小:181 k

Downloading packages:

lrzsz-0.12.20-36.el7.x86_64.rpm | 78 kB 00:00:00

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

正在安装 : lrzsz-0.12.20-36.el7.x86_64 1/1

验证中 : lrzsz-0.12.20-36.el7.x86_64 1/1

 

已安装:

lrzsz.x86_64 0:0.12.20-36.el7

 

完毕!

2、将Linux文件传送到Windows上

执行命令: sz 文件名

可以将文件放入到windows

3、将Windows的文件传送到Linux上

执行命令:rz

 

选择文件,传送完成之后

[root@mxk-01 ~]# ls

123 1_heard.txt 1.txt 234 2.txt~ 2.txt.bak anaconda-ks.cfg.1 _sorft.txt 收据.docx

转载于:https://my.oschina.net/u/3850989/blog/1813136

你可能感兴趣的:(文件目录管理)