linux学习笔记
鸟哥的linux私房菜第八章 https://wizardforcel.gitbooks.io/vbird-linux-basic-4e/content/48.html
linux文件与目录管理
相对路径与绝对路径
绝对路径:路径的写法“一定由根目录 / 写起”,例如: /usr/share/doc 这个目录。
相对路径:路径的写法“不是由 / 写起”,例如由 /usr/share/doc 要到 /usr/share/man 下面时,可以写成: “cd …/man”,相对路径意指“相对于目前工作目录的路径!”
注意:绝对路径的准确度好,在写程序 (shell scripts) 来管理系统的条件下,务必使用绝对路径的写法。
目录管理
. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表“目前使用者身份”所在的主文件夹
处理目录的指令
- cd:变换目录
cd ..
# 表示回到上一层目录
cd -
# 表示回到上一个目录
cd ~
cd
## cd 和 cd ~都是回到主目录的意思
cd ~accout
- pwd:显示目前的目录
- mkdir:创建一个新的目录
mkdir test
# 创建一个名为test的目录
mkdir -p test1/test2/test3/test4
#同时创建多层目录
- rmdir:删除一个空的目录
文件与目录的查看
- ls
文件的复制(cp)、删除(rm)和移动(mv)
- cp
- rm
- mv
取得路径的文件名称与目录名称
basename /etc/sysconfig/network
#取得文件名
dirname /etc/sysconfig/network
#取得目录名
文件内容查阅
-
cat
由第一行开始显示文件内容 -
tac
从最后一行开始显示 -
nl
显示的时候,顺道输出行号 -
more
一页一页的显示文件内容 -
less
与more 类似,但可以往前翻页 -
head
只看头几行 -
tail
只看尾巴几行 -
od
读取非文本文件
echo password | od -t oCc echo 可以得到 ASCII code 对照
补充:
管道:|
一个命令的输出可以通过管道做为另一个命令的输入。
echo 可以输出任何信息,而这个信息不由屏幕输出,而是传给 od 去继续处理
修改文件时间
linux三个主要变动的时间参数
-
modification time (mtime): 当该文件的“内容数据”变更时,就会更新这个时间!内容数据指的是文件的内容,而不是文件的属性或权限喔!
-
status time (ctime): 当该文件的“状态 (status)”改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间啊。
-
access time (atime): 当“该文件的内容被取用”时,就会更新这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man_db.conf , 就会更新该文件的 atime 了。
修改文件时间–touch
文件与目录权限与属性
默认权限
unmask查看默认权限
umask
# 输出0022
umask -S
# 输出u=rwx,g=rx,o=rx
所以0022意即拿掉user 和 group的 w权限
-
若使用者创建为“文件”则默认“没有可执行( x )权限”,亦即只有 rw 这两个项目,也就是最大为 666 分,默认权限如下: -rw-rw-rw-
因此创建文件时:权限值 644 -
若使用者创建为“目录”,则由于 x 与是否可以进入此目录有关,因此默认为所有权限均开放,亦即为 777 分,默认权限如下: drwxrwxrwx
因此创建目录时: 权限值 755
更改unmask
unmask 003
# 即拿掉group的 w 和 x权限
文件隐藏属性
- chattr 修改文件隐藏属性
- lsattr 查看文件隐藏属性
文件特殊权限
- SUID
特点:
- SUID 权限仅对二进制程序(binary program)有效;
- 执行者对于该程序需要具有 x 的可执行权限;
- 本权限仅在执行该程序的过程中有效 (run-time);
- 执行者将具有该程序拥有者 (owner) 的权限。
举例说明:
user对文件/usr/bin/passwd 没有w权限,但由于own拥有s权限,user在执行/usr/bin/passwd 时会短暂获得root的权限,也就是说短暂获得w权限,可以改密码啦!
- SGID
当 s 标志在文件拥有者的 x 项目为 SUID,那 s 在群组的 x 时则称为 Set GID, SGID,另外SGID针对文件和目录,而SUID仅针对文件
特点:
- SGID 对二进制程序有用;
- 程序执行者对于该程序来说,需具备 x 的权限;
- 执行者在执行的过程中将会获得该程序群组的支持!
- SBIT
只针对目录
特点:
- 当使用者对于此目录具有 w, x 权限,亦即具有写入的权限时;
- 当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件
举例来说,我们的 /tmp 本身的权限是“drwxrwxrwt”, 在这样的权限内容下,任何人都可以在 /tmp 内新增、修改文件,但仅有该文件/目录创建者与 root 能够删除自己的目录或文件。
SUID/SGID/SBIT 权限设置
数字法:
- 4 为 SUID
- 2 为 SGID
- 1 为 SBIT
在原本的3个数字前加上相应数字
例:4755表示加入SUID权限
注意:s和t是取代x权限的,如果没有x权限,权限会显示为S和T
符号法:
SUID 为 u+s ,而 SGID 为 g+s ,SBIT 则是 o+t
查看文件类型
指令与文件的搜寻
指令的搜寻
注意:which 默认查找path路径内的目录,所以找不到history
文件的搜寻
- whereis
- locate 只用输入文件的关键字就可以了
locate是经由数据库来搜寻的,而数据库的创建默认是在每天执行一次 ,即数据库每天更新一次。
所以新创建文件时,需要用updatedb更新数据库
- find
总结:
一、让使用者能进入某目录成为“可工作目录”的基本权限为何:
可使用的指令:例如 cd 等变换工作目录的指令;
目录所需权限:使用者对这个目录至少需要具有 x 的权限
额外需求:如果使用者想要在这个目录内利用 ls 查阅文件名,则使用者对此目录还需要 r 的权限。
二、使用者在某个目录内读取一个文件的基本权限为何?
可使用的指令:例如本章谈到的 cat, more, less等等
目录所需权限:使用者对这个目录至少需要具有 x 权限;
文件所需权限:使用者对文件至少需要具有 r 的权限才行!
三、让使用者可以修改一个文件的基本权限为何?
可使用的指令:例如 nano 或未来要介绍的 vi 编辑器等;
目录所需权限:使用者在该文件所在的目录至少要有 x 权限;
文件所需权限:使用者对该文件至少要有 r, w 权限
四、让一个使用者可以创建一个文件的基本权限为何?
目录所需权限:使用者在该目录要具有 w,x 的权限,重点在 w 啦!
五、让使用者进入某目录并执行该目录下的某个指令之基本权限为何?
目录所需权限:使用者在该目录至少要有 x 的权限;
文件所需权限:使用者在该文件至少需要有 x 的权限