一、可执行路径的变量:$PATH
echo $PATH显示出目前PATH
每个目录之间用冒号隔开。可以看到/usr/bin在PATH变量中,所以在任何地方都能执行ls。
添加目录:
PATH="${PATH}:/root"
以上语句将/root加入PATH。
二、修改文件时间或出创建新文件:touch
每个文件在linux下都会记录许多时间参数,其中有三个主要的变动时间:
- modification time(mtime) :文件内容最近一次变更的时间
- status time(ctime):文件状态最近一次变更的时间
- access time(atime):文件内容最近一次被取用的时间(如cat)
touch常被用来创建一个空的文件或者将文件mtime和ctime设为当前时间
三、文件默认权限:umask
默认权限属性:
- 创建文件(默认没有可执行权限):最大为666,即 - rw- rw- rw-
- 创建目录(默认可进入(x)): 777,即 d rwx rwx rwx
# umask
0022
类似掩码,去除对应权限。例如上述0022,第一个是特殊权限,先不管。此时,
创建文件时:
(- rw- rw- rw-) - (- — -w- w-) -> - rw- r-- r–
创建目录时:
(d rwx rwx rwx)- (- — -w- w-) -> d rwx r-x r-x
设置(修改)umask:
# umask 002 //将umask设置为002
四、文件特殊权限:SUID, SGID, SBIT
除了rwx外,还有一些特殊权限:
- Set UID
当s标志出现在文件拥有者的’x’位置时,如上图,’- rws r-x r-x’此时被称为Set UID,简称为SUID的特殊权限,其基本的限制和功能:
(1)仅对二进制程序(binary program)有效
(2)执行者对于该程序需要具有x的可执行权限
(3)本权限仅在执行该程序的过程中有效
(4)执行者将具有该程序拥有者(owner)的权限
例如linux中所有账号的密码都放在 /etc/shadow文件中,权限为
‘- — --- — 1 root root’,即只有root可读可写。那当前登录的非root账户(syf)能否修改密码呢?
当然是可以的:首先我自己对/usr/bin/passwd 这个程序是有x权限的,而passwd的拥有者是root,syf执行passwd的过程中,会暂时获取root的效果,那么/etc/shadow 就可以被syf所执行的passwd所修改。
而使用cat时无法读取/etc/shadow的,因为/bin/cat是不具有SUID权限的,此外,SUID只可用于二进制程序,而不能用于shell script(调用一系列binary program)
- Set GID
当s标志出现在群组的’x’位置时,被称为SGID。
与SUID不同的是,SGID可以针对文件或目录。
对于文件:
(1)对二进制程序有用
(2)程序执行者对于该程序来说,需要具备x的权限
(3)执行者在执行过程中会获得该程序群组的支持
对于目录:
(1)使用者对此目录有r与x权限时,能够进入此目录
(2)使用者在此目录下的有效群组将会变成该目录的群组
(3)用途:若使用者在此目录下有w权限,则使用者所创建的新文件的群组与此目录群组相同 - Sticky Bit
仅对目录有效。
(1)使用者对此目录有w与x权限
(2)当使用者在该目录下创建文件或目录,仅有自己和root才有权力删除该文件
SUID/SGID/SBIT权限设置
4:SUID
2:SGID
1:SBIT
假设要将一个文件权限改为’- rws r-x r-x’:chmod 4755 filename,即755前加上4。
五、指令与文件搜索
5.1 指令文件名搜索
- which(寻找可执行文件)
# which [-a] command
-a:将所有PATH目录中可以找到的指令均列出
5.2 文件的文件名搜索
- whereis(在一些特定的目录中寻找)
# whereis [-bmu] filename/dirname
- locate/updatedb
# locate [-ir] keyword
-i :忽略大小写差异
-r :后面可接正则表达式的显示方式
locate速度很快,因为它是从已创建的数据库“var/lib/mlocate/”里面的数据所搜寻到的。其限制是:数据库的创建默认是每天执行一次,所以新创建的文件在数据库更新之前找不到。
手动更新数据库
# uodatedb //读取/etc/updatedb.conf,然后去硬盘中搜索文件名
- find