鸟哥的linux私房菜----档案权限与目录配置(第五章)

基础指令

  1. 显示日期与时间的指令: date
  2. 显示日历的指令: cal [mouth] [year]
  3. 简单好用的计算机: bc
  4. [Ctrl] [shift] [=] 放大终端字体; [Ctrl] [-] 缩小
  5. [Tab]一次是命令补全
  6. shift PageDown/PageUp 向下/上翻页

man 指令

指令后面的数字含义:1 代表一般帐号可用指令,8代表系统管理员常用指令,5代表系统设定档格式;

  • [Page Down]/[Page Up] 向下/上翻页
  • [/string] 向下搜寻
  • [?string] 向上搜寻
  • [n,N] 下/上一个搜寻结果

nano 指令

  • [ctrl]-G:取得线上说明(help),很有用的!
  • [ctrl]-X:离开nano软体,若有修改过档案会提示是否需要储存喔!
  • [ctrl]-O:储存档案,若你有权限的话就能够储存档案了;
  • [ctrl]-R:从其他档案读入资料,可以将某个档案的内容贴在本档案中;
  • [ctrl]-W:搜寻字串,这个也是很有帮助的指令喔!
  • [ctrl]-C:说明目前游标所在处的行数与列数等资讯;
  • [ctrl]-_:可以直接输入行号,让游标快速移动到该行;
  • [alt]-Y:校正语法功能开启或关闭(按一下开、再按一下关)
  • [alt]-M:可以支援滑鼠来移动游标的功能

开关机

  • sync-----资料同步写入磁盘
  • shutdown [-krhc] [time] [警告信息]
    • -k : 不要真的关机,只是发送警告讯息出去!
    • -r : 在将系统的服务停掉之后就重新开机(常用)
    • -h : 将系统的服务停掉后,立即关机。(常用)
    • -c : 取消已经在进行的shutdown 指令内容。
[root@study ~]# shutdown -h now 
立刻关机,其中now相当于时间为0的状态 
[root@study ~]# shutdown -h 20:25 
系统在今天的20:25分会关机,若在21: 25才下达此指令,则隔天才关机 
[root@study ~]# shutdown -h +10 
系统再过十分钟后自动关机 
[root@study ~]# shutdown -r now 
系统立刻重新开机 
[root@study ~ ]# shutdown -r +30 'The system will reboot' 
再过三十分钟系统会重新开机,并显示后面的讯息给所有在线上的使用者 
[root@study ~]# shutdown -k now 'This system will reboot' 
仅发出警告信件的参数!系统并不会关机啦!
  • systemctl [指令]
    • halt 进入系统停止的模式,萤幕可能会保留一些讯息,这与你的电源管理模式有关
    • poweroff 进入系统关机模式,直接关机没有提供电力!
    • reboot 直接重新开机
    • suspend 进入休眠模式

Linux 的档案权限与目录配置

使用者和群组

/etc/password --------用户信息
/etc/group -------组记录
/etc/shadow -----个人密码

Linux 文件属性

在这里插入图片描述

  1. chgrp : 改变文件所属群组
  2. chown : 改变档案拥有者
  3. chmod : 改变档案的权限 r=4,w=2,x=1 a/ u=rwx,go=rx
    使用情况:复制被人的文件后;

文件与目录的权限区别:

元件内容rwx
文件文件资料夹读文件内容修改文件内容执行
目录目录下文件与目录 (档名)读到档名改目录名;删/增目录内容进入该目录

目录必须开放r和x,别人才可以浏览该目录;但是w不能随便给

档案分类与副档名

  1. 正规档案【-】:纯文字档(cat读)、二进制档(可执行)、数据格式档(data)–last指令读取
  2. 目录【d】
  3. 连结档【l】:快捷方式
  4. 设备与装置档: 区块设备档【b】(成组设备,如硬盘)、字元设备档【c】(串行口设备,如键盘、鼠标)
  5. 套接字【s】:数据接口文件,用与网络上的数据连接;如客户端的请求。
  6. 管道【p】:解决多个程序同时存取一个档案所造成的错误问题。

linux 档案副档名:文件后缀名,判断文件用途。

注:档名长度:255bytes或128中字;避开使用特殊字符,如 . 和 - 等

Linux目录配置

