xml地图|网站地图|网站标签 [设为首页] [加入收藏]
linux目录结构及文件管理,Linux的图形模式和文本
分类:操作系统

Linux的目录结构:

 图片 1                     

      /            根分区 linux文件系统的起点

                   /bin           普通用户的命令,普通用户能使用

                   /sbin         管理员使用的命令,只有管理员能使用

                   /home      普通用户的宿主目录

                   /root         管理员的宿主目录

                   /boot        linux启动所需的文件,内核,grub,内核引导文件

                   /dev          设备文件,硬盘,键盘鼠标,光驱等

                   /usr           应用程序 /usr/src  源码包的存放路径

                   /etc           配置文件

                   /opt           安装额外软件时的存放路径

                   /var         日志文件,邮件等

                   /proc         虚拟文件系统(计算机内核的信息,CPU...),数据都在内存中

                   /lib          库文件,驱动

                   /selinux    美国国家安全属研发的安全机制

                   /tmp         临时文件存放目录(公共文件夹)

                   /media     挂载点(redhat9.0里面使用的/mnt)

                   /sys     系统相关文件

                   /srv           启动的服务需要访问的数据目录

                   /mnt    临时文件系统挂载点

——————————————————————————————————————————————————————

1.默认开机进入文本模式

如果想让开机自动进纯文本模式,

修改/etc/inittab

找到其中的

id:5:initdefault:

这行指示启动时的运行级是5,也就是图形模式

改成3就是文本模式了

id:3:initdefault:

这是因为Linux操作系统有六种不同的运行级(run level),在不同的运行级下,系统有着不同的状态,这六种运行级分别为:

0:停机(记住不要把initdefault 设置为0,因为这样会使Linux无法启动)

1:单用户模式,就像Win9X下的安全模式。

2:多用户,但是没有 NFS 。

3:完全多用户模式,标准的运行级。

4:一般不用,在一些特殊情况下可以用它来做一些事情。

5:X11,即进到 X-Window 系统。

6:重新启动 (记住不要把initdefault 设置为6,因为这样会使Linux不断地重新启动)。

其中运行级3就是我们要进入的标准Console字符界面模式。

 

2.强行退出X-Window进入文本模式

打开一个终端

输入init 3

(注意init后面有一个空格)  等一会就进入了图形界面

以上方法切换后,窗口模式完全关闭.如果窗口中有文件未保存,将丢失.

(用init 5可以回到图形界面,但原来的进程已死)

 

3.不退出X-Window进入文本模式

在X-Window图形操作界面中按"Alt+Ctrl+功能键Fn"(n=1~6),就可以进入文本模式界面。这就意味着你可以同时拥有X-Window加上6个文本模式界面

按“Alt+Ctrl+F7”即可从文本模式界面回到X-Window图形操作界面。这时Linux默认打开7个屏幕,编号为tty1~tty7。

X-Window启动后,占用的是tty7号屏幕,tty1~tty6仍为字符界面屏幕。也就是说,用“Alt+Ctrl+Fn”组合键即可实现字符界面与X Window界面的快速切换。

当X-Window由于自身或应用程序而失去响应或崩溃时,我们可以非常方便地退出X-Window进入Console进行故障处理


1、如果在安装的时候你选择的默认格式是:桌面图形格式是:

ctrl+alt+f1  图形--->文本格式

alt+f7        文本格式===图形界面

2、如果在安装的时候你选择的默认格式是:文本格式

startx 即转换到图形界面

文件的两类数据:

         元数据:文件的属性

         数据:文件的内容

显示当前所在目录:

[root@bogon ~]# pwd
/root

切换目录:cd命令

  绝对路径:以根目录“/”作为起点,可以非常准确的表示一个目录或文件所在的位置,如果路径较长输入时会比较繁琐。

  相对路径:以当前工作目录作为起点,“.”表示当前工作目录,“..”表示上一级目录,“~”表示用户的宿主目录。

[root@bogon ~]# cd -    ##回到上一次的工作目录,实现两个工作目录间来回切换
/etc
[root@bogon etc]#cd -

文件通配符:

         * 匹配零个或多个字符

         ?  匹配任何单个字符

         ~  当前用户家目录

         ~username  用户家目录

         ~+  当前工作目录

         ~-  前一个工作目录

         [0-9] 匹配一个数字范围

         [a-z]   大写和小写字母

         [A-Z]   大写字母

         [wxc] 匹配列表中的任何的一个字符

         [^wxc]  匹配列表中的所有字符以外的字符

         预定义的字符类: #man 7 glob

         [:digit:]   任意数字,相当于0-9

         [:lower:]   任意小写字母

         [:upper:]   任意大写字母

         [:alpha:]   任意大小写字母

         [:alnum:]   任意数字或字母

         [:space:]   空格

         [:punct:]   标点符号

