码迷,mamicode.com
首页 > 系统相关 > 详细

老男孩Linux运维第41期20170924开班第五周学习重点课堂记录

时间:2017-10-13 14:58:09      阅读:350      评论:0      收藏:0      [点我收藏+]

标签:老男孩linux运维   课堂知识记录   


 
 

 

Week5课堂知识点记录总结

 

作者:Old_Pan

归档:学习笔记

2017/9/24

 

 

1 awk指定多个分隔符-第二关题目... 4

1.1 a.现在需要从文件中过滤出“oldboy”和“31333741”字符串,请给出命令.4

1.1.1 方法1sed + sed. 4

1.1.2 方法2tr + awk. 4

1.1.3 方法3:使用awk命令的-F选项,-F选项可以指定输入分隔符,也可以同时使用多个符号作为分隔符对文件进行切割... 5

1.1.4 方法4:使用cut命令的-d选项指定分隔符进行切割以后再使用sed命令查找替换... 5

1.1.5 方法5:使用cut命令的-c选项对文件进行更精确的切割... 5

1.1.6 方法6:使用awk命令print选项中的substr参数打印出需要的内容... 5

1.2 b.如果需要从文件中过滤出“oldboy,31333741”字符串,请再给出命令.5

2打包压缩的方法 tarzip. 6

2.1 tar第二关练习题第十二题:/etc/目录为linux系统的默认的配置文件及服务启动命令的目录... 6

2.1.1 问题a:请用tar打包/etc整个目录(打包及压缩)... 6

2.1.2 问题c:请把a点命令的压缩包,解压到/tmp指定目录下(最好只用tar命令实现)。... 6

2.1.3 问题b:请用tar打包/etc整个目录(打包及压缩,但需要排除/etc/services文件)。... 6

2.1.4 扩展知识1:一条tar命令同时排除多个文件... 6

2.1.5 扩展知识2Linux中压缩和解压缩命令tar总结:... 7

2.2 Linux中使用zip压缩与解压缩... 8

3单引号,双引号,反引号的区别... 8

4 inodeblock. 8

4.1 inode. 10

4.1.1 磁盘被分区并格式化为ext4文件系统后会生成一定数量的inodeblock. 10

4.1.2 inode称为index node 索引(目录)节点,它的作用是存放文件的属性信息以及block的位置(指向文件的实体指针)... 10

4.1.3 特点:... 10

4.1.4 ls -i(看某些文件的inode号码)或者df -i(系统里面inode用了多少剩余多少)... 10

4.2 Block. 10

4.2.1 什么是block... 10

4.2.2 block特点:... 10

4.2.3 怎么查看,怎么使用... 10

5 no space left on device磁盘空间不足原因及排查方法... 11

5.1 block满导致磁盘空间不足,无法继续写入文件... 11

5.2 inode用光,但是df -h查看系统还有剩余的空间... 11

6软链接与硬链接的区别... 13

6.1 什么是软链接、硬链接?... 13

6.2 软链接与硬链接的区别:... 13

7 Linux文件删除原理... 14

8 /etc/passwdLinux用户分类... 15

8.1 /etc/passwd  存放用户的信息,包括密码,但是密码已经加密。... 15

8.2 Linux用户分类... 15

9 rwx还有权限计算... 16

9.1 关于Linux中的权限... 17

9.2 Linux文件属主和属组... 18

9.3 更改文件属性... 19

9.3.1 chgrp:更改文件属组... 19

9.3.2 chown:更改文件属主,也可以同时更改文件属组... 19

9.3.3 chmod:更改文件9个属性... 19

9.3.4 符号类型改变文件权限... 20

10附加file命令... 21





第1章 awk指定多个分隔符-第二关题目

如何从文件中过滤出需要的字符串

第二关第十三题:已知如下命令及结果:

[oldboy@test ~]$ mkdir /oldboy ; echo "I amoldboy,myqq is 31333741" >/oldboy/oldboy.txt
[oldboy@test ~]$ cat oldboy.txt
I am oldboy,myqq is 31333741

