文件、目录管理(下)

2.17 隐藏权限lsattr_chattr

  •  # chattr 设置隐藏权限

示例:[root@localhost tmp]# chattr +i test.txt  (给test.txt文件添加一个隐藏的i权限)

编辑:[root@localhost tmp]# vi test.txt            

提示文件只读

[root@localhost tmp]# head -n2 /etc/passwd > test.txt

-bash: test.txt: 权限不够

查看权限

[root@localhost tmp]# ls -l test.txt
-rw-r--r--. 1 root root 0 7月  30 15:35 test.txt 

      可以看到root用户是有读写权限的,这时候就要考虑是否有什么隐藏权限

  • lsattr`**查看隐藏权限** 
   [root@localhost tmp]# lsattr test.txt
   ----i----------- test.txt       

     这里可以看到test.txt文件有一个i权限,正常情况下新建一个文件是没有任何隐藏权限的 
     加了i权限之后 不能mv(重命名) rm(删除) vi(编辑) touch(更改时间) >(覆盖) 

如何去除i权限?

# chattr -i test.txt 

  • 另一种用法 :

# chattr +a test.txt    只能追加,不允许其他操作

[root@localhost tmp]# chattr +a test.txt
[root@localhost tmp]# mv test.txt test2.txt
mv: 无法将"test.txt" 移动至"test2.txt": 不允许的操作
[root@localhost tmp]# rm test.txt
rm:是否删除普通空文件 "test.txt"?y
rm: 无法删除"test.txt": 不允许的操作
[root@localhost tmp]# head -n2 /etc/passwd > test.txt
-bash: test.txt: 不允许的操作
[root@localhost tmp]# touch test.txt
[root@localhost tmp]# head -n2 /etc/passwd >> test.txt
[root@localhost tmp]# cat test.txt 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

由上可以看到赋予test.txt a 的隐藏权限后,允许追加,类似于日志,还允许touch(更改时间),不允许其他操作。 
如何去除a权限? 
# chattr -a test.txt 

#lsattr可以查看目录下面的子目录和文件,不能查看目录本身

[root@localhost tmp]# ls 111
222
[root@localhost tmp]# lsattr 111
---------------- 111/222

#lsattr -d可以 查看目录本身,和#ls -d用法相同

[root@localhost tmp]# lsattr -d 111
---------------- 111

知识点:给目录加i权限和给文件加i权限,实际上是一样的。但是针对已存在目录下的文件,限制不大,依然可以对目录下的文件进行编辑,a权限也是,只能限制目录本身。

#lsattr -R 可以查看目录和目录下子目录里所有的文件权限

[root@localhost tmp]# lsattr -R 111
---------------- 111/222

111/222:
---------------- 111/222/333

111/222/333:

完整的目录

[root@localhost tmp]# tree 111
111
└── 222
    └── 333

2 directories, 0 files

 知识点:#lsattr -a可以查看隐藏文件的隐藏权限

2.18 特殊权限set_uid

    此时就被称为Set UID,简称为SUID的特殊权限 ,当普通用户执行passwd命令时,可以临时获得root权限,从而可以更改密码

  • 当s这个标志出现在文件拥有者的x权限上时,例如passwd这个命令:

SUID的限制与功能:

  • SUID权限仅对于二进制可执行文件有效,不能用在普通文件上,对目录也是无效的;
  • 执行者对于该程式需要具有x的可执行权限;
  • 本权限仅在执行该程式的过程中有效;
  • 执行者将具有该程式拥有者(owner)的权限。

chmod u+s 添加特殊权限

[root@localhost ~]# ls -l /bin/ls
-rwsr-xr-x. 1 root root 117672 4月  11 12:35 /bin/ls

chmod u-s  解除特殊权限 

[root@localhost ~]# ls -l /bin/ls
-rwxr-xr-x. 1 root root 117672 4月  11 12:35 /bin/ls

2.19 特殊权限set_gid

 该权限可以作用在文件上(二进制可执行文件),也可以作用在目录上.当作用在文件上时,其功能和set_uid一样,它会使文件在执行阶段具有文件所属组的权限.目录被设置这个权限后,任何用户在此目录下创建的文件都具有和该目录所属的组相同的组

chmod g+s 添加特殊权限(添加权限后创建的文件或目录与上一级的所属组一致)

[root@localhost ~]# chmod g+s /bin/ls
[root@localhost ~]# ls -l /bin/ls
-rwxr-sr-x. 1 root root 117672 4月  11 12:35 /bin/ls

chmod g-s 解除特殊权限

[root@localhost ~]# chmod g-s /bin/ls
[root@localhost ~]# ls -l /bin/ls
-rwxr-xr-x. 1 root root 117672 4月  11 12:35 /bin/ls

2.20 特殊权限stick_bit

stick_bit 防止被别的用户删除 ,谁的文件谁做主。(PS : root用户除外 , 它是超级管理员 , 防止不了,更改成777权限也无效) 

chmod o+t 目录

[root@localhost tmp]# ls -ld /tmp
drwxrwxrwt. 10 root root 4096 7月  30 21:11 /tmp

2.21 软链接文件

软链接 尽量使用绝对路径

ln -s /原文件或目录 /目标文件或目录(软链接文件或目录)

[root@localhost tmp]# ln -s /tmp/yum.log /root/yum.log
[root@localhost tmp]# ll /root/
总用量 4
-rw-------. 1 root  root 1117 7月  22 13:59 anaconda-ks.cfg
drwxr-xr-x. 2 user1 root   32 7月  30 22:23 dir3
lrwxrwxrwx. 1 root  root   12 7月  30 23:59 yum.log -> /tmp/yum.log

2.22 硬链接文件 

硬链接 只能给文件做硬链接,不能给目录做硬链接

硬链接可删除,因文件存在inode里;

ln 文件 硬链接文件 创建硬链接

注:文件只能在同分区内创建硬链接;不能跨分区;因分区有独立的inode;

 2.23 find命令

 ctrl 常用组合键:

 

find命令通常可以用于按文件名、文件类型、用户甚至是时间戳查找文件。 

  • Ctrl+l 清屏
  • Ctrl+d 结束或退出
  • Ctrl+c 中断
  • Ctrl+u 清除当前光标之前的内容
  • Ctrl+k 清除当前光标之后的内容
  • Ctrl+a 切换到命令行开始
  • Ctrl+e 切换到命令行末尾

find命令的常用选项及实例

-name 按照文件名查找文件。

find /dir -name filename 在/dir目录及其子目录下面查找名字为filename的文件

find . -name “*.txt”在当前目录及其子目录(用“.”表示)中查找任何扩展名为“.txt”的文件

-perm 按照文件权限来查找文件。

find . -perm 755 –print在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件

-user  按照文件属主来查找文件。

-group 按照文件所属的组来查找文件。

-mtime -n +n 按照文件的更改时间来查找文件, – n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。

find / -mtime -5 –print 在系统根目录下查找更改时间在5日以内的文件

find /tmp/ -mtime +3 –print 在/tmp目录下查找更改时间在3日以前的文件

-type 查找某一类型的文件

诸如:

b – 块设备文件。
d – 目录。
c – 字符设备文件。
p – 管道文件。
l – 符号链接文件。
f – 普通文件。

 

  •  
  •  

借助-exec选项与其他命令结合使用 
找出当前目录下所有root的文件,并把所有权更改为用户xzl 
# find .-type f -user root -exec chown xzl {} \; 
上例中,{} 用于与-exec选项结合使用来匹配所有文件,然后会被替换为相应的文件名。 
找出自己家目录下所有的.txt文件并删除 
# find $HOME/. -name "*.txt" -ok rm {} \; 
上例中,-ok和-exec行为一样,不过它会给出提示,是否执行相应的操作。 
查找当前目录下所有.txt文件并把他们拼接起来写入到all.txt文件中 
# find . -type f -name "*.txt" -exec cat {} \;> all.txt 
将30天前的.log文件移动到old目录中 
find . -type f -mtime +30 -name "*.log" -exec cp {} old \; 
找出当前目录下所有.txt文件并以“File:文件名”的形式打印出来 
# find . -type f -name "*.txt" -exec printf "File: %s\n" {} \; 
因为单行命令中-exec参数中无法使用多个命令,以下方法可以实现在-exec之后接受多条命令 
# -exec ./text.sh {} \; 
find其他技巧收集 
要列出所有长度为零的文件 
# find . -empty 
根据inode查找所有相同inode号的文件 
# find . -inum 35170257

2.24 文件名后缀  

Linux系统是区分大小写的,不像windows一样,后缀名并不代表它是什么样的文件 
管理员习惯的把相同的文件定义相同的后缀名,方便大家使用区分和查询 
# echo $LANG查看系统默认语言

2.25 Linux和windows互传文件

前提:只能在Xshell下使用,或者Securecrt,Putty不支持

安装工具包:

# yum install -y lrzsz  

Linux向Windows传输文件 
# sz test.txt
会弹出窗口,选择保存到桌面后,就可以发现test.txt文件就已经放到系统桌面上了

Windows向linux传输文件

# rz 

上传完毕后就会查看到刚才上传的文件(传输到当前目录)

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值