列出目录的内容或指定目录:

         ls命令:ls [options] [files_or_dirs]

                   -a     包含隐藏文件

                   -l      以长格式显示,ll

                   -R    目录递归显示

                   -d    目录和符合链接信息

                   -1      文件分行显示

                   -S     从大到小排序

      -i  显示文件索引节点

显示当前工作目录下的所以隐藏文件和目录:

[root@bogon ~]# ls -d .*
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  .cshrc  .tcshrc  .viminfo

显示当前工作目录下的所以目录:

[root@bogon var]# ls -d */ 
adm/    crash/  empty/  gopher/    lib/    lock/  mail/  opt/       run/    tmp/
cache/  db/     games/  kerberos/  local/  log/   nis/   preserve/  spool/  yp/

显示/etc 目录下,所有.conf 结尾,且以m,n,r,p 开头的文件或目录

[root@bogon log]# ll /etc/[mnrp]*.conf 
-rw-r--r--. 1 root root 5171 Jun 10  2014 /etc/man_db.conf
-rw-r--r--. 1 root root  936 Mar  6  2015 /etc/mke2fs.conf
-rw-r--r--. 1 root root 1717 May  1 05:40 /etc/nsswitch.conf
-rw-r--r--. 1 root root   82 May  1 19:24 /etc/resolv.conf
-rw-r--r--. 1 root root  458 Nov 21  2015 /etc/rsyncd.conf
-rw-r--r--. 1 root root 3232 Sep  8  2015 /etc/rsyslog.conf

 

linux文件的类型:

  -   普通文件

  d   目录文件

  b   块设备

  c   字符设备

  l   符号链接文件

  p   管道文件pipe

  s   套接字文件socket

查看文件状态:stat

[root@bogon ~]# stat anaconda-ks.cfg 
  File: ‘anaconda-ks.cfg’
  Size: 1401          Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 101877942   Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:admin_home_t:s0
Access: 2017-05-01 05:41:12.625008626 +0800    ##访问时间,读取文件内容
Modify: 2017-05-01 05:41:12.630008626 +0800    ##修改时间,改变文件内容(数据)
Change: 2017-05-01 05:41:12.630008626 +0800    ## 改变时间,元数据发生改变
 Birth: -

touch命令:创建文件和刷新时间

         touch [OPTION]... FILE...

         -a    改变atime

         -m   改变mtime

         -t     STAMP:[[CC]YY]MMDDhhmm[.ss]

         -c     如果文件不存在,则不予创建

cp命令:复制        

图片 2

         -a    归档,等同于-dr

         -b    若删除或者覆盖目标文件,将对目标文件进行备份,备份文件以备份的字符串结尾

         -d    复制符号链接

         -f     强制复制

         -h    强制cp复制符号链接。缺省值是跟随符号链接,将文件复制到符号链接指向处。

         -i      交互式模式。覆盖目标文件之前先要进行询问

         -l      建立硬链接,而非复制

         -p    源目录或者文件的属性保留

         -r    处理指定目录以及子目录

复制/root目录下所以文件到/data目录,包括隐藏文件:

[root@bogon ~]# cp -r /root/. /data/
[root@bogon ~]# ls -a /data/
.   anaconda-ks.cfg  .bash_logout   .bashrc  .tcshrc
..  .bash_history    .bash_profile  .cshrc   .viminfo

移动和重命名:mv [选项]

                   -i       交互式

                   -f       强制,如果目标文件已经存在,不会询问而直接覆盖

        -b     若需覆盖文件,则覆盖前先行备份

[root@bogon ~]# ls
anaconda-ks.cfg  file1.txt
[root@bogon ~]# mv file1.txt /data/file2.txt
[root@bogon ~]# ls /data/
file2.txt      ##将file1移动到/data目录下重命名file2

删除文件: rm [选项]... file...

                   -i:  交互式

                   -f:  强制删除

                   -r:  递归删除目录树

[root@bogon ~]# ls /data/
file2.txt  testdir
[root@bogon ~]# rm -rf /data/*
[root@bogon ~]# ll /data/
total 0      ##删除/data目录下所以文件

