2018-5-14笔记

2.17 隐藏权限lsattr_chattr

命令 chattr

语法: chattr [+-=][Asaci] [文件或者目录名]

+ - =: 分别为增加、减少、设定

A: 增加该属性后,文件或目录的 atime 将不可被修改;

S: 增加该属性后,会将数据同步写入磁盘中;

a: 增加该属性后,只能追加不能更改,非 root 用户不能设定该属性;

c: 自动压缩该文件,读取时会自动解压;

i: 增加后,使文件或目录不能被删除、重命名、设定链接、写入、新增数据;即使是root用户也不能修改;

其中常用的为 a 和 i 两个选项。

[root@localhost ~]# chattr +i test2

[root@localhost ~]# touch test2/test1

touch: 无法创建'test2/test1': 权限不够

[root@localhost ~]# chattr -i test2

[root@localhost ~]# touch test2/test1

[root@localhost ~]# chattr +i test2

[root@localhost ~]# rm -f test2/test1

rm: 无法删除'test2/test1': 权限不够

对 test2 目录增加 i 权限后,即使是 root 账户也不能在 test2 目录中创建或删除 test1 文件

[root@localhost ~]# touch test2/test3

[root@localhost ~]# ls test2

test1 test3

[root@localhost ~]# chattr +a test2

[root@localhost ~]# rm -f test2/test1

rm: 无法删除 'test2/test1': 不允许的操作

[root@localhost ~]# touch test2/test4

[root@localhost ~]# ls test2

test1 test3 test4

test2 目录增加 a 权限后,只可以在里面创建文件,而不能删除文件。文件同样可以适用这些权限。

命令 : lsattr

该命令用来读取文件或者目录的特殊权限,语法为 lsattr [-aR] [文件/目录名]

-a: 类似与 ls 的-a 选项,即连同隐藏文件一同列出;

-R: 连同子目录的数据一同列出

# lsattr test2

-----a-------e- test2/test1

----i--------e- test2/test3

-------------e- test2/test4

# lsattr -aR test2

----i--------e- test2/.

-----a-------e- test2/test1

-------------e- test2/..

----i--------e- test2/test3

-------------e- test2/test4

 

2.18 特殊权限set_uid

该权限针对二进制可执行文件,使文件在执行阶段具有文件所有者的权限。保证普通用户临时拥有root用户权限。例如passwd命令

[root@localhost ~]# ls -l /usr/bin/passwd

-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd

passwd 显示的是 rws,并非传统的 rwx。用数字表示为 4755。那么这个 4 是如何计算来的呢?当有特殊权限时,第一位数字可以是 0, 1(--t), 2(-s-), 3(-st), 4(s--), 5(s-t), 6(ss-), 7(sst)。

 

2.19 特殊权限set_gid

该权限可以应用在文件上同样也可以作用在目录。设置在文件上,作用和 set uid 类似,前提是这个文件是可执行的二进制文件,当设置 set gid 后,执行该文件的用户会临时以该文件所属组的身份执行。若目录被设置这个权限后, 任何用户在此目录下创建的文件或目录都具有和该目录所属的组相同的组。

[root@localhost ~]# mkdir /tmp/test

[root@localhost ~]# chmod 777 /tmp/test

[root@localhost ~]# ls -ld /tmp/test

drwxrwxrwx 2 root root 4096 8 月 14 17:58 /tmp/test

[root@localhost ~]# chmod g+s /tmp/test

[root@localhost ~]# ls -ld /tmp/test

drwxrwsrwx 2 root root 4096 8 月 14 17:58 /tmp/test

[root@localhost ~]# su - user1

[user1@localhost ~]$ cd /tmp/test

[user1@localhost test]$ mkdir 123

[user1@localhost test]$ touch 1.txt

[user1@localhost test]$ ls –l

总用量 4

drwxrwsr-x 2 user1 root 4096 8 月 14 17:59 123

-rw-rw-r-- 1 user1 root 0 8 月 14 17:59 1.txt

