Linux文件与目录

一、Linux文件权限

1. Linux文件属性

1.1 第一部分为文件的类型与权限:

  • 第一个字符为文件类型:[d]表示目录、[-]表示文件、[l]表示链接文件、[b]表示设备文件里面的可供存储的周边设备、[c]表示设备文件里的序列埠设备;

  • 后面的字符三个为一组,第一组为文件拥有者可具备的权限,第二组为加入此群组的账号的权限,第三组为非本人且没有加入本群组的其他账号的权限,每一组的第一个字符表示是否可读[r],每一组的第二个字符表示是否可写[w],每一组的第三个字符表示是否可执行[x];

1.2 第二部分表示有多少文件名链接到此节点;

1.3 第三部分表示这个文件或目录的拥有者账号;

1.4 第四部分表示这个文件的所属群组;

1.5 第五部分表示这个文件的容量大小,单位为Bytes;

1.6 第六部分为这个文件的创建日期或最近的修改日期,如果未变动时间太久则只显示年份;

1.7 第七部分为这个文件的文件名,文件名前有一个[.]为隐藏文件;

2. 修改文件属性与权限

2.1 改变所属群组,chgrp

chgrp user1 test.txt #第二个字段为群组名,需在etc/group文件中,最后一个字段为文件名

2.2 改变文件拥有者,chown

chown user1 test.txt #第二个字段为用户名,需在etc/passwd文件中,最后一个字段为文件名
chown user1:user1 text.txt #同时改变群组
chown user1.user1 text.txt
chown .user1 text.txt #只改群组
chown :user1 text.txt

-R:进行递回的持续变更,亦即连同次目录下的所有文件都变更。

2.3 改变权限,chmod

  • 数字类型改变文件权限,r对应为4,w对应为2,x对应为1

chmod 777 test.txt #第二个字段中的每个数字对应为owner/group/other各自的rwx的累加,后面接文件名
  • 符号类型改变文件权限,user对u,group对应g,other对应o,a对应all所有身份,可以使用+、-、=来操作权限rwx

chmod u=rwx,go=rx text.txt #第二个字段设置权限,后接文件名
chmod a+x test.txt
chmod a-x test.txt

3. 目录与文件的权限

3.1 文件的权限

  • r权限表示可读取该文件的实际内容;

  • w权限表示可以编辑、新增或修改该文件的内容;

  • x权限表示可以该文件具有可以被执行的权限;

3.2 目录的权限

  • r表示具有查询该目录下的文件名数据的权限;

  • w表示具有变动该目录结构清单的权限,包括创建、删除、更名、移动;

  • x表示使用者能否进入该目录的权限;

4. Linux文件种类与扩展名

4.1 文件种类

  • 正规文件(regular file):用[-]表示,包括纯文本文件(ASCLL)、二进制文件(binary)、数据格式文件(data);

  • 目录(directory):用[d]表示;

  • 链接文件(link):用[l]表示;

  • 设备与设备文件(device):通常集中在/dev目录下,分为区块(block)设备文件(用[b]表示,随机存取的周边设备,如硬盘)和字符(character)设备文件(用[c]表示,一次性读取的周边设备,如键盘);

  • 数据接口文件(sockets):用[s]表示,一般在/run和/tmp目录中出现;

  • 数据输送档(FIFO,pipe):用[p]表示,first-in-first-out缩写,用于解决多个程序同时存取一个文件所造成的错误问题;

4.2 文件扩展名

  • .sh:脚本或批处理文件(script);

  • Z、.tar、.tar.gz、.zip、.tgz:经过打包的压缩文件;

  • .html、.php:网页相关文件;

  • linux文件是否可执行只取决于是否拥有x权限,文件扩展名仅用于了解文件的可能用途;

4.3 文件长度限制

  • 单一文件或目录的最大容许文件名为255Bytes,以一个ASCLL英文占用一个Bytes来说可有大约255个字符长度,以一个中文占用2Bytes来说可有大约128个中文字符;

4.4 文件名称限制

  • 文件名称避免使用*?<>;&![]|'"'(){}\等;

二、Linux目录配置

1. Linux目录配置依据

  • Filesystem Hierarchy Standard(FHS);

2. 目录树

  • 目录树起始点为根目录(/,root);

  • 每一个目录不仅能使用本地partion的文件系统,还能使用网络上的filesystem;

  • 每一个文件在此目录树中的文件名都是独一无二的;

3. 绝对路径与相对路径

  • 绝对路径:由根目录开启写起的文件名或目录名称;

  • 相对路径:相对于目前路径的文件名写法;

  • .代表当前目录,也可用./表示;

  • ..代表上一层目录,也可用../表示;