显示目录树: tree

         -d:  只显示目录

         -L level :指定显示的层级数目

         -P pattern:  只显示由指定pattern 匹配到的

 显示“/”目录树,只显示一层:

[root@bogon ~]# tree -L 1 /
/
├── bin -> usr/bin
├── boot
├── data
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var

创建目录:mkdir

         -p:  递归创建,且可自动创建所需的各目录;

         -v:  显示详细信息

         -m MODE:  创建目录时直接指定权限;

[root@bogon ~]# mkdir -m 700 test
[root@bogon ~]# ll
total 4
-rw-------. 1 root root 1401 May  1 05:41 anaconda-ks.cfg
drwx------. 2 root root    6 May  2 02:27 test

rmdir:删除空目录

         -p:  递归删除父空目录

         -v: 显示详细信息

链接文件:ln命令

  软连接与硬链接的区别:

    当删除源文件后,软连接将失效,但硬链接仍旧可用。

    软连接适用于文件或目录,但硬链接只可用于文件。

    软连接与原文件可以位于不同的文件系统中,但硬链接必须与原文件在同一个分区内。

   ln命令默认创建的是硬链接,创建软链接必须结合“-s”选项

[root@bogon ~]# ln -s /etc/httpd/conf/httpd.conf /etc
[root@bogon ~]# ll /etc/httpd.conf 
lrwxrwxrwx. 1 root root 26 May  2 02:47 /etc/httpd.conf -> /etc/httpd/conf/httpd.conf
[root@bogon ~]# ln  /var/log/messages /tmp/test
[root@bogon ~]# ll -h /tmp/test
-rw-------. 2 root root 574K May  2 02:46 /tmp/test

file命令:用来识别文件类型,也可用来辨别一些文件的编码格式

file [options] <filename>...

  -b 列出文件辨识结果时,不显示文件名称。

  -c 详细显示指令执行过程,便于排错或分析程序执行形

  -f 列出文件中文件名的文件类型

  -F 使用指定分隔符号替换输出文件名后默认的”:” 分隔符

  -i 输出mime 类型的字符串

  -L 查看对应软链接对应文件的文件类型

  -z 尝试去解读压缩文件的内容

  --help显示命令在线帮助

查看软连接对应文件的类型:

[root@bogon ~]# file -L /etc/httpd.conf 
/etc/httpd.conf: ASCII text

du命令:统计目录及文件的空间占用情况

  -a  统计磁盘空间占用的所以文件,而不仅仅只统计目录

  -h  以K,M单位显示

  -s  只统计某个参数所占用的空间,而不是统计每个子目录

[root@bogon ~]# du -sh /var/log/
3.3M    /var/log/
[root@bogon ~]# du -ah /boot/
4.0K    /boot/grub/splash.xpm.gz
4.0K    /boot/grub
0    /boot/grub2/themes/system
0    /boot/grub2/themes
4.0K    /boot/grub2/device.map
12K    /boot/grub2/i386-pc/acpi.mod

 

在写 filter driver 或 rootkit 时,经常需要 attach 到设备栈中的目标设备,来拦截途经的 IRP(I/O Request Packet),实现过滤功能。
首先要获悉目标设备向 Windows Object Manager 维护的全局名称空间注册的 _DEVICE_OBJECT 名,此类信息可以通过像是 WinObj.exe 的工具获取。

文件压缩及归档:

gzip命令:

  gzip[OPTION]... FILE ...

  -d  解压缩,相当于gunzip

  -c  将解压或压缩的结果输出至标准输出

  -r  递归处理,将指定目录下的所有文件及子目录一并处理

  -#  指定压缩比,#表示数字1-9

bzip2命令:

  bzip2 [OPTION]... FILE ...

  -k  压缩时保留源文件

  -d  解压缩

  -#  指定压缩比,#表示数字1-9,默认为6

  bzcat  不解压的的情况下查看文件内容

xz命令:

  xz[OPTION]... FILE ...

  -k  保留源文件

  -d  解压

  -#  指定压缩比,#表示数字1-9,默认为6

  bzcat  不解压的的情况下查看文件内容

打包压缩:

zip命令:跨平台压缩工具 

-r 处理指定目录和指定目录下的使用子目录
uzaip  解压缩

tar命令:

-c 创建.tar格式的文件
-x 解开.tar格式的文件
-f 使用归档文件
-v 显示详细信息
-t 查看包内文件
-j 使用baip2程序
-z 使用gzip程序
-p 打包时保留文件及目录的权限
-P 打包时保留文件及目录的绝对路径
-C 释放的目的地