说明:给/tmp/test 目录设置 set gid 权限后,权限由原来的 drwxrwxrwx 变为 drwxrwsrwx,此时以 user1身份在/tmp/test 目录里创建目录和文件,其所属组都为 root,而不是 user1。

 

2.20 特殊权限stick_bit

Stick_bit 可以理解为防删除位。一个文件是否可以被某用户删除,主要取决于该文件所在目录是否对该用户具有写权限。如果没有写权限,则这个目录下的所有文件都不能被删除,同时也不能添加新的文件。如果希望用户能够添加文件但同时不能删除该目录下的其他用户的文件,则可以对父目录增加该权限。设置它后,就算用户对目录具有写权限,也不能删除其他用户的文件。比如/tmp/目录就设置过该权限

[root@localhost ~]# ls -ld /tmp/

drwxrwxrwt. 7 root root 16384 8 月 14 17:58 /tmp/

我们再来增加一个用户,来测试该权限的作用。

[root@localhost ~]# useradd user2

[root@localhost ~]# su - user1

[user1@localhost ~]$ touch /tmp/user1.txt

[user1@localhost ~]$ echo "121" > !$

echo "121" > /tmp/user1.txt

[user1@localhost ~]$ exit

logout

[root@localhost ~]# su - user2

[user2@localhost ~]$ rm -f /tmp/user1.txt

rm: 无法删除"/tmp/user1.txt": 不允许的操作

说明:一个文件能否被删除,取决于该文件父目录的权限, /tmp/目录是 777,任何人都可写的,所以理论上任何人都可以删除/tmp/下的所有文件,但是刚才我们做的实验却表明, user2 是不可以删除 user1 的文件的,这就是因为/tmp/目录有一个 stick bit。

 

2.21 软连接和硬链接文件

链接文件分为两种,硬链接(hard link)和软链接(symbolic link)。两种链接的本质区别关键点在于 inode。

硬链接: 当系统要读取一个文件时,就会先去读 inode table,一个文件对应一个 inode,然后再去根据 inode 中的信息到块区域去将数据取出来。而硬链接是直接使用了和源文件相同的 inode,硬链接文件直接链接到文件放置的块区域。也就是说,进行硬链接的时候实际上该文件内容没有任何变化,只是指定了相同的 inode。硬链接有两个限制: (1)不能跨文件系统,因为不同的文件系统有不同的 inode table; (2) 不能链接目录。

软链接: 跟硬链接不同,这个是建立一个独立的文件,而这个文件的作用是当读取这个链接文件时,它会把读取的行为转发到该文件所 link 的文件上。

建立软连接和硬链接用 ln命令:语法 : ln [-s] [来源文件] [目的文件]

ln 常用的选项就一个-s,如果不加就是建立硬链接,加上就建立软链接。

 

2.22 find搜索命令

1. 使用find搜索文件

语法 : find [路径] [参数]

几个经常用的参数

-atime +n/-n: 访问或执行时间大于/小于n天的文件

-ctime +n/-n: 写入、更改inode属性(例如更改所有者、权限或者链接)时间大于/小于n天的文件

-mtime +n/-n: 写入时间大于/小于n天的文件

 

-name filename: 直接查找该文件名的文件

[root@localhost ~]# find . -name test2

./test/test2

./test2

 

-type filetype: 通过文件类型查找。filetype 包含了 f、b,、c、d、l、s 等。

[root@localhost ~]# find /tmp/ -type d

/tmp/

/tmp/ .ICE-unix

[root@localhost ~]# find /tmp/ -type f

/tmp/yum.log

 

2. mtime,atime,ctime三个time属性

atime:文件的Access time,是在读取文件或者执行文件时更改的。

mtime:文件的Modified time,是在写入文件时随文件内容的更改而更改的。

ctime:文件的Create time,是在写入文件、更改所有者、权限或链接设置时随inode的内容更改而更改的。

备注:inode:它译成中文就是索引节点,它用来存放档案及目录的基本信息,包含时间信息、文档名、属主以及属组等。Inode是Unix操作系统中的一种数据结构,本质是结构体,inode是随文件系统创建时生成的,它的个数有限。在Linux下,可以通过df -i来查看各个分区的inode数量。

 