4. CentOS的观察

  • 查看核心版本

uname -r
  • 查看操作系统的位版本

uname -m

三、Linux目录操作

1. 特殊目录

.代表此层目录,..代表上一层目录,-代表前一个工作目录,~代表目前使用者身份所在的主文件夹,~[account]代表account这个使用者的主文件夹。

2. 变换目录

  • change directory,cd;

3. 显示目前所在目录

  • Print Working Directory,pwd;

  • 加-P参数显示链接文件的完整路径;

4. 创建新目录

  • Make Directory,mkdir;

  • -m参数设置文件权限,不加为默认权限;

  • -p参数能够递回创建目录;

5. 删除空目录

  • Remove Directory,rmdir;

  • -p参数能连同上层的空目录一起删除;

6. 可执行文件路径的变量:$PATH

  • 不同身份使用者默认的PATH不同,默认能够随意执行的指令也不同;

  • PATH这个变量的内容由一堆目录所组成的,每个目录中间用:分隔,每个目录也有顺序之分。

四、Linux文件与目录管理操作

1. 文件与目录的检视

ls [-aAdfFhilnrRSt] 文件名或目录名称..
-a:显示全部文件包括隐藏文件;
-A:显示全部文件包括隐藏文件,但不包括.和..这两个目录;
-d:仅列出目录本身,而不是列出目录内的文件数据;
-f:直接列出结果,而不进行排序;
-F:根据文件、目录等信息,给予附加结构数据;
-h:将文件大小以易读方式显示;
-i:列出inode号码;
-l:长数据串行出,包含文件的属性与权限等数据;
-n:列出UID与GID而非使用者与群组的名称;
-r:将排序结果反向输出;
-R:连同子目录内容一起列出来;
-S:以文件大小排序;
-t:以时间排序;
--color=never:不依据文件特性给予颜色显示;
--color=always:显示颜色;
--color=auto:让系统自行依据设置来判断是否给予颜色;
--full-time:以完整时间模式输出;
--time={atime,ctime}:输出access时间或改变权限属性时间ctime而非内容变更时间;

2. 复制文件或目录

cp [-adfilprsu] 来源文件(source) 目标文件(destination)
cp [options] source1 source2 source3 .... directory
-a  :相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明;(常用);
-d  :若来源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身;
-f  :为强制(force)的意思,若目标文件已经存在且无法打开,则移除后再尝试一次;
-i  :若目标文件(destination)已经存在时,在覆盖时会先询问动作的进行(常用);
-l  :进行硬式链接(hard link)的链接文件创建,而非复制文件本身;
-p  :连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用);
-r  :递回持续复制,用于目录的复制行为;(常用)
-s  :复制成为符号链接文件 (symbolic link),亦即“捷径”文件;
-u  :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制。
--preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了。
如果来源文件有两个以上,则最后一个目的文件一定要是“目录”。

3. 移除文件或目录

rm [-fir] 文件或目录
-f  :就是 force 的意思,忽略不存在的文件,不会出现警告讯息;
-i  :互动模式,在删除前会询问使用者是否动作
-r  :递回删除。

4. 移动文件与目录或更名

mv [-fiu] source destination
mv [options] source1 source2 source3 .... directory
-f  :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i  :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u  :若目标文件已经存在,且 source 比较新,才会更新 (update)

5. 取得路径的文件名称与路径名称

basename 文件名
dirname 文件名

五、文件内容查询

1. 直接检视文件内容

  • cat(concatenate)

    cat [-AbEnTv] 文件名
    -A  :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
    -b  :列出行号,仅针对非空白行做行号显示,空白行不标行号!
    -E  :将结尾的断行字符 $ 显示出来;
    -n  :打印出行号,连同空白行也会有行号,与 -b 的选项不同;
    -T  :将 [tab] 按键以 ^I 显示出来;
    -v  :列出一些看不出来的特殊字符
  • tac(反向列示)

    tac 文件名
  • nl(添加行号打印)

    nl [-bnw] 文件
    -b  :指定行号指定的方式,主要有两种:
          -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
          -b t :如果有空行,空的那一行不要列出行号(默认值);
    -n  :列出行号表示的方法,主要有三种:
          -n ln :行号在屏幕的最左方显示;
          -n rn :行号在自己字段的最右方显示,且不加 0 ;
          -n rz :行号在自己字段的最右方显示,且加 0 ;
    -w  :行号字段的占用的字符数。