a.现在需要从文件中过滤出“oldboy”和“31333741”字符串,请给出命令.

b.如果需要从文件中过滤出“oldboy,31333741”字符串,请再给出命令.

1.1 a.现在需要从文件中过滤出“oldboy”和“31333741”字符串,请给出命令.

1.1.1 方法1sed + sed

[root@oldboyedu41-nb oldboy]# cat oldboy.txt
I am oldboy,myqq is 31333741
[root@oldboyedu41-nb oldboy]# sed ‘s#I am##g‘oldboy.txt
 oldboy,myqqis 31333741
[root@oldboyedu41-nb oldboy]# sed ‘s#I am ##g‘oldboy.txt
oldboy,myqq is 31333741
[root@oldboyedu41-nb oldboy]# sed ‘s#I am ##g‘oldboy.txt |sed ‘s#,myqq is##g‘
oldboy 31333741

1.1.2 方法2tr + awk

[root@oldboyedu41-nb oldboy]# tr ","" " <oldboy.txt
I am oldboy myqq is 31333741
[root@oldboyedu41-nb oldboy]# tr ","" " <oldboy.txt |awk ‘{print $3,$6}‘
oldboy 31333741

扩展知识:关于tr命令

1.1.3 方法3:使用awk命令的-F选项,-F选项可以指定输入分隔符,也可以同时使用多个符号作为分隔符对文件进行切割

[root@oldboyedu41-nb oldboy]# cat oldboy.txt
I am oldboy,myqq is 31333741
[root@oldboyedu41-nb oldboy]# #同时以,或空格为菜刀(分隔符)
[root@oldboyedu41-nb oldboy]# awk -F "[,]"  ‘{print $3,$6}‘ oldboy.txt
oldboy 31333741
[root@oldboyedu41-nb oldboy]# awk -F "[,]"  ‘{print $3,$NF}‘ oldboy.txt
oldboy 31333741

1.1.4 方法4:使用cut命令的-d选项指定分隔符进行切割以后再使用sed命令查找替换

[root@oldboyedu41-001 oldboy]# cut -d "" -f3,5 oldboy.txt |sed ‘s#,myqq##g‘
oldboy 31333741

##-d指定分隔符,-f选项取第几列,-f1取第一列,-f3,5取第三列和第五列,-f2-6取第二列开始到第六列结束。

#cut 阉割版的awk

1.1.5 方法5:使用cut命令的-c选项对文件进行更精确的切割

[root@oldboyedu41-001 oldboy]# cut -c6-11,20- oldboy.txt
oldboy 31333741

##使用-c切割后,取第6-11个字符和第20-28个字符。

1.1.6 方法6:使用awk命令print选项中的substr参数打印出需要的内容

[root@oldboyedu41-001 oldboy]# awk ‘{printsubstr($3,1,6),$5}‘ oldboy.txt
oldboy 31333741

##print选项中的substr参数可以精确的打印出$3(第三列),1(从第一个字符),6(到第六个字符)

 

1.2 b.如果需要从文件中过滤出“oldboy,31333741”字符串,请再给出命令.

[root@oldboyedu41-nb oldboy]# cat oldboy.txt
I am oldboy,myqq is 31333741
[root@oldboyedu41-nb oldboy]# awk -F"[,]"  ‘{print $3,$NF}‘ oldboy.txt
oldboy 31333741
[root@oldboyedu41-nb oldboy]# awk -F"[,]"  ‘{print $3","$NF}‘oldboy.txt
oldboy,31333741
[root@oldboyedu41-nb oldboy]# awk -F"[,]"  ‘{print$3"$$$$$$$"$NF}‘ oldboy.txt
oldboy$$$$$$$31333741
[root@oldboyedu41-nb oldboy]# awk -F"[,]"  ‘{print $3","$NF}‘oldboy.txt
oldboy,31333741

第2章 打包压缩的方法 tarzip

2.1 tar第二关练习题第十二题:/etc/目录为linux系统的默认的配置文件及服务启动命令的目录