获取mtime,atime,ctime命令stat

[root@localhost ~]# stat test/test2

File: 'test/test2'

Size: 0 Blocks: 0 IO Block: 4096 普通空文件

Device: 803h/2051d Inode: 261657 Links: 1

Access: (0744/-rwxr--r--) Uid: ( 500/ user1) Gid: ( 500/testgroup)

Access: 2014-05-10 09:00:36.092000531 +0800

Modify: 2014-05-10 09:00:36.092000531 +0800

Change: 2014-05-10 09:30:58.788996594 +0800

 

备注:atime不一定在访问文件之后被修改,因为使用ext3文件系统的时候,如果在mount的时候使用了noatime参数那么就不会更新atime的信息。总之, 这三个time属性值都放在了inode中。若mtime、atime修改inode就一定会改,既然inode改了,那ctime也就跟着要改了。

 

3. which 查找可执行文件的绝对路径,which 只能用来查找 PATH 环境变量中出现的路径下的可执行文件。whereis很少用

[root@localhost ~]# which vi

/bin/vi

[root@localhost ~]# which cat

/bin/cat

4. whereis 查找文件

它是通过预先生成的一个文件列表库去查找跟给出的文件名相关的文件。语法: whereis [-bmsu] [文件名称]

-b: 只找 binary 文件

-m: 只找在说明文件 manual 路径下的文件

-s: 只找 source 来源文件

-u: 没有说明档的文件

# whereis ls

ls: /bin/ls /usr/share/man/man1/ls.1.gz

 

5. locate查找文件 它类似于whereis,也是通过查找预先生成的文件列表库来告诉用户要查找的文件在哪里。后边直接跟文件名。

[root@localhost ~]# yum install -y mlocate

[root@localhost ~]# locate passwd

locate: can not open `/var/lib/mlocate/mlocate.db': No such file or directory

安装好mlocate包后,运行locate命令会报错,这是因为系统还没有生成那个文件列表库。你可以使用updatedb命令立即生成(更新)这个库。如果你的服务器上正跑着重要的业务,那么最好不要去运行这个命令,因为一旦运行,服务器的压力会变大。这个数据库默认情况下每周更新一次。当使用locate命令去搜索一个文件,而该文件正好是在两次更新时间段内创建的,肯定是得不到结果。

利用locate搜索到的文件列表,不管是目录名还是文件名,只要包含我们要搜索的关键词,都会列出来,所以locate不适合精准搜索,这个命令使用的也不多。

 

2.26 文件后缀名

linux命令区分大小写

在windows下可以根据文件的后缀能判断文件的类型。但在在linux下,linux文件名的后缀可自主命名,一个文件是否能够被执行,和后缀名没有太大的关系,主要和文件的属性有关。

 

linux系统下常见的文件名后缀及文件类型

1:系统文件*.conf配置文件

.rpm rpm包

.a 一种存档文件

.lock 一种琐文件

.~ 备份文件

. 隐藏文件

2:程序或脚本.c c语言源程序文件

.cpp c++语言源程序

.h c或c++头文件

.o 程序对象文件

.pl perl语言源程序

. php php语言源程序

.tcl tcl脚本程序

.so/.lib 库文件

.sql sql语言文件

3:格式文件

.txt 无格式的ascii码文件

.html/.htm 静态web页

.ps postScipt文件

.au 一种声音文件

.wav 一种声音文件

.xpm一种图像文件

.png一种图形,图像文件

4:存档与压缩文件

.tar tar归档文件

.Z/.gz/.bz2压缩文件

.tar.gz/.tgz/.tar.bz2/.tbz为压缩后的tar包

 

2.27 linux和windows互传文件

使用 xshell 或者securecrt

# yum install -y lrzsz

 

sz file : 把linux上的文件传到windows上

 

rz : 把windows上的文件传到linux下的当前目录。

 

 

转载于:https://my.oschina.net/u/3851442/blog/1813380

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值