2. 可翻页检视

  • more(一页一页翻动)

    more 文件名
    空白键 (space):代表向下翻一页;
    Enter         :代表向下翻“一行”;
    /字串         :代表在这个显示的内容当中,向下搜寻“字串”这个关键字;
    :f            :立刻显示出文件名以及目前显示的行数;
    q             :代表立刻离开 more ,不再显示该文件内容。
    b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
  • less(一页一页翻动)

    less 文件名
    空白键    :向下翻动一页;
    [pagedown]:向下翻动一页;
    [pageup]  :向上翻动一页;
    /字串     :向下搜寻“字串”的功能;
    ?字串     :向上搜寻“字串”的功能;
    n         :重复前一个搜寻 (与 / 或 ? 有关!)
    N         :反向的重复前一个搜寻 (与 / 或 ? 有关!)
    g         :前进到这个数据的第一行去;
    G         :前进到这个数据的最后一行去 (注意大小写);
    q         :离开 less 这个程序;

3. 数据撷取

  • head(取出前面几行)

    head [-n number] 文件
    -n  :后面接数字,代表显示几行的意思
  • tail(取出后面几行)

    tail [-n number] 文件
    -n  :后面接数字,代表显示几行的意思
    -f  :表示持续侦测后面所接的文件名,要等到按下[ctrl]-c才会结束tail的侦测

4. 非纯文本文件

  • od

    od [-t TYPE] 文件
    -t  :后面可以接各种“类型 (TYPE)”的输出,例如:
          a       :利用默认的字符来输出;
          c       :使用 ASCII 字符来输出
          d[size] :利用十进制(decimal)来输出数据,每个整数占用 size Bytes ;
          f[size] :利用浮点数值(floating)来输出数据,每个数占用 size Bytes ;
          o[size] :利用八进位(octal)来输出数据,每个整数占用 size Bytes ;
          x[size] :利用十六进制(hexadecimal)来输出数据,每个整数占用 size Bytes ;

5. 修改文件时间或新文件

  • modification time (mtime):文件内容数据变更时会更新时间;

  • status time(ctime):文件状态(权限与属性)变更时会更新时间;

  • access time(atime):文件内容被读取时会更新时间。

    touch [-acdmt] 文件
    -a  :仅修订 access time;
    -c  :仅修改文件的时间,若该文件不存在则不创建新文件;
    -d  :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间"
    -m  :仅修改 mtime ;
    -t  :后面可以接欲修订的时间而不用目前的时间,格式为[YYYYMMDDhhmm]

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

1. 文件默认权限

  • umask:指定目前使用者在创建文件或目录时的权限默认值;

    umask #查询数字体态的权限设置分数,该分数指的是该默认值需要减掉的权限
    umask -S #以符号类型显示权限
  • 创建为文件时默认没有可执行(x)权限;

  • 创建为目录时默认所有权限均开放;

2. 文件隐藏属性

  • 显示文件隐藏属性

    lsattr [-adR] 文件或目录
    -a :将隐藏文件的属性也秀出来;
    -d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名;
    -R :连同子目录的数据也一并列出来! 
  • 设置文件隐藏属性

    chattr [+-=][ASacdistu] 文件或目录名称
    +   :增加某一个特殊参数,其他原本存在参数则不动。
    -   :移除某一个特殊参数,其他原本存在参数则不动。
    =   :设置一定,且仅有后面接的参数
    
    A  :当设置了 A 这个属性时,若你有存取此文件(或目录)时,他的存取时间 atime 将不会被修改,可避免 I/O 较慢的机器过度的存取磁盘。(目前建议使用文件系统挂载参数处理这个项目)
    S  :一般文件是非同步写入磁盘的(原理请参考前一章sync的说明),如果加上 S 这个属性时,当你进行任何文件的修改,该更动会“同步”写入磁盘中。
    a  :当设置 a 之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root 才能设置这属性
    c  :这个属性设置之后,将会自动的将此文件“压缩”,在读取的时候将会自动解压缩,但是在储存的时候,将会先进行压缩后再储存(看来对于大文件似乎蛮有用的!)
    d  :当 dump 程序被执行的时候,设置 d 属性将可使该文件(或目录)不会被 dump 备份
    i  :这个 i 可就很厉害了!他可以让一个文件“不能被删除、改名、设置链接也无法写入或新增数据!”,对于系统安全性有相当大的助益!只有 root 能设置此属性
    s  :当文件设置了 s 属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘空间,所以如果误删了,完全无法救回来了喔!
    u  :与 s 相反的,当使用 u 来设置文件时,如果该文件被删除了,则数据内容其实还存在磁盘中,可以使用来救援该文件喔!

