首页 > 代码库 > Linux学习之路(2-1)文件、目录与磁盘格式

Linux学习之路(2-1)文件、目录与磁盘格式

第一章 Linux的文件权限与目录配置

Linux中的大小写是不一样的。

一、用户与用户组

1、文件所有者(own):功能:安全防护

2、用户组(group):每个账号都可以有多个用户组的支持

3、其他人(other

默认情况下,所有的系统上的账号与一般身份用户,还有root的相关信息,都记录在/etc/passwd这个文件内

个人的密码都记录在etc/shadow这个文件下。所有的组名都记录在/etc/group内。

二、Linux文件权限

1Linux文件属性。查看属性命令:ls -alls——list

1r4):可读;w2):可写;x1):可执行

d:目录;-:文件;l:链接文件;b:设备文件里的可供存储的接口设备;c:文件设备里的串行端口设备。

文件名:文件名前面有个 ‘.’ 就表示隐藏文件

目录:’/’表示根目录, ‘./’ 表示当前目录,‘../’ 表示当前目录的上一级目录 ‘~’表示当前用户主目录(~就等于/home/herui

2)查看隐藏文件命令:ls -a

eg

d r w x r - x- - -   4     root    root       4096       Sep  8  14 :06        .

- r w - r - - -r - -   1     root    root       5661       Sep  8  14:06        install.log

权限          链接  所有者  用户组   文件容量(B)  修改日期(mtime)    文件名

注意:other如果没有x权限,是不能进入目录的

三、改变文件属性与权限

cp 复制

eg cp 目录/源文件 目录/目标文件

cd 进入目录

eg cd 目录

1chgrp:改变文件所属用户组(change group

1)要被改变的组名必须要在/etc/group文件内才行

2)用法:

chgrp users install.log ——把intall.log文件属性组改为users

chgrp -R users /etc/install.log——-R是进行递归的持续更改

2chown:改变文件所有者(change owner

chown daihong install.log

chown root:root install.log(用户名和用户组一起修改)

如果要递归的持续删除,那么应该加-R

3chmod:改变文件的权限

chmod 777 .bashrc

chmod u=[+-]rwx go=rx .bashrc

如果要递归的持续删除,那么应该加-R

x:在目录当中是与“能否进入该目录”有关

w:让用户删除,更新,新建文件或目录

四、Linux文件种类与扩展名

1、文件种类

目录:ddirectory)、链接文件:llink)、普通文件:-、块设备文件:bblock)、字符设备文件:cchar

套接字:ssockets)、管道(FIFO):ppipe

2、文件长度

单一文件或目录的最大容许文件名为255个字符;完整路径名称长度为4096个字符

五、Linux目录配置

1Linux目录配置标准:FHS

FHSFilesystem Hierarchy Standard):希望让用户可以了解已安装软件通常放置在哪个目录下,并且规范每个特定的目录下应该放什么样子的数据。

 

可分享的

不可分享的

不变的

/usr(软件放置处)

/etc(配置文件)

/opt(第三方软件)

/boot(开机与内核文件)

可变的

/var/mail(用户邮件信箱)

/var/run(程序相关)

/var/spool/news(新闻组)

/var/lock(程序相关)

/(根目录):与开机系统有关

/usrUNIX software resource):与软件安装/执行有关

/varvariable):与系统运作过程有关(主要针对常态性变动的文件,包括cache缓存等)

2、绝对路径和相对路径

绝对路径:以/开头

相对路径:以’.’或’..’开头(‘.’表示当前目录,’..’表示上一层目录)

第二章 Linux文件与目录管理

一、目录与路径

1、目录的相关操作

‘.’:代表此层目录

’..’:代表上一层目录

’-’:代表上一个目录

’~’:代表‘当前用户’所在的主目录

’~account’:代表account这个用户的主目录

1cd 切换目录

用法:cd 路径 

cd ..——进入上一层目录, cd(或者cd ~)进入当前用户主目录, cd -——进入刚才那个目录, cd ../mqueue

2pwd 显示当前目录

用法:pwd [-P]

P后的作用是显示目录的完整路径,而不是以链接文件的数据显示

3mkdir 创建目录

用法:mkdir [-mp] 目录

-m:能设置权限,不用默认的(umask

-p:能递归

4rmdir 删除目录(目录需要一层一层地删除,而且被删除的目录里面必定不能存在其他的目录或者文件)

用法:rmdir [-p] 目录

-p:连同上层“空的”目录也一起删除

2、执行文件路径的变量:$PATH

1echo有显示、打印出的意思

显示PATH里面的路劲:echo $PATH,显示出来的不同路径用’:’分开,并且有顺序之分

不用用户的PATH有可能不尽相同

2)添加PATH

PATH=”$PATH”:路径

二、文件与目录管理

1、查看文件与目录:ls

常用的用法:ls [-adl] 目录

-a:全部文件,包括隐藏文件(‘.’开头)

-d:仅列出目录本身,不列出目录内的文件数据

-l:列出详细信息

2、复制、删除与移动:cprmmv

1cp 复制

常用用法:cp [-aipru] 目录/源文件 目录/目标文件

-a:相当于-pdr-i:(互动模式)若目标文件存在,先询问;-p:把文件的本身属性一同复制,不用umask属性