2.1.1 问题a:请用tar打包/etc整个目录(打包及压缩)

[root@oldboyedu41-001 ~]# #tar zcvf 压缩包(筐)  苹果苹果 苹果
[root@oldboyedu41-001 ~]# tar zcvf/tmp/etc.tar.gz  /etc/

2.1.2 问题c:请把a点命令的压缩包,解压到/tmp指定目录下(最好只用tar命令实现)。

[root@oldboyedu41-001 /]# tar xf /tmp/etc.tar.gz-C /tmp/

2.1.3 问题b:请用tar打包/etc整个目录(打包及压缩,但需要排除/etc/services文件)。

[root@oldboyedu41-001 /]# tar zcf /tmp/etc-paichu.tar.gz/etc/ --exclude="/etc/services"
[root@oldboyedu41-001 /]# tar tf /tmp/etc-paichu.tar.gz|grep "services"
etc/init/readahead-disable-services.conf
[root@oldboyedu41-001 /]# tar tf /tmp/etc.tar.gz|grep "services"
etc/init/readahead-disable-services.conf
etc/services

2.1.4 扩展知识1:一条tar命令同时排除多个文件

tar压缩时如果需要排除多个文件,有两种方法:

1、需要排除的文件不多的话,可以直接用多个--exclude排除,中间用空格分隔即可。

[root@oldboyedu41-001 /]# tar zcf /tmp/etc3.tar.gz/etc/ --exclude=/etc/services --exclude=etc/init/readahead-disable-services.conf--exclude=directory2 --exclude=file2

2、需要排除的文件多的话,需要用到排除名单

list.txt(排除名单)

cat /tmp/list.txt

/etc/services

/etc/sysconfig/network

/etc/hosts

tar zcf /tmp/etc-paichu-multi.tar.gz /etc/  --exclude-from=/tmp/list.txt

 

2.1.5 扩展知识2Linux中压缩和解压缩命令tar总结:

1tar命令常用参数意义:

参数

意义

z

使用gzip压缩或解压缩

c

--create(创建),创建压缩文件

x

---extract(提取),解压缩文件

t

--list(列出),查看压缩文件

f

强制参数,表示使用文件,紧跟f后面的一定是空格+文件名

v

显示压缩或解压缩的过程,可看到文件一个接一个的被压缩或者解压缩。可不使用此参数,没什么用处。

-C

这个选项用在解压缩的时候,使用-C选项可以解压缩至特定目录下,而不是默认的当前目录下。

P

强制使用绝对路径

--exclude

压缩时排除某个文件

--exclude-from

压缩时排除某些文件,被排除的文件名放在某个txt文件中。

 

2、打包时尽量使用相对路径。因为如果压缩包里的文件或者文件夹都是绝对路径的话,很危险,有可能在解压缩的时候直接覆盖掉正在使用的文件。所以tar命令有一个机制,就是如果打包的时候使用的是绝对路径的话,tar会将绝对路径修改为相对路径。虽然使用-P参数可以强制使用绝对路径,但是不建议这样做。

 

2.2 Linux中使用zip压缩与解压缩

zip格式优点:linuxwindows默认都支持zip压缩格式

创建压缩包,-r表示递归压缩子目录下所有文件

[root@oldboyedu41-001 ~]# zip -r /tmp/ser.zip  /etc/services

解压缩:-d参数可以解压缩到指定目录下

[root@oldboyedu41-001 ~]# unzip /tmp/ser.zip -d/tmp/b/

第3章 单引号,双引号,反引号的区别

单引号:所见即所得,吃啥吐啥

[root@oldboyedu41-nb oldboy]# echo ‘$LANG$(hostname) `hostname`‘
$LANG $(hostname) `hostname`

双引号:类似单引号,会对特殊符号进行解析(运行)

[root@oldboyedu41-nb oldboy]# echo"$LANG $(hostname) `hostname`"
en_US.UTF-8 oldboyedu41-nb oldboyedu41-nb


反引号:先运行里面的内容 然后把显示到屏幕上的留下来

 