打包:
对文件和目录打包和压缩(c)
tar -cf file.tar file
tar -czf file.tar.gz file
tar -cjf file.tar.bz2 file
查看包内容(t)
a.tar-------->tar -tf a.tar
a.tar.gz---->tar -tzf a.tar.gz
a.tar.bz2-->tar -tjf a.tar.bz2
对文件和目录解包(x)
tar -xf file.tar -C 路径
tar -xzf file.tar.gz -C 路径
tar -xjf file.tar.bz2 -C 路径

cpio命令:存取归档包中的文件

  -o    将文件拷贝打包成文件或者将文件输出到设备上
  -i   解包,将打包文件解压或将设备上的备份还原到系统
  -t   预览,查看文件内容或者输出到设备上的文件内容
  -v   显示打包过程中的文件名称。
  -d   解包生成目录,在cpio还原时,自动的建立目录
  -c   一种较新的存储方式

接着调用 ObReferenceObjectByName(),该函数把获取的目标对象地址存储到它的最后一个参数(指针)中,然后返回给调用者。
实战时我们会发现,引用 _DRIVER_OBJECT 几乎总是成功;而引用 _DEVICE_OBJECT,则不一定会成功,返回的 NTSTATUS 状态码一般以两种居多:

1 C0000022(STATUS_ACCESS_DENIED)
2 C0000024(STATUS_OBJECT_TYPE_MISMATCH)

 

第一种情况通常是由于创建目标 _DEVICE_OBJECT 时指定的 session id 与当前的 session id 不一致,或者目标对象持有特殊的安全访问令牌/安全属性,所以我们无法以常规方式获取,而且这种错误频繁出现在 IoGetDeviceObjectPointer() 调用时,偏偏多数讲过滤驱动和 rootkit 的书籍都用 IoGetDeviceObjectPointer() 作为示例代码的一部分,真是有点误人子弟的意味。

第二种情况普遍出现在通过 ObReferenceObjectByName() 引用某些 _DEVICE_OBJECT 的场景中,缘由与 ObReferenceObjectByName() 利用其它执行体组件例程,在全局名称空间中执行的名字查找逻辑密切相关,后面会解释。

需要指出,既然通过 ObReferenceObjectByName() 引用绝大多数 _DRIVER_OBJECT 都会成功,而且 _DRIVER_OBJECT.DeviceObject 又指向该驱动创建的设备链中第一个 _DEVICE_OBJECT,那么这就是最稳当的方法。不过我们还是要知道 STATUS_OBJECT_TYPE_MISMATCH 的原因。

 ObReferenceObjectByName() 是一个未公开的例程,在 MSDN 中没有文档描述,另一方面,包含的 ntddk.h 或 wdm.h 头文件中也没有相关原型声明;

但是内核映像 ntoskrnl.exe 和其它的版本,的确导出了它的符号,换言之,我们只需要告诉链接器把这个函数名作为外部符号来解析即可。
此外,ObReferenceObjectByName() 的第五个参数也是一个未文档化的数据类型(POBJECT_TYPE),所以相关的声明是必须的,如下图所示:

 

图片 3

—————————————————————————————————————————————————————————————

请注意,我们声明了一个指向类型“POBJECT_TYPE”的指针——IoDeviceObjectType——而“POBJECT_TYPE”自身又是指向类型“OBJECT_TYPE”的指针,所以在传入第五个参数时,一定要谨慎,使用操作符 “*” 解引 IoDeviceObjectType,才会与它的形参类型(POBJECT_TYPE)匹配,否则会导致 ObReferenceObjectByName() 失败,干扰我们对返回的 NTSTATUS 原因判断!

 

假设我们自己的驱动要获得“DeviceQQProtect”对应的 _DEVICE_OBJECT 指针,然后检查返回的 NTSTATUS 状态码,如下图所示:

(“DeviceQQProtect”是与即时通信软件 QQ 一同安装的两个过滤驱动之一:QQProtect.sys 创建的设备对象名,
它也是我们稍后的 IRP Dispatch Routine Hook 实验目标!)

 

本文由澳门新葡亰手机版发布于操作系统,转载请注明出处:linux目录结构及文件管理,Linux的图形模式和文本

上一篇:新建账户之间的连接,常见的linux命令及其翻译 下一篇:没有了
猜你喜欢
热门排行
精彩图文