FHS 要求必须要存在的目录
目录档案内容
/bin在单人维护模式下还能够被操作的指令。主要有:cat, chmod, chown, date, mv, mkdir, cp, bash等等常用的指令。
/boot放置开机会使用到的档案,包括Linux核心档案以及开机选单与开机所需设定档等等。Linux kernel常用的档名为:vmlinuz
/dev任何装置与周边设备都是以档案的型态存在于这个目录当中
/etc系统主要的设定档。/etc/opt(必要):这个目录在放置第三方协力软体/opt的相关设定档。 /etc/X11/(建议):与X Window有关的各种设定档都在这里,尤其是xorg.conf这个X Server的设定档。/etc/sgml/(建议):与SGML格式有关的各项设定档。/etc/xml/(建议):与XML格式有关的各项设定档
/lib在开机时会用到的函式库,以及在/bin或/sbin底下的指令会呼叫的函式库(外挂)。/lib/modules/:这个目录主要放置可抽换式的核心相关模组(驱动程序)!
/media放置的就是可移除的装置
/mnt暂时挂载某些额外的装置
/opt给第三方协力软体放置的目录
/sbin用来设定系统环境的指令(只有root可以用),如fdisk,mkfs
/srv一些网络服务启动之后,这些服务所需要取用的资料目录。
/tmp一般使用者或者是正在执行的程序暂时放置档案的地方。(任何人都可以存取,定期清理
FHS 建议可以存在的目录
目录档案内容
/lib用来存放与/lib 不同的格式的二进位函式库
/home使用者家目录【~】或【~username】
/root系统管理员(root)的家目录。
/lost+found使用标准的ext2/ext3/ext4档案系统格式才会产生的一个目录,目的在于当档案系统发生错误时, 将一些遗失的片段放置到这个目录下
/proc一个『虚拟档案系统(virtual filesystem)』,放置的资料都是在记忆体当中,例如系统核心、行程资讯(process)、周边装置的状态及网路状态等等。不占硬碟容量
/sys一个虚拟的档案系统,主要也是记录核心与系统硬体资讯较相关的资讯。不占硬碟容量
/usr (Unix Software Resource)的意义与内容

所有系统预设的软体(distribution发布者提供的软体)都会放置到/usr底下。

目录档案内容
/usr/bin//usr/bin 与/bin 是一模一样
/usr/lib/与/lib 功能相同
/usr/local/系统管理员在本机自行安装自己下载的软体(非预设提供者),建议安装到此目录, 这样会比较便于管理。
/usr/sbin/非系统正常运作所需要的系统指令。/sbin 也差不多
/usr/share/主要放置共享文件。放置的资料几乎是不分硬体架构均可读取的资料, 因为几乎都是文字档案 usr/share/man:线上说明文件。/usr/share/doc:软体杂项的文件说明。/usr/share/zoneinfo:与时区有关的时区档案
/usr/games/与游戏比较相关的资料放置处
/usr/include/c/c++等程序语言的档头(header)与包含档(include)放置处,当我们以tarball方式(*.tar.gz 的方式安装软体)安装某些资料时,会使用到里头的许多包含档
/usr/src/一般原始码建议放置到这里,src有source的意思。至于核心原始码则建议放置到/usr/src/linux/目录下。
/var 的意义与内容

/var就是在系统运作后才会渐渐占用硬碟容量的目录。因为/var目录主要针对常态性变动的档案,包括快取(cache)、登录档(log file)以及某些软体运作所产生的档案, 包括程序档案(lock file, run file),或者例如MySQL资料库的档案等等。

目录档案内容
/var/cache/应用程序本身运作过程中会产生的一些暂存档
/var/lib/程序本身执行的过程中,需要使用到的资料档案放置的目录。
/var/lock/某些装置或者是档案资源一次只能被一个应用程序所使用,如果同时有两个程序使用该装置时, 就可能产生一些错误的状况,因此就得要将该装置上锁(lock),以确保该装置只会给单一软体所使用。已经挪到/run/lock 中
/var/log/这是登录档放置的目录!里面比较重要的档案如/var/log/messages, /var/log/wtmp(记录登入者的资讯)等。
/var/mail/放置个人电子邮件信箱的目录,不过这个目录也被放置到/var/spool/mail/目录中!通常这两个目录是互为连结档啦!
/var/run/某些程序或者是服务启动后,会将他们的PID放置在这个目录下喔!=与/run 相同,这个目录连结到/run
/var/spool/通常放置一些 排队等待其他程序使用的资料

绝对路径、相对路径

绝对路径档名为从根目录/ 开始写起,否则都是相对路径的档名。
. 代表当前的目录,也可以使用./ 来表示;
… 代表上一层目录,也可以…/ 来代表。
-代表前一个工作目录
~ 代表登陆者的家目录

目录管理

  • cd 变换目录
  • pwd 【-P】显示当前目录【显示确实的路径,而非link路径】
  • mkdir [-mp] 新建目录 [m:设定权限;p:递归建立]
  • rmdir [-p] 删除目录[p:递归删除]
    执行文件路径变量:$PATH
ehco $PATH   //不同的用户,输出结果不同
PATH="${PATH};/win/test"  //将/win/test添加到PATH中
查看档案内容
  • cat 由第一行开始显示档案内容
  • tac 从最后一行开始显示,可以看出tac 是cat 的倒着写!
  • nl 显示的时候,顺道输出行号!
  • more 一页一页的显示档案内容
  • less 与more 类似,但是比more 更好的是,他可以往前翻页!
  • head 只看头几行
  • tail 只看尾巴几行
  • od 以二进位的方式读取档案内容!
档案三种时间
  • mtime 资料内容更改
  • ctime 资料状态改变,如权限、属性和内容
  • atime 资料被读
  • touch -a 修改atime
  • touch -t [YYYYMMDDhhmm] 修改mtime和atime
  • touch -m 修改mtime
  • stat filename 查看文件三种时间和各种详细信息
预设权限和隐藏权限

umask 查询档案预设权限
一般为022,则新建文件的实际权限是744(766-022);新建目录权限为755(777-022)。
022,表示组用户和其他用户都拿走写权限;003,表示其他用户拿走写和执行权限。

chattr 设定档案隐藏属性
chattr【+,-,=】 【A,S,a,c,d,i,s,u】档案名

  • A :当设定了A 这个属性时,若你存取此档案(或目录)时,它的访问时间atime 将不会被修改,
    可避免I/O 较慢的机器过度访问磁盘。(目前建议使用档案系统挂载参数处理这个项目)
  • S :一般档案是非同步写入磁盘的,如果加上S这个属性时,当你进行任何档案的修改,该更动会『同步』写入磁碟中。
  • a :当设定a 之后,这个档案将只能增加资料,而不能删除也不能修改资料,只有root 才能设定这属性
  • c :这个属性设定之后,将会自动的将此档案『压缩』,在读取的时候将会自动解压缩,但是在储存的时候,将会先进行压缩后再储存(看来对于大档案似乎蛮有用的!)
  • d :当dump 程序被执行的时候,设定d 属性将可使该档案(或目录)不会被dump 备份
  • i :可以让一个档案『不能被删除、改名、设定连结也无法写入或新增资料!』对于系统安全性有相当大的助益!只有root 能设定此属性
  • s :当档案设定了s 属性时,如果这个档案被删除,他将会被完全的移除出这个硬盘空间,
    所以如果误删了,完全无法救回来!
  • u :与s 相反的,当使用u 来设定档案时,如果该档案被删除了,则资料内容其实还存在磁盘中,
    可以使用来救援该档案!

lsattr 显示档案隐藏属性
lsattr [-adR] 档案名
a—显示隐藏档案的属性;d----列出目录本身的属性而非目录下的档案;R-----显示子目录的资料

文件特殊权限 SUID,SGID,SBIT
SUID

usr/bin/passwd 具有SUID权限,所以dmtsai可以通过passwd 修改自己的密码(修改/usr/bin/passwd内容)

  • SUID 权限仅对二进位程序(binary program)有效;【dmtsai 对于/usr/bin/passwd 这个程序来说是具有x 权限的,表示dmtsai 能执行passwd;】
  • 执行者对于该程序需要具有x 的可执行权限;【passwd 的拥有者是root 这个帐号;】
  • 本权限仅在执行该程序的过程中有效(run-time);【dmtsai 执行passwd 的过程中,会『暂时』获得root 的权限;】
  • 执行者将具有该程序拥有者(owner) 的权限。【/etc/shadow 就可以被dmtsai 所执行的passwd 所修改。】
SGID

SGID可以针对档案或目录来设定!如果是对档案来说, SGID 有如下的功能:

  • SGID 对二进位程序有用;
  • 程序执行者对于该程序来说,需具备x 的权限;
  • 执行者在执行的过程中将会获得该程序群组的支援!

当一个目录配置了 SGID 的权限后,它将具有如下的功能:

  • 使用者若对于此目录具有 r 与 x 的权限时,该使用者能够进入此目录;
  • 使用者在此目录下的有效群组(effective group)将会变成该目录的群组;
  • 用途:若使用者在此目录下具有 w 的权限(可以新建文件),则使用者所创建的新文件,该新文件的群组与此目录的群组相同。
SBIT

SBIT对于目录的作用是:

  • 当使用者对於此目录具有 w, x 权限,亦即具有写入的权限时;
  • 当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件
  • 用途:如果将 A 目录加上了 SBIT 的权限项目时, 则甲用户只能够针对自己创建的文件或目录进行删除/更名/移动等动作,而无法删除他人的文件。
SUID/SGID/SBIT权限配置

【数字法】 4为SUID;2为SGID;1为SBIT。
【符号法】 SUID为u+s ; SGID为g+s ;SBIT是o+t。
例如:

[root@www tmp]# chmod 4755 test; ls -l test <==加入具有 SUID 的权限
-rwsr-xr-x 1 root root 0 Sep 29 03:06 test
[root@www tmp]# chmod 7755 test; ls -l test <==加入具有 SUID/SGID 的权限
-rwsr-sr-t 1 root root 0 Sep 29 03:06 test
## s和t取代了x这个权限,即s和t包含了x这个权限;
[root@www tmp]# chmod 7666 test; ls -l test <==具有空的 SUID/SGID 权限
-rwSrwSrwT 1 root root 0 Sep 29 03:06 test
## user, group 以及 others 都没有 x权限,所以,S, T 不包含x这个权限(为空)
						
[root@www tmp]# chmod u=rwxs,go=x test; ls -l test
-rws--x--x 1 root root 0 Aug 18 23:47 test
# 承上,加上 SGID 与 SBIT 在上述的文件权限中!
[root@www tmp]# chmod g+s,o+t test; ls -l test
-rws--s--t 1 root root 0 Aug 18 23:47 test
观察文件类型 file

stat 用来显示文件的详细信息,包括inode, atime, mtime, ctime
file 查看文件是属于 ASCII 或者是 data 文件,或者是 binary , 且其中有没有使用到动态函式库 (share library) 等等信息

[hao@haows ~]$ file test.c
test.c: C source, ASCII text
[hao@haows ~]$ stat test.c
  文件:test.c
  大小:50        	块:8          IO 块:4096   普通文件
设备:805h/2053d	Inode:1062624     硬链接:1
权限:(0644/-rw-r--r--)  Uid:( 1000/     hao)   Gid:( 1000/     hao)
最近访问:2019-09-27 23:13:26.922913643 +0800
最近更改:2019-09-27 23:13:21.319473455 +0800
最近改动:2019-09-27 23:13:21.326140247 +0800
创建时间:2019-09-27 23:13:21.319473455 +0800

命令与文件的搜寻

which

which 是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的
注意:which 找不到cd命令的所在目录,是因为cd是bash内建的命令,which默认找PATH内所规范的目录。(可以通过type命令)
which [-a] command

whereis 和 locate

Linux 系统会将系统内的所有文件都记录在一个数据库文件『 /var/lib/mlocate/』里面, 而当使用 whereis 或者 locate 时,都会通过该数据库文件来进行找,相对于find(find 是直接搜寻硬盘)来说,速度快!

更新数据库:updatedb(根据 /etc/updatedb.conf 的配置去搜寻系统硬盘内的档名,并升级 /var/lib/mlocate 内的数据库文件;)

whereis [-bmsu] 文件或目录名
-b :只找 binary 格式的文件
-m :只找在说明档 manual 路径下的文件
-s :只找 source 来源文件
-u :搜寻不在上述三个项目当中的其他特殊文件

locate [-ir] keyword
-i :忽略大小写的差异;
-r :后面可接正规表示法的显示方式

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 § 等属性。
    -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… 的属性存在!
  4. 额外可进行的动作:
    -exec command :command 为其他命令,-exec 后面可再接额外的命令来处理搜寻到
    的结果。
    -print :将结果列印到萤幕上,这个动作是默认动作!

注意:find 会搜寻次目录;find能够进行额外的动作(命令)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值