第4章 inodeblock

技术分享


例:

[root@oldboyedu41-001 ~]# ls -lhi /etc/hosts
259614 -rw-r--r--. 2 root root 158 Aug 28 16:20/etc/hosts

技术分享

第一列:inode索引节点编号(相当于身份证、家族住址,全国唯一)

系统读取文件时首先通过文件名找到inode号码,然后才能读取到文件内容。

第二列:文件类型及极限。

              第二列共11个字符,其中第一个字符为文件类型,随后的9个字符为文件的对应权限,最后一个字符点号"." 是和SELinux有关的一个标识。

第三列:硬链接个数(详细参看ln命令的讲解)

              相当于超市的多个入口,可以从不同的文件入口进入文件,还可以互为备份(消防通道)

第四列:文件或目录所属的用户 文件的所有者(属主)

Linux里面的文件和程序的存在必须要有用户和组满足生意人存在需求。

第五列:文件或目录所属的组(属组)

第六列:文件或目录的大小

第七、八、九列:文件或目录的修改时间,默认月日时分

第十列:实际的文件名或目录名,文件名不算文件的属性

 

4.1 inode

4.1.1 磁盘被分区并格式化为ext4文件系统后会生成一定数量的inodeblock

4.1.2 inode称为index node 索引(目录)节点,它的作用是存放文件的属性信息以及block的位置(指向文件的实体指针)

4.1.3 特点:

  1. ext3/ext4文件系统(centos 5.x/6.x 默认的文件系统)下,一个非空文件占用一个inode和至少一个block。

  2. inode节点号相同的文件,互为硬链接文件,可以认为是一个文件的不同入口。

  3. inode在某一个文件系统(分区),是唯一的。

4.1.4 ls -i(看某些文件的inode号码) 或者df -i(系统里面inode用了多少剩余多少)


4.2 Block

4.2.1 什么是block

block是用来存储实际数据的,每个block的大小一般有1k2k4k几种。其中引导分区等为1k,其它普通分区多为4k

4.2.2 block特点:

  1. 磁盘读取数据是按block为单位读取的

  2. 每读取一个block就会消耗一次磁盘I/O input/output 磁盘读写)

  3. 文件比较大,一个文件可能占用多个block

  4. 文件比较小,一个block剩余空间会被浪费,无论内容有多小

4.2.3 怎么查看,怎么使用

[root@oldboyedu41-001 ~]# dumpe2fs  /dev/sda3 |grep -i "block.size"
dumpe2fs 1.41.12 (17-May-2010)
Block size:               4096

 

df -h

ls -lh

 

第5章 no space left on device磁盘空间不足

原因及排查方法

磁盘空间满分为block占满和inode占满两种情况:

创建模拟环境

#input file 从哪里来

#output file 到哪里去

#bs 每次读取多少

#count 读取多少次

 

dd if=/dev/zero  of=/tmp/1m  bs=1M count=1

 

mkfs.ext4 /tmp/1m

 

mkdir -p  /app/logs

mount -o loop /tmp/1m  /app/logs

5.1 block满导致磁盘空间不足,无法继续写入文件

此情况比较常见,block占满即存储空间被占满,500G的硬盘空间写入500G的数据后即被占满。

解决方法:

通常先使用df -h命令查看磁盘空间占用情况,然后使用du -sh一层层查找大文件

[root@oldboyedu41-001 /]# du -sh /* |grep G
1.1G    /usr
[root@oldboyedu41-001 /]# du -sh /usr/* |grep G

最后删除无用的大文件即可。

NOTE:有一种特殊情况:文件被删除了或者说inode0了,但是空间仍然被占用未被释放。出现这种情况的原因是,虽然inode0了,但是该文件仍被某个进程占用,进程数不为0。此时该文件仍然存在于磁盘中,换句话说该文件仍然在起系统中起作用,故此文件不会释放占用的磁盘空间,但是当进程重启时,该文件会释放。常见于ApacheTomcat/etc/messages等。

 

