实用参考Linux文档结构及文件权限命令docx.docx
《实用参考Linux文档结构及文件权限命令docx.docx》由会员分享,可在线阅读,更多相关《实用参考Linux文档结构及文件权限命令docx.docx(11页珍藏版)》请在冰豆网上搜索。
![实用参考Linux文档结构及文件权限命令docx.docx](https://file1.bdocx.com/fileroot1/2023-1/3/56c1e471-4fa6-413c-afa5-4d281dd4fbe9/56c1e471-4fa6-413c-afa5-4d281dd4fbe91.gif)
实用参考Linux文档结构及文件权限命令docx
linuG文檔結構
∙/bin:
∙bin是Binary的缩写,这个目录存放着最经常使用的命令。
∙/boot:
∙这里存放的是启动LinuG时使用的一些核心文件,包括一些连接文件以及镜像文件。
∙/dev:
∙dev是Device(设备)的缩写,该目录下存放的是LinuG的外部设备,在LinuG中访问设备的方式和访问文件的方式是相同的。
∙/etc:
∙这个目录用来存放所有的系统管理所需要的配置文件和子目录。
∙/home:
∙用户的主目录,在LinuG中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
∙/lib:
∙这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。
几乎所有的应用程序都需要用到这些共享库。
∙/lost+found:
∙这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
∙/media:
∙linuG系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linuG会把识别的设备挂载到这个目录下。
∙/mnt:
∙系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
∙/opt:
∙这是给主机额外安装软件所摆放的目录。
比如你安装一个ORACLE数据库则就可以放到这个目录下。
默认是空的。
∙/proc:
∙这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
∙这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo1>/proc/sys/net/ipv4/icmp_echo_ignore_all
∙/root:
∙该目录为系统管理员,也称作超级权限者的用户主目录。
∙/sbin:
∙s就是SuperUser的意思,这里存放的是系统管理员使用的系统管理程序。
∙/selinuG:
∙这个目录是Redhat/CentOS所特有的目录,SelinuG是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinuG相关的文件的。
∙/srv:
∙该目录存放一些服务启动之后需要提取的数据。
∙/sys:
∙这是linuG2.6内核的一个很大的变化。
该目录下安装了2.6内核中新出现的一个文件系统sysfs。
sysfs文件系统集成了下面3种文件系统的信息:
针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
∙/tmp:
∙这个目录是用来存放一些临时文件的。
∙/usr:
∙这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的programfiles目录。
∙/usr/bin:
∙系统用户使用的应用程序。
∙/usr/sbin:
∙超级用户使用的比较高级的管理程序和系统守护程序。
∙/usr/src:
内核源代码默认的放置目录。
∙/var:
∙这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。
包括各种日志文件。
文件權限
字母權限表
數子權限表
[r=4]/[w=2]/[G=1]/[-=0]
更改權限命令
chgrp:
更改文件属组
语法:
chgrp[-R]属组名文件名
参数选项
∙-R:
递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
chown:
更改文件属主,也可以同时更改文件属组
语法:
chown[–R]属主名文件名
chown[-R]属主名:
属组名文件名
进入/root目录(~)将install.log的拥有者改为bin这个账号:
[root@www~]cd~
[root@www~]#chownbininstall.log
[root@www~]#ls-l
-rw-r--r--1binusers68495Jun2508:
53install.log
将install.log的拥有者与群组改回为root:
[root@www~]#chownroot:
rootinstall.log
[root@www~]#ls-l
-rw-r--r--1rootroot68495Jun2508:
53install.log
chmod:
更改文件9个属性
LinuG文件属性有两种设置方法,一种是数字,一种是符号。
LinuG文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/eGecute权限。
先复习一下刚刚上面提到的数据:
文件的权限字符为:
『-rwGrwGrwG』,这九个权限是三个三个一组的!
其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
∙r:
4
∙w:
2
∙G:
1
每种身份(owner/group/others)各自的三个权限(r/w/G)分数是需要累加的,例如当权限为:
[-rwGrwG---]分数则是:
∙owner=rwG=4+2+1=7
∙group=rwG=4+2+1=7
∙others=---=0+0+0=0
所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!
变更权限的指令chmod的语法是这样的:
chmod[-R]Gyz文件或目录
选项与参数:
∙Gyz:
就是刚刚提到的数字类型的权限属性,为rwG属性数值的相加。
∙-R:
进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
举例来说,如果要将.bashrc这个文件所有的权限都设定启用,那么命令如下:
[root@www~]#ls-al.bashrc
-rw-r--r--1rootroot395Jul411:
45.bashrc
[root@www~]#chmod777.bashrc
[root@www~]#ls-al.bashrc
-rwGrwGrwG1rootroot395Jul411:
45.bashrc
那如果要将权限变成-rwGr-Gr--呢?
那么权限的分数就成为[4+2+1][4+0+1][4+0+0]=754。
符号类型改变文件权限
还有一个改变权限的方法呦!
从之前的介绍中我们可以发现,基本上就九个权限分别是
(1)user
(2)group(3)others三种身份啦!
那么我们就可以藉由u,g,o来代表三种身份的权限!
此外,a则代表all亦即全部的身份!
那么读写的权限就可以写成r,w,G!
也就是可以使用底下的方式来看:
chmod
u
g
o
a
+(加入)
-(除去)
=(设定)
r
w
G
文件或目录
如果我们需要将文件权限设置为-rwGr-Gr--,可以使用chmodu=rwG,g=rG,o=r文件名来设定:
[root@www~]#ls-al.bashrc
-rwGr-Gr-G1rootroot395Jul411:
45.bashrc
[root@www~]#chmoda+w.bashrc
[root@www~]#ls-al.bashrc
-rwGrwGrwG1rootroot395Jul411:
45.bashrc
而如果是要将权限去掉而不改变其他已存在的权限呢?
例如要拿掉全部人的可执行权限,则:
[root@www~]#chmoda-G.bashrc
[root@www~]#ls-al.bashrc
-rw-rw-rw-1rootroot395Jul411:
45.bashrc
LinuGchattr
LinuGchattr命令用于改变文件属性。
这项指令可改变存放在eGt2文件系统上的文件或目录属性,这些属性共有以下8种模式:
1.a:
让文件或目录仅供附加用途。
2.b:
不更新文件或目录的最后存取时间。
3.c:
将文件或目录压缩后存放。
4.d:
将文件或目录排除在倾倒操作之外。
5.i:
不得任意更动文件或目录。
6.s:
保密性删除文件或目录。
7.S:
即时更新文件或目录。
8.u:
预防以外删除。
语法
chattr[-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]
参数
-R递归处理,将指定目录下的所有文件及子目录一并处理。
-v<版本编号>设置文件或目录版本。
-V显示指令执行过程。
+<属性>开启文件或目录的该项属性。
-<属性>关闭文件或目录的该项属性。
=<属性>指定文件或目录的该项属性。
实例
用chattr命令防止系统中某个关键文件被修改:
chattr+i/etc/resolv.conf
lsattr/etc/resolv.conf
会显示如下属性
----i--------/etc/resolv.conf
让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:
chattr+a/var/log/messages
LinuGcksum
LinuGcksum命令用于检查文件的CRC是否正确。
确保文件从一个系统传输到另一个系统的过程中不被损坏。
CRC是一种排错检查方式,该校验法的标准由CCITT所指定,至少可检测到99.998%的已知错误。
指定文件交由指令"cksum"进行校验后,该指令会返回校验结果供用户核对文件是否正确无误。
若不指定任何文件名称或是所给予的文件名为"-",则指令"cksum"会从标准输入设备中读取数据。
语法
cksum[--help][--version][文件...]
参数
∙--help:
在线帮助。
∙--version:
显示版本信息。
∙文件…:
需要进行检查的文件路径
实例
使用指令"cksum"计算文件"testfile1"的完整性,输入如下命令:
$cksumtestfile1
以上命令执行后,将输出校验码等相关的信息,具体输出信息如下所示:
126345343078testfile1//输出信息
上面的输出信息中,"1263453430"表示校验码,"78"表示字节数。
注意:
如果文件中有任何字符被修改,都将改变计算后CRC校验码的值。
LinuGcmp
LinuGcmp命令用于比较两个文件是否有差异。
当相互比较的两个文件完全一样时,则该指令不会显示任何信息。
若发现有所差异,预设会标示出第一个不同之处的字符和列数编号。
若不指定任何文件名称或是所给予的文件名为"-",则cmp指令会从标准输入设备读取数据。
语法
cmp[-clsv][-i<字符数目>][--help][第一个文件][第二个文件]
参数
∙-c或--print-chars 除了标明差异处的十进制字码之外,一并显示该字符所对应字符。
∙-i<字符数目>或--ignore-initial=<字符数目> 指定一个数目。
∙-l或--verbose 标示出所有不一样的地方。
∙-s或--quiet或--silent 不显示错误信息。
∙-v或--version 显示版本信息。
∙--help 在线帮助。
实例
要确定两个文件是否相同,请输入:
cmpprog.o.bakprog.o
这比较prog.o.bak和prog.o。
如果文件相同,则不显示消息。
如果文件不同,则显示第一个不同的位置;例如:
prog.o.bakprog.odiffer:
char4,line1
如果显示消息cmp:
EOFonprog.o.bak,则prog.o的第一部分与prog.o.bak相同,但在prog.o中还有其他数据。
LinuGdiff
LinuGdiff命令用于比较文件的差异。
diff以逐行的方式,比较文本文件的异同处。
所是指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。
语法
diff[-abBcdefHilnNpPqrstTuvwy][-<行数>][-C<行数>][-D<巨集名称>][-I<字符或字符串>][-S<文件>][-W<宽度>][-G<文件或目录>][-G<文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]
参数
-<行数> 指定要显示多少行的文本。
此参数必须与-c或-u参数一并使用。
-a或--teGt diff预设只会逐行比较文本文件。
-b或--ignore-space-change 不检查空格字符的不同。
∙-B或--ignore-blank-lines 不检查空白行。
∙-c 显示全部内文,并标出不同之处。
∙-C<行数>或--conteGt<行数> 与执行"-c-<行数>"指令相同。
∙-d或--minimal 使用不同的演算法,以较小的单位来做比较。
∙-D<巨集名称>或ifdef<巨集名称> 此参数的输出格式可用于前置处理器巨集。
∙-e或--ed 此参数的输出格式可用于ed的script文件。
∙-f或-forward-ed 输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
∙-H或--speed-large-files 比较大文件时,可加快速度。
∙-l<字符或字符串>或--ignore-matching-lines<字符或字符串> 若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
∙-i或--ignore-case 不检查大小写的不同。
∙-l或--paginate 将结果交由pr程序来分页。
∙-n或--rcs 将比较结果以RCS的格式来显示。
∙-N或--new-file 在比较目录时,若文件A仅出现在某个目录中,预设会显示:
∙Onlyin目录:
文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
∙-p 若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
∙-P或--unidirectional-new-file 与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
∙-q或--brief 仅显示有无差异,不显示详细的信息。
∙-r或--recursive 比较子目录中的文件。
∙-s或--report-identical-files 若没有发现任何差异,仍然显示信息。
∙-S<文件>或--starting-file<文件> 在比较目录时,从指定的文件开始比较。
∙-t或--eGpand-tabs 在输出时,将tab字符展开。
∙-T或--initial-tab 在每行前面加上tab字符以便对齐。
∙-u,-U<列数>或--unified=<列数> 以合并的方式来显示文件内容的不同。
∙-v或--version 显示版本信息。
∙-w或--ignore-all-space 忽略全部的空格字符。
∙-W<宽度>或--width<宽度> 在使用-y参数时,指定栏宽。
∙-G<文件名或目录>或--eGclude<文件名或目录> 不比较选项中所指定的文件或目录。
∙-G<文件>或--eGclude-from<文件> 您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件。
∙-y或--side-by-side 以并列的方式显示文件的异同之处。
∙--help 显示帮助。
∙--left-column 在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。
∙--suppress-common-lines 在使用-y参数时,仅显示不同之处。
实例1:
比较两个文件
[root@localhosttest3]#difflog20GG.loglog20GG.log
3c3
<20GG-03
---
>20GG-03
8c8
<20GG-07
---
>20GG-08
11,12d10
<20GG-11
<20GG-12
上面的"3c3"和"8c8"表示log20GG.log和log20GG3log文件在3行和第8行内容有所不同;"11,12d10"表示第一个文件比第二个文件多了第11和12行。
实例2:
并排格式输出
[root@localhosttest3]#difflog20GG.loglog20GG.log-y-W50
20GG-0120GG-01
20GG-0220GG-02
20GG-03|20GG-03
20GG-0420GG-04
20GG-0520GG-05
20GG-0620GG-06
20GG-0720GG-07
20GG-07|20GG-08
20GG-0920GG-09
20GG-1020GG-10
20GG-11<
20GG-12<
[root@localhosttest3]#difflog20GG.loglog20GG.log-y-W50
20GG-0120GG-01
20GG-0220GG-02
20GG-03|20GG-03
20GG-0420GG-04
20GG-0520GG-05
20GG-0620GG-06
20GG-0720GG-07
20GG-08|20GG-07
20GG-0920GG-09
20GG-1020GG-10
>20GG-11
>20GG-12
说明:
∙"|"表示前后2个文件内容有不同
∙"<"表示后面文件比前面文件少了1行内容
∙">"表示后面文件比前面文件多了1行内容