一、隐藏权限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