5.2 inode用光,但是df -h查看系统还有剩余的空间

此情况较少见,一般是由于系统生产大量的小文件导致inode被用光。Linux中的定量任务有可能会造成此种情况。

[root@oldboyedu41-nb logs]# touch {1..118}.txt
[root@oldboyedu41-nb logs]# touch {1..118}.txt
touch: cannot touch `118.txt‘: No space left ondevice
[root@oldboyedu41-nb logs]# df -h
Filesystem     Size  Used Avail Use% Mounted on
/dev/sda3       8.8G 1.5G  6.9G  18% /
tmpfs          931M     0  931M  0% /dev/shm
/dev/sda1      190M   40M  141M 22% /boot
/tmp/1m       1003K   19K  933K  2% /app/logs
[root@oldboyedu41-nb logs]# touch oldboy.txt
touch: cannot touch `oldboy.txt‘: No space left ondevice
[root@oldboyedu41-nb logs]# df -i
Filesystem    Inodes IUsed  IFree IUse% Mountedon
/dev/sda3     593344 56998 536346   10% /
tmpfs         238282     1 238281    1% /dev/shm
/dev/sda1      51200    39  51161   1% /boot
/tmp/1m          128   128     0  100% /app/logs
[root@oldboyedu41-nb logs]# pwd
/app/logs
[root@oldboyedu41-nb logs]# \rm -f *.txt
[root@oldboyedu41-nb logs]# df -i
Filesystem    Inodes IUsed  IFree IUse% Mountedon
/dev/sda3     593344 56998 536346   10% /
tmpfs          238282     1 238281   1% /dev/shm
/dev/sda1      51200    39  51161   1% /boot
/tmp/1m          128    11    117   9% /app/logs

解决方法:

一般正常情况下,目录的大小为4096,也就是4k,但是如果该目录下文件特别多的话,目录的大小就会增大,所以可以通过查找大目录的方法,找到那些存在大量文件的目录,然后找出那些无用的小文件,确认可以删除后删除掉。

[root@oldboyedu41-001 /]# find / -type d -size +100k
/usr/share/man/man3

 

第6章 软链接与硬链接的区别

6.1 什么是软链接、硬链接?

【软链接】

另外一种连接称之为符号连接(SymbolicLink),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

 

ln -s 创建软链接

[root@oldboyedu41-001 tmp]# ln -s/tmp/linktest.txt /tmp/b/l.txt.soft
[root@oldboyedu41-001 tmp]# #ln -s 源文件 软链接

 

【硬链接】

硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

 

 

6.2 软链接与硬链接的区别:

硬链接文件有两个限制

1、不允许给目录创建硬链接;

2、只有在同一文件系统中的文件之间才能创建链接,而且只有超级用户才有建立硬链接权限。

软链接没有硬链接以上的两个限制,因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。但是软链接的缺点在于:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

 

区别总结:

区别

软链接

硬链接

能否给目录创建链接

可以

不能

是否必须在同一文件系统(分区)中

inode

另外生产一个与源文件不同的inode

与源文件使用同一个inode

权限

软链接本身显示为777,但具体权限与源文件相同

与源文件相同

源文件删除后

删除源文件后,软链接亦不可用

删除源文件后,硬链接仍然可用

源文件移动(改变路径)后

软链接不可用

硬链接不受影响,仍然可用

文件类型

l(小写L),Link,文件类型为链接

-(普通文件)

创建方法

ln -s

ln

 

 

 

第7章 Linux文件删除原理

彻底删除一个文件需要同时满足以下两个条件:

1. 硬链接数为零——rm 删除源文件及所有硬链接

2. 进程调用数为零——把对应的进程/服务 重启

例如:删除/etc/messages后,该文件仍被rsyslogd进程占用,故该文件所占用的磁盘空间不会被释放。

删除messages文件所有的硬链接后,还要重启rsyslogd进程,

[root@oldboyedu41-001 ~]#/etc/init.d/rsyslog restart

 

扩展知识1:硬链接数为零 进程调用数不为零 如何找到这样的文件