-u:若目标文件比源文件旧才更新目标文件

2rm 删除

用法:rm [-fir] 文件或目录

-f:(force)忽略不存在的文件,不会出现警告;-i:互动模式;-r:递归删除

*:通配符,代表0到无穷多个任意字符

3mv 移动文件或目录或改名

mv [-fiu] 目录/源文件 目录/目标文件

4、取得路劲的文件名与目录名称

比如一个路径,我们要确定最后那个是文件还是目录?

basename:路径(获取最后的文件名)

dirname:路径(获取目录名)

三、文件内容查阅

1catconcatenate

常用用法 cat [-Abn] 目录/文件

-A可列出一些特殊字符;-b:列出行号,空白行不标号;-n:列出行号,空白行也标号

cat是从第一行到最后一行,那么tac就是从最后一行到第一行

2nl 添加行号打印

3、可翻页查看

1more 目录/文件

说明:q退出,空格为下翻一页,b[ctral+b]代表往回翻页,但对管道文件无用。回车代表向下滚动一行

‘/字符串’代表向下查询字符串

2less 一页一页翻动(操作与man page类似)

3head 取出前面几行(默认情况是10行)

head [-n number] 目录/文件

4tail 取出后面几行(默认情况是10行)

tail [-n number] 目录/文件

4、非纯文本文件:od

用法:od [-t TYPE] 目录/文件

TYPE可为:a(默认的字符输出)cASCII字符输出)d[size](十进制,每个整数占用size bytesf[size](浮点数,每个整数占用size byteso[size](八进制,每个整数占用size bytesx[size](十六进制,每个整数占用size bytes

5、创建新文件修改文件时间 touch

touch [-acdmt] 文件

-a:仅修改访问时间;-c仅修改文件的时间,若文件不存在则不创建

-m:仅修改mtime-t后面接[YYMMDDhhmm]

三个时间:

1mtimemodification time):文件内容修改时间

2ctimestatus time):权限与属性修改时间

3atimeaccess time):文件被取用的时间,如moreless等命令

注:ls命令出来的文件时间是mtime

注:两个连续的命令之间用 ’;’ 分开

四、文件与目录的默认权限与隐藏权限

LinuxExt2/Ext3文件系统下,我们还可以设置其他的系统隐藏属性,可用chattr来设置,用lsattr来查看

1、文件默认权限 umask

文件:-rw-rw-rw

目录:drwxrwxrwx

umask的分数指的是——该默认值需要去掉的权限

设置umaskumask number3位)

egumask 003,那么新建的文件与目录权限就为:

文件:(-rw-rw-rw-- - - - - - -wx= -rw-rw-r--

目录:(drwxrwxrwx-- - - - - - -wx= drwxrwxr--

2chattr(设置文件的隐藏属性)

用法:chattr [+-=] [ai文件或者目录

a:设置a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性

i:让一个文件“不能删除、改名,设置连接也无法写入或添加数据”

3、文件特殊权限:SUIDSGIDSBIT

SUIDSetUID):4——执行者将具有改程序所有者的权限(只对二进制程序、文件有效)

SGIDSetGID):2——执行者在执行过程中会获得该程序用户组的支持(可以对文件或目录)

SBITSticky Bit):1——仅自己与root才有权利删除新建的文件(只对目录)

怎么来识别呢?

SUID:放到文件user权限的x位置;SGID:放到文件group权限的x位置;SBIT:放到文件others权限的x位置

注意:ST表示空,因为当文件或目录本身都没有x属性时,自然其他执行者也没有权限,所以为空。

4、查看文件类型:file——查看某个文件的基本数据

用法:file 文件

五、命令与文件的查询

1、脚本文件名的查询

which 寻找“执行文件”

用法:which [-a] 命令

-a:是在找到PATH中所有满足的命令,whichPATH中去找。

2、文件名的查找

whereislocatefindwhereislocate快于find因为前者是利用数据库来查询的,find会直接去查找硬盘。

1whereis [-bmsu] 文件名或目录名

-b:只找二进制格式的文件;-m:只找在说明文件manual路径下的文件

-s:只找source源文件;-u:除上述三种选项中的其他特殊文件

2locate [-ir] keyword

-i:忽略大小写的差异;-r:后面可接正则表达式的显示方式

注意:locate寻找的数据在/var/lib/mlocate里面的数据所查找到的。手动更新命令:updatedb

3find [PATH] [option] [action]

-mtime nn为数字,n天前的“一天之内”(0表示目前的时间)

-mtime +nn天前,不含第n

-mtime -n:第n天前到现在

-newer filefile是一个已经存在的文件,列出比file还要新的文件

file /home/herui -mtime -3 表示查询小于等于3天内的文件名

还可以根据-user-name-size(大小),-type(类型),perm mode(权限)等来查找

eg:找到系统中大于1M的文件:find / -size 1024k

其他查找:-exec command

eg:找出文件当中含所有SGIDSUIDSBIT的属性,并用ls -l列出来

find / -perm +7000 -exec ls -l {} \;

{}:把find / -perm +7000的内容放到里面

-exec\;:表示命令的开始和结束的地方,因为’;’在bash环境下是有特殊意义的,因此利用反斜杠来转义

Linux学习之路(2-1)文件、目录与磁盘格式