3. 文件特殊权限

  • 当 s 标志在文件拥有者的 x 项目为 SUID,那 s 在群组的 x 时则称为 SGID,t在其他人的x时称为SBIT。

  • Set UID:

    只对文件有效:

    • SUID 权限仅对二进制程序(binary program)有效;

    • 执行者对于该程序需要具有 x 的可执行权限;

    • 本权限仅在执行该程序的过程中有效 (run-time);

    • 执行者将具有该程序拥有者 (owner) 的权限。

  • Set GID:

    对于文件:

    • SGID 对二进制程序有用;

    • 程序执行者对于该程序来说,需具备 x 的权限;

    • 执行者在执行的过程中将会获得该程序群组的支持!

    对于目录:

    • 使用者若对于此目录具有 r 与 x 的权限时,该使用者能够进入此目录;

    • 使用者在此目录下的有效群组(effective group)将会变成该目录的群组;

    • 用途:若使用者在此目录下具有 w 的权限(可以新建文件),则使用者所创建的新文件,该新文件的群组与此目录的群组相同。

  • Sticky Bit:

    只对目录有效:

    • 当使用者对于此目录具有 w, x 权限,亦即具有写入的权限时;

    • 当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件

4. 观察文件类型

file 文件名 #判断文件格式

七、指令与文件的搜寻

1. 指令文件名的搜寻

which [-a] command
-a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称

2. 文件文件名的搜寻

  • whereis:由一些特定的目录中寻找文件文件名;

    whereis [-bmsu] 文件或目录名
    -l    :可以列出 whereis 会去查询的几个主要目录而已
    -b    :只找 binary 格式的文件
    -m    :只找在说明文档 manual 路径下的文件
    -s    :只找 source 来源文件
    -u    :搜寻不在上述三个项目当中的其他特殊文件
  • locate/updatedb:在已创建的数据库中搜寻

    locate [-ir] keyword #依据 /var/lib/mlocate 内的数据库记载,找出使用者输入的关键字文件名
    -i  :忽略大小写的差异;
    -c  :不输出文件名,仅计算找到的文件数量
    -l  :仅输出几行的意思,例如输出五行则是 -l 5
    -S  :输出 locate 所使用的数据库文件的相关信息,包括该数据库纪录的文件/目录数量等
    -r  :后面可接正则表达式的显示方式
    updatedb #根据 /etc/updatedb.conf 的设置去搜寻系统硬盘内的文件名,并更新 /var/lib/mlocate 内的数据库文件
  • find

    find [PATH] [option] [action]
    1. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明
     -mtime  n :n 为数字,意义为在 n 天之前的“一天之内”被更动过内容的文件;
     -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件文件名;
     -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件文件名。
     -newer file :file 为一个存在的文件,列出比 file 还要新的文件文件名
    2. 与使用者或群组名称有关的参数:
    -uid n :n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在/etc/passwd 里面与帐号名称对应的数字。这方面我们会在第四篇介绍。
    -gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在/etc/group,相关的介绍我们会第四篇说明~
    -user name :name 为使用者帐号名称喔!例如 dmtsai 
    -group name:name 为群组名称喔,例如 users ;
    -nouser    :寻找文件的拥有者不存在 /etc/passwd 的人!
    -nogroup   :寻找文件的拥有群组不存在于 /etc/group 的文件!
    当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。
    3. 与文件权限及名称有关的参数:
    -name filename:搜寻文件名称为 filename 的文件;
    -size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有:
    c: 代表 Byte, k: 代表 1024Bytes。所以,要找比 50KB
    还要大的文件,就是“ -size +50k ”
    -type TYPE    :搜寻文件的类型为 TYPE 的,类型主要有:一般正规文件 (f), 设备文件 (b, c),目录 (d), 链接文件 (l), socket (s), 及 FIFO (p) 等属性。
    -perm mode  :搜寻文件权限“刚好等于” mode 的文件,这个 mode 为类似 chmod的属性值,举例来说, -rwsr-xr-x 的属性为 4755 !
    -perm -mode :搜寻文件权限“必须要全部囊括 mode 的权限”的文件,举例来说,我们要搜寻 -rwxr--r-- ,亦即 0744 的文件,使用 -perm -0744,当一个文件的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。
    -perm /mode :搜寻文件权限“包含任一 mode 的权限”的文件,举例来说,我们搜寻-rwxr-xr-x ,亦即 -perm /755 时,但一个文件属性为 -rw-------也会被列出来,因为他有 -rw.... 的属性存在!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值