[root@oldboyedu41-nb ~]# lsof |grep deleted
rsyslogd  1250      root    1w     REG                8,3 4888889358     140789 /var/log/messages (deleted)

 

扩展知识2:如何找出文件的其他硬链接(另外一个入口),即:找出inode号码相同的文件

[root@oldboyedu41-001 etc]# ls -i /etc/hosts
259614 /etc/hosts
[root@oldboyedu41-001 etc]# find / -type f -inum259614
/etc/hosts
/etc/sysconfig/networking/profiles/default/hosts
find: `/proc/1728/task/1728/fdinfo/5‘: No suchfile or directory
find: `/proc/1728/fdinfo/5‘: No such file ordirectory

第8章 /etc/passwdLinux用户分类

8.1 /etc/passwd  存放用户的信息,包括密码,但是密码已经加密。

第一列用户名字,第二列密码,最后一列用户使用的命令解释器(shell

 

/etc/shadow #存放密码信息

/etc/group  #存放用户组信息

/etc/gshadow #用户组密码信息

 

8.2 Linux用户分类

1.root用户   皇帝           0      

2.傀儡用户(虚拟用户)    1-499    满足linux里面运行的程序 都要有一个对应的用户

无法使用                           无法切换到这个用户

3.普通用户  贫民百姓      500+      所以新创建的用户UID都是从500开始

UID user  id 用户的id号码身份证号码

GID group id 用户组id号码 户口本上面的号码

 

 

 

第9章 rwx还有权限计算

权限分类:

r      read                     读取 查看文件内容 

w    write               

x     execute         执行运行 命令/脚本

-   没有权限

 

对于文件来说-用户分类

主人 家人  陌生人  

rw- r--   r--

r      4

w    2

x     1

-      0

 

rwx        r-x          r-x

421        401        401

7            5            5

   

[root@oldboyedu41-nb ~]# ll -d /etc/hosts/bin/ls  /etc/

-rwxr-xr-x. 1 root root 117048 Mar 23  2017/bin/ls 

 7 5  5

drwxr-xr-x. 78 root root   4096 Sep 24 06:03 /etc/

 7 5  5

-rw-r--r--. 2 root root    181 Sep 10 20:18/etc/hosts

 420400400

 6 4  4

 

[root@oldboyedu41-nb ~]# ll /bin/ls /etc/init.d/iptables 
-rwxr-xr-x. 1 root root 117048 Mar 23  2017 /bin/ls
-rwxr-xr-x. 1 root root  11048 Jul 24 2015 /etc/init.d/iptables
[root@oldboyedu41-nb ~]# file  /bin/ls /etc/init.d/iptables 
/bin/ls:              ELF 64-bit LSB executable,x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux2.6.18, stripped
/etc/init.d/iptables: POSIX shell script text executable

 

9.1 关于Linux中的权限

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:

[root@oldboyedu41-001/]# ls-l
total 64
dr-xr-xr-x   2 root root 4096Dec142012 bin
dr-xr-xr-x   4 root root 4096Apr192012 boot
……

实例中,bin文件的第一个属性用"d"表示。"d"Linux中代表该文件是一个目录文件。

Linux中第一个字符代表这个文件是目录、文件或链接文件等等。

  • 当为[ d ]则是目录

  • 当为[ - ]则是文件;

  • 若是[ l ]则表示为链接文档(link     file)

  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置)

  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)

接下来的字符中,以三个为一组,且均为『rwx的三个参数的组合。其中,[ r ]代表可读(read)[ w ]代表可写(write)[ x ]代表可执行(execute)要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

每个文件的属性由左边第一部分的10个字符来确定(如下图)。

 技术分享

从左至右用0-9这些数字来表示。

0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。

4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。

 

其中,第147位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;

258位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限;第369位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。


9.2 Linux文件属主和属组

[root@oldboyedu41-001/]# ls-l
total 64
dr-xr-xr-x   2 root root 4096Dec142012 bin
dr-xr-xr-x   4 root root 4096Apr192012 boot
……

