7 Linux 文件与目录管理

来源:互联网 发布:淘宝标题怎么写好 编辑:程序博客网 时间:2024/06/05 02:13
.                代表此层目录
..               代表上一层目录
-               代表前一个工作目录
~              代表『目前使用者身份』所在的主目录
~account  代表 account 这个使用者的主目录(account是个帐号名称)

rmdir (删除空的目录)。目录需要一层一层的删除才行!而且被删除的目录里面必定不能存在其他的目录或文件! 这也是所谓的空的目录(empty directory)的意思!要将所有目录下的东西都删掉必须使用『 rm -r test 』!不过,还是使用 rmdir 比较安全!你也可以尝试以 -p 的选项加入,来删除上一级的目录!e.g.rmdir -p test1/test2/test3/test4

Linux 的文件系统中,这些与权限、属性有关的数据放在放在 i-node 里面。

PATH="$PATH":/root      给PATH变量加入路径。

查看文件与目录:ls [-aAdfFhilnrRSt] 目录名称

-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)

-d :仅列出目录本身,而不是列出目录内的文件数据(常用)

-l  : 长数据串列出,包含文件的属性与权限等等数据;(常用)


复制文件或目录:cp [-adfilprsu] 来源文件(source) 目标文件(destination)
-i :若目标文件(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-r :递回持续复制,用于目录的复制行为;(常用).可以复制目录,但是,文件与目录的权限可能会被改变。
-d:若来源文件为连接的属性(link file),则复制连接属性而非文件本身;
-a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
在默认的条件中, cp 的来源文件与目的文件的权限是不同的,目的文件的拥有者通常会是命令操作者本身,由于具有这个特性,因此当我们在进行备份的时候,某些需要特别注意的特殊权限文件, 例如密码文件(/etc/shadow) 以及一些配置文件,就不能直接以 cp 来复制,而必须要加上 -a 或者是 -p 等等可以完整复制文件权限的选项才行!

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

-r:递回删除!最常用在目录的删除了!这是非常危险的选项!!!


移动文件与目录,或更名:mv [-fiu] source destination
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u:若目标文件已经存在,且 source 比较新,才会升级 (update)

cat  由第一行开始显示文件内容 。cat -A 就能够发现那些空白的地方是什么东西了![tab]会以 ^I 表示,断行字符则是以 $ 表示。
tac  从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
nl    显示的时候,输出行号!
more 一页一页的显示文件内容
less 与 more 类似,但是比 more 更好的是,它可以往前翻页!
head 只看头几行
tail 只看末尾几行
nl 与 cat, tac 等等,都是一次性的将数据全部显示到屏幕上面;
more 与 less可以一页一页的查看数据;
od   以二进位的方式读取文件内容;

less (一页一页翻动)
空白键    :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup]  :向上翻动一页;
/字串     :向下搜寻『字串』的功能;
?字串     :向上搜寻『字串』的功能;
n         :重复前一个搜寻 (与 / 或 ? 有关!)
N         :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q         :离开 less 这个程序;

head (取出前面几行): head [-n number] 文件
tail (取出后面几行):tail [-n number] 文件 

modification time (mtime):当该文件的『内容数据』变更时,就会升级这个时间!内容数据指的是文件的内容,而不是文件的属性或权限!
status time (ctime):当该文件的『状态 (status)』改变时,就会升级这个时间,举例来说,像是权限与属性被更改了,都会升级这个时间。 
access time (atime):当『该文件的内容被取用』时,就会升级这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man.config , 就会升级该文件的atime了。

touch 这个命令最常被使用的情况是:
创建一个空的文件;
将某个文件日期修订为目前 (mtime 与 atime)

文件默认权限:umask
创建文件时:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
创建目录时:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x

chattr命令只能在Ext2/Ext3的文件系统上面生效, 其他的文件系统可能就无法支持这个命令!
chattr (配置文件隐藏属性):chattr [+-=][ASacdistu] 文件或目录名称
a  :当配置 a 之后,这个文件将只能添加数据,而不能删除也不能修改数据,只有root 才能配置这个属性。
i  :可以让一个文件『不能被删除、改名、配置连结也无法写入或新增数据!』对于系统安全性有相当大的助益!只有 root 能配置此属性
个人认为最重要的当属 +i 与 +a 这个属性了。+i 可以让一个文件无法被更动,对于需要强烈的系统安全的人来说,真是相当的重要的!

lsattr (显示文件隐藏属性):lsattr [-adR] 文件或目录
选项与参数:
-a :将隐藏档的属性也秀出来;
-d :如果接的是目录,仅列出目录本身的属性而非目录内的档名;
-R :连同子目录的数据也一并列出来! 

文件特殊权限: SUID, SGID, SBIT
4 为 SUID:s
2 为 SGID:s

1 为 SBIT:t


SUID 权限仅对二进制程序(binary program)有效;
  • 运行者对于该程序需要具有 x 的可运行权限;
  • 本权限仅在运行该程序的过程中有效 (run-time);
  • 运行者将具有该程序拥有者 (owner) 的权限。


SGID 可以针对文件或目录来配置

如果是对文件来说, SGID 有如下的功能:
  • SGID 对二进制程序有用;
  • 程序运行者对于该程序来说,需具备 x 的权限;
  • 运行者在运行的过程中将会获得该程序群组的支持!

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

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

SUID 不是用在目录上,而 SBIT 不是用在文件上的!

查看文件类型:file
命令文件的搜索:which (寻找『执行文件』)

文件名的查找:
通常我们都是先使用 whereis 或者是 locate 来检查,如果真的找不到了,才以 find 来查找! 因为whereis 与 locate 是利用数据库来搜寻数据,所以相当的快速,而且并没有实际的搜寻硬盘, 比较省时间。

whereis (寻找特定文件):whereis[-bmsu] 文件或目录名

选项与参数:
-b    :只找 binary 格式的文件
-m    :只找在说明档 manual 路径下的文件
-s    :只找 source 来源文件
-u    :搜寻不在上述三个项目当中的其他特殊文件

Linux 系统会将系统内的所有文件都记录在一个数据库文件里面, 而当使用 whereis 或者是 locate 时,都会以此数据库文件的内容为准, 因此,有的时后你还会发现使用这两个运行档时,会找到已经被删掉的文件!而且也找不到最新的刚刚创建的文件呢!这就是因为这两个命令是由数据库当中的结果去搜寻文件的所在啊!!
locate [-ir] keyword
选项与参数:
-i  :忽略大小写的差异;
-r  :后面可接正规表示法的显示方式

updatedb:根据 /etc/updatedb.conf 的配置去搜寻系统硬盘内的文件名,并升级 /var/lib/mlocate 内的数据库文件;
locate:依据 /var/lib/mlocate 内的数据库记载,找出使用者输入的关键字文件名。

find[PATH] [option] [action]

总结:

文件具有SUID的特殊权限时,代表当使用者运行此一binary程序时,在运行过程中使用者会暂时具有程序拥有者的权限
目录具有SGID的特殊权限时,代表使用者在这个目录底下新建的文件之群组都会与该目录的群组名称相同。
目录具有SBIT的特殊权限时,代表在该目录下使用者创建的文件只有自己与root能够删除!
查看件的类型可以使用 file 命令;
搜寻命令的完整档名可用 which 或 type ,这两个命令都是透过 PATH 变量来搜寻文件名;
搜寻文件的完整档名可以使用 whereis 或 locate 到数据库文件去搜寻,而不实际搜寻文件系统;
利用 find 可以加入许多选项来直接查询文件系统,以获得自己想要知道的文件名。

原创粉丝点击