对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。

同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。

文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。

因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。

在以上实例中,bin文件是一个目录文件,属主和属组都为root,属主有可读、可写、可执行的权限;与属主同组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限。

9.3 更改文件属性

9.3.1 chgrp:更改文件属组

语法:

chgrp [-R]属组名文件名

参数选项

  • -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

9.3.2 chown:更改文件属主,也可以同时更改文件属组

语法:

chown [–R]属主名文件名
chown [-R]属主名:属组名文件名

进入 /root 目录(~)将install.log的拥有者改为bin这个账号:

[root@oldboyedu41-001~]# cd~
[root@oldboyedu41-001~]#chown bin install.log
[root@oldboyedu41-001~]# ls-l
-rw-r--r--1 bin  users 68495Jun2508:53 install.log


install.log的拥有者与群组改回为root

[root@oldboyedu41-001~]#chown root:rootinstall.log
[root@oldboyedu41-001~]# ls-l
-rw-r--r--1 root root 68495Jun2508:53 install.log


9.3.3 chmod:更改文件9个属性

Linux文件属性有两种设置方法,一种是数字,一种是符号。

Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。

先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』,这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

  • r:4

  • w:2

  • x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx---] 分数则是:

  • owner = rwx = 4+2+1 = 7

  • group = rwx = 4+2+1 = 7

  • others= --- = 0+0+0 = 0

所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:

 chmod [-R] xyz 文件或目录

选项与参数:

  • xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。

  • -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

举例来说,如果要将.bashrc这个文件所有的权限都设定启用,那么命令如下:

[root@oldboyedu41-001~]# ls-al .bashrc
-rw-r--r--1 root root 395Jul411:45.bashrc
[root@oldboyedu41-001~]#chmod 777 .bashrc
[root@oldboyedu41-001~]# ls-al .bashrc
-rwxrwxrwx  1 root root 395Jul411:45.bashrc


那如果要将权限变成 -rwxr-xr-- 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754

9.3.4 符号类型改变文件权限

还有一个改变权限的方法呦!从之前的介绍中我们可以发现,基本上就九个权限分别是(1)user (2)group (3)others三种身份啦!那么我们就可以藉由u, g, o来代表三种身份的权限!

此外, a 则代表 all 亦即全部的身份!那么读写的权限就可以写成r, w, x!也就是可以使用底下的方式来看:

chmod

u
 g
 o
 a

+(加入)
 -(
除去)
 =(
设定)

r
 w
 x

文件或目录

 

如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:

[root@oldboyedu41-001~]# ls-al .bashrc
-rwxr-xr-x  1 root root 395Jul411:45.bashrc
[root@oldboyedu41-001~]#chmod  a+w  .bashrc
[root@oldboyedu41-001~]# ls-al .bashrc
-rwxrwxrwx  1 root root 395Jul411:45.bashrc


而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:

[root@oldboyedu41-001~]#chmod  a-x  .bashrc
[root@oldboyedu41-001~]# ls-al .bashrc
-rw-rw-rw-1 root root 395Jul411:45.bashrc


 

 

第10章 附加file命令

[root@oldboyedu41-001 tmp]# file name.txt
name.txt: ASCII text
[root@oldboyedu41-001 tmp]# file game.sh
game.sh: Bourne-Again shell script text executable
[root@oldboyedu41-001 tmp]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64,version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18,stripped
[root@oldboyedu41-001 tmp]# #executable execute 可执行文件命令
[root@oldboyedu41-001 tmp]# file ser.zip
ser.zip: Zip archive data, at least v2.0 toextract
[root@oldboyedu41-nb ~]# #数据文件-需要使用专用的命令查看

本文出自 “老潘Linux” 博客,请务必保留此出处http://oldpan.blog.51cto.com/1603893/1972036

老男孩Linux运维第41期20170924开班第五周学习重点课堂记录

标签:老男孩linux运维   课堂知识记录   

原文地址:http://oldpan.blog.51cto.com/1603893/1972036

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!