OracleOCP认证 之 Linux基础

Posted ✧*꧁一品堂.技术学习笔记꧂*✧.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OracleOCP认证 之 Linux基础相关的知识,希望对你有一定的参考价值。

 

  Linux 基础

一、SHELL



1: Shell 简介

shell 是用户和Linux 操作系统之间的接口。Linux 中有多种shell, 其中缺省使用的是bash。
Linux 系统的shell 作为操作系统的外壳为用户提供使用操作系统的接口,它是一个命令语言解释器,拥有自己内建的shell 命令集。shell 也能被系统中其他应用程序所调用,用户在提示符下输入的命令都由shell 先解释然后传给Linux 核心。
Linux 中的shell 有多种类型,其中最常用的几种是Bourne shell(sh),C shell(csh) 和Korn shell(ksh)。
Redhat Linux 系统默认的shell 是bash,对普通用户用$作提示符,对超级用户root 用#作提示符,一旦出现了shell 提示符就可以键入命令名称及命令所需要的参数。

image

在系统中,人所输入到系统内部的命令,以字符类型的形式输入到系统当中,然而系统 只识别 2 进制码,就如以前 doc 界面为例,输入的都是字符类的英文字母作为输入的命令代 码,然而明显二进制码与我们平常所输入的命令式不一样的,就像语言不通的两个人,需要 进行翻译。

      1:基本上 shell 分两大类:

         1) 图形界面 shell(Graphical User Interface shell 即 GUI shell)

     例如: 应用最为广泛的 Windows Explorer (微软的 windows 系列制作系统),还有也包括广 为人知的 Linux shell,其中 linux shell 包括 X window manger (BlackBox 和 FluxBox),以及 功能更强大的 CDE、GNOME、KDE、 XFCE。

         2) 命令行式 shell(Command Line Interface shell ,即 CLI shell)

     例如: 

  •     bash / sh / ksh / csh(Unix/linux 系统)
  •     cmd.exe/ 命令提示字符(Windows NT 系统)
  •     Windows PowerShell(支援 .NET Framework 技术的 Windows NT 系统)
  •     传统意义上的 shell 指的是命令行式的 shell,以后如果不特别注明,shell 是指命令行式 的 shell。




2:Shell 控制台使用方法

       首先介绍一个名词“控制台console ”,它就是我们通常见到的使用字符操作界面的人机接口。例如dos。我们说控制台命令就是指通过字符界面输入的可以操作系统的命令。例如dos 命令就是控制台命令。我们现在要了解的是基于Linux 操作系统的基本控制台命令。
        Linux 是一个真正的多用户操作系统,这表示它可以同时接受多个用户登录。Linux 还允许一个用户进行多次登录,这是因为Linux和许多版本的UNIX 一样提供了“虚拟控制台”的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统直接相连的监视器和键盘)进行多次登录。
虚拟控制台的选择可以通过按下 Alt 键和一个功能键来实现,通常使用F1-F6。例如用户登录后按一下Alt-F2 键,用户又可以看到"login:"提示符,说明用户看到了第二个虚拟控制台,然后只需按Alt-F1 键就可以回到第一个虚拟控制台。一个新安装的Linux 系统允许用户使用Alt-F1 到Alt-F6 键来访问前六个虚拟控制台



二:常用命令使用


1:登录和退出 Linux 系统

     用户登录系统时,为了使系统能够识别自己,必须输入用户名和密码,经系统验证无误后方能进入系统。

image

       1: 启动和登录系统

image

image

image

       2: 重启系统

image

       3:关闭系统

image

image

       4:关机示例

image








三、Linux 文件与目录管理

   (一)、目录树

在 Linux 底下,所有的文件与目录都是由根目录开始的。根目录是所有目录与文件的源头,再一个一个的分支下来,有点像是树枝状。因此,我们也称这种目录配置方式为:『目录树(directory tree)』。

  他主要的特性有:

  •   目录树的启始点为根目录 (/, root);
  • 每一个目录不止能使用本地端的 partition 的文件系统,也可以使用网络上的 filesystem 。(NFS)

如果我们将整个目录树以图标的方法来显示,并且将较为重要的文件数据列出来的话,那么目录树架构有点像这样:

image


      


(二)、绝对路径与相对路径

           除了需要特别注意的 FHS 目录配置外,在文件名部分我们也要特别注意喔!因为根据档名写法的不同,也可将所谓的路径(path)定义为绝对路径(absolute)与相对路径(relative)。

1. 绝对路径

大家都知道,在我们平时使用计算机时要找到需要的文件就必须知道文件的位置,而表示文件的位置的方式就是路径。绝对路径就是文件或目录在硬盘上真正的路径。 绝对路径名称表示的文件在文件系统里面唯一的名称。

例如,只要看到这个路径:"D:\\ORACLE\\OCP.doc"我们就知道"OCP.doc"文件是在 D 盘的"ORACLE"目录中。类似于这样完整的描述文件位置的路径就是绝对路径。在 linux 里面一样,/study/oracle/ocp/test.txt 通过这个目录呢我们就可以知道 test.txt 在根目录(/)下的 study 子目录下的 oracle 目录。我们可以用 cd /study/oracle/ocp 通过这个绝对路径的方式去查看到这个文件。

2. 相对路径

     相对路径是一个相对性的对于绝对路径来说的。绝对路径其实可以这么理解,既然我们在目录下,我要去到本目录下的其他子目录可以直达其他子目录的名字,而不需要经过本目录的再回到你想要的目录里面。比如说:我现在在/opt 下。然后/opt 下有个 oracle 目录,也就是说我现在的绝对目录是在/opt/oracle 下。然而,在/opt 下也有一个 ocp 目录就是说 ocp 绝对路径是/opt/ocp。那么我现在已经在/etc 目录下了。然而我们就可以同 cd ocp 去到同在/etc 下的 ocp 而不需要打入常常的一条/etc/ocp 的绝对路径去进入了。


image

(三)、Linux 目录结构

  1. FHS

    因为利用 Linux 来开发产品或 distributions 的社群/公司与个人实在太多了, 如果每个人都用自己的想法来配置文件放置的目录,那么将可能造成很多管理上的困扰。

    因此制订了 Filesystem Hierarchy Standard (FHS)文件系统层次标准。

    根据 FHS(http://www.pathname.com/fhs/)的官方文件指出, 他们的主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下, 所以他们希望独立的软件开发商、操作系统制作者、以及想要维护系统的用户,都能够遵循 FHS 的标准。 也就是说,FHS 的重点在于规范每个特定的目录下应该要放置什么样子的数据而已。 这样做好处非常多,因为 Linux 操作系统就能够在既有的面貌下(目录架构不变)发展出开发者想要的独特风格。

    事实上,FHS 是根据过去的经验一直再持续的改版的,FHS 依据文件系统使用的频繁与否与是否允许使用者随意更动, 而将目录定义成为四种交互作用的形态,用表格来说有点像底下这样:

image

      可分享的:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据,是能够分享给网络上其他主机挂载用的目录;

     不可分享的:自己机器上面运作的装置文件或者是与程序有关的 socket 文件等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了。

     不变的:有些数据是不会经常变动的,跟随着 distribution 而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;

     可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。事实上,FHS 针对目录树架构仅定义出三层目录底下应该放置什么数据而已,

        分别是底下这三个目录的定义:

  • / (root, 根目录):与开机系统有关;
  • /usr (unix software resource):与软件安装/执行有关;
  • /var (variable):与系统运作过程有关。

2. Linux 重要的目录


image

image

3. Linux 中比较特殊的目录

  在 Linux 当中也是非常重要的目录:

image

image

4. 两个非常重要的目录 

1) /usr 的意义与内容:

        很多读者都会误会/usr 为 user 的缩写,其实 usr 是 Unix Software Resource 的缩写, 也就是『Unix 操作系统软件资源』所放置的目录,而不是用户的数据啦!这点要注意。 FHS 建议所有软件开发者,应该将他们的数据合理的分别放置到这个目录下的次目录,而不要自行建立该软件自己独立的目录。

      因为是所有系统默认的软件(distribution 发布者提供的软件)都会放置到/usr 底下,因此这个目录有点类似 Windows 系统的『C:\\Windows\\ + C:\\Program files\\』这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘容量。 一般来说,/usr 的次目录建议有底下这些:

image


2) /var 的意义与内容:

   如果/usr 是安装时会占用较大硬盘容量的目录,那么/var 就是在系统运作后才会渐渐占用硬盘容量的目录。

    因为/var 目录主要针对常态性变动的文件,包括缓存(cache)、登录档(log file)以及某些软件运作所产生的文件,

    包括程序文件(lock file, run file),或者例如 mysql 数据库的文件等等。常见的次目录有:

image

 

四:有关目录的命令

1. 查看帮助  man cd

  1 [root@oracle ~]# man cd //查看 cd 指令的帮助文档

 

2. 显示当前工作目录   pwd

  1 [root@oracle ~]# pwd
  2 /root

3. 列出当前目录下的内容:ls

  1 [root@oracle ~]# ls [-aAdfFhilnrRSt] 目录名称
  2 [root@oracle ~]# ls [--color={never,auto,always}] 目录名称
  3 [root@oracle ~]# ls [--full-time] 目录名称
  4 选项与参数:
  5 -a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
  6 -A :全部的文件,连同隐藏档,但不包括 . 与 .. 这两个目录
  7 -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
  8 -l :长数据串列出,包含文件的属性与权限等等数据;(常用)(ll)
  9 -n :列出 UID 与 GID 而非使用者与群组的名称 (UID 与 GID 会在帐号管理提到!)
 10 -r :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小;
 11 -R :连同子目录内容一起列出来,等於该目录下的所有文件都会显示出来;
 12 -S :以文件容量大小排序,而不是用档名排序;
 13 -t :依时间排序,而不是用档名。
 14 --color=never :不要依据文件特性给予颜色显示;
 15 --color=always :显示颜色
 16 --color=auto :让系统自行依据配置来判断是否给予颜色
 17 --full-time :以完整时间模式 (包含年、月、日、时、分) 输出

4. 切换目录 cd

  1 [root@oracle ~]# cd / //切换到根目录

5. 创建目录 mkdir

  1 [root@oracle ~]# mkdir oracle //在当前目录下创建 oracle 目录
  2 选项与参数:
  3 -m :对新建目录设置存取权限,也可以用 chmod 命令设置
  4 -p :可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将
  5 自动建立好那些尚不存在的目录,即一次可以建立多个目录(级联创建)
  6 [root@oracle ~]# mkdir -p study/oracle/OC{A,P,M}
  7 //在当前目录下创建 study 目录,在 study 目录下创建 oracle 目录,oracle 目录下创建
  8 OCA、OCP、OCM 目录


6. 删除目录 rmdir

  1 [root@oracle ~]# rmdir oracle //删除 oracle 目录

7. 创建文件 touch

  1 [root@oracle ~]# touch oracle //创建名为 oracle 的文件

8. 删除文件/目录 rm

  1 [root@oracle ~]# rm oracle //删除名为 oracle 的文件
  2 选项与参数:
  3 -i :删除前逐一询问确认。
  4 -f :即使原档案属性设为唯读,亦直接删除,无需逐一确认。
  5 -r :将目录及以下之档案亦逐一删除。
  6 [root@oracle ~]# rm *.log //删除所有以“.log”结尾的文件
  7 [root@oracle ~]# rm -rf oracle/ //删除 oracle 目录并级联删除 oracle 目录内的档案

9. 移动文件/目录  mv

  1 [root@oracle ~]# mv oracle /opt //将档案 oracle 移动至目录/opt 下

10. 拷贝文件/目录  cp

  1 [root@oracle ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
  2 [root@oracle ~]# cp [options] source1 source2 source3 .... directory
  3 选项与参数:
  4 -a :相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
  5 -d :若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
  6 -i :若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
  7 -p :连同文件的属性一起复制过去,而非使用默认属性(备份常用);
  8 -r :递回持续复制,用於目录的复制行为;(常用)
  9 最后需要注意的,如果来源档有两个以上,则最后一个目的档一定要是『目录』才行!

11. 打开文件  more   less  tail  cat

  1 [root@oracle ~]# more oracle.log
  2 [root@oracle ~]# less oracle.log
  3 [root@oracle ~]# tail -20f oracle.log //文件尾部输出
  4 [root@oracle ~]# cat oracle.log

五、用户和组


(一)、用户

image

         1. UID 和 GID

      Linux 是通过 UID(USER ID)和 GID(GROUP ID)来识别用户的。账号只是为了方便用户记忆。而 ID 与账号的对应就在 /etc/passwd 当中。登录 Linux 时,Linux 都干了些啥?

           1) 先找寻 /etc/passwd 里面是否有这个账号?如果没有则跳出,如果有的话则将该账号对应的 UID ( User ID )与 GID ( Group ID )读出来,另外,该账号的家目录与 shell 设定也一并读出;

           2) 再来则是核对密码表啦!这时 Linux 会进入 /etc/shadow 里面找出对应的账号与 UID,然后核对一下你刚刚输入的密码与里头的密码是否相符? 3) 如果一切都 OK 的话,就进入 Shell 控管的阶段啰!        

         2. /etc/passwd和/etc/shadow

                  1) 用户账号信息文件  /etc/passwd

                这个档案的构造是这样的:每一行都代表一个账号, 有几行就代表有几个账号在你的系统中!

               不过需要特别留意的是, 里头很多账号本来就是系统中必须要的,我们可以简称他为系统账号, 例如 bin, daemon, adm, nobody 等等,这些账号是系统正常运作时所需要的。


  1 root:x:0:0:root:/root:/bin/bash
  2 bin:x:1:1:bin:/bin:/sbin/nologin
  3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
  4 adm:x:3:4:adm:/var/adm:/sbin/nologin

image

                   image

image

改变用户ID 的实验:

  1 root@linux ~]# vi /etc/passwd
  2 .....(前面省略).....
  3 dmtsai:x:501:501::/home/dmtsai:/bin/bash <==将原本的501:501 改成3000:501
  4 [root@linux ~]# ls -ld /home/
  5 drwxr-xr-x 3 501 dmtsai 4096 Aug 30 10:37 dmtsai
  6 # 瞧!这里就能够知道,其实档案记录的是UID 啦~

                  2) 用户口令信息文件  /etc/shadow


               上面约略提到,由于每个程序都需要取得uid 与gid 来判断权限的问题,所以, /etc/passwd 的权限必须要设定成为只读的权限。在这样的情况下,即使这个档案内的密码 栏是加密的,坏心肠的朋友也可能利用暴力破解法去找出您的密码数据...... 因为这样的 关系,所以后来发展出将密码移动到/etc/shadow 这个档案分隔开来的技术。

  1 root:$1$i9Ejldjfjio389u9sjl$jljsoi45QE/:12959:0:99999:7:::
  2 bin:*:12959:0:99999:7:::
  3 daemon:*:12959:0:99999:7:::
  4 adm:*:12959:0:99999:7:::

              基本上, shadow 同样以『:』作为分隔符,共有九个字段。   

imageimage

image

image


 

(二)、组


          1. /etc/group和/etc/gshadow

image

也是以冒号『:』作为字段的分隔符,共分为四栏,每一字段的意义是:

image

比较重要的特色在于第四栏啦,因为每个使用者都可以拥有多个支持的群组, 这就好 比在学校念书的时候,我们可以加入多个社团一样! ^_^。不过这里您或许会觉得奇怪的, 那就是:『假如我同时加入多个群组, 那么我在作业的时候,到底是以那个群组为准?』底 下我们就来谈一谈这个『有效群组』的概念。

         2. 有效群组(effective group)与初始群组(initial group)


还记得每个使用者在他的/etc/passwd 里面的第四栏有所谓的GID 吧?那个GID 就 是所谓的『初始群组( initial group ) 』了!也就是说,当使用者一登入系统,立刻就 拥有这个群组的相关权限的意思。举例来说,我们上面提到dmtsai 这个使用者的 /etc/passwd 与/etc/group 还有/etc/gshadow 相关的内容如下:

image

             仔细看到上面这个表格,在/etc/passwd 里面,dmtsai 这个使用者所属的群组为 GID=501 , 也就是/etc/group 里头dmtsai 那个群组啦~因为这是initial group ,所 以, 使用者一登入就会主动取得,不需要在/etc/group 的第四个字段写入该账号的! 但 是非initial group 的其它群组可就不同了。
            举上面这个例子来说,我将dmtsai 加入users 这个群组当中,由于users 这个群组 并非是dmtsai 的初始群组,因此, 我必须要在/etc/group 这个档案中,找到users 那 一行,并且将dmtsai 这个账号加入第四栏,这样dmtsai 才能够支持users 这个群组啊。 那么在这个例子当中,因为我的dmtsai 这个账号同时支持dmtsai 与users 这两个群组, 因此,在读取/写入/执行档案时,针对群组部分,只要是users 与dmtsai 这两个群组拥 有的功能, 我dmtsai 这个使用者都能够拥有喔!这样瞭呼?不过,这是针对已经存在的 档案而言, 如果今天我要建立一个新的档案或者是新的目录,请问一下,新档案的群组是 dmtsai 还是users ? 呵呵!这就得要检查一下当时的有效群组了(effective group)。
如果我以dmtsai 这个使用者的身份登入后,该如何知道我所有支持的群组呢? 很简单啊, 直接输入groups 就可以了!

  1 实验:
  2 [root@oracle etc]# groupadd test
  3 [root@oracle etc]# groupadd test1
  4 [root@oracle etc]# useradd test -g test -G test1
  5 [root@oracle etc]# grep test /etc/passwd /etc/group /etc/gshadow
  6 [root@oracle etc]# su - test
  7 [test@oracle ~]$ groups
  8 test test1



(三)、有关用户和组的指令


          1. 添加用户useradd

image

         2. 修改用户usermod

image


         3. 修改密码passwd

image

       先来谈一谈上面的两个范例。要注意的是, passwd 这个指令由于使用者的身份而有两 种用法, 如果是root ,由于root 具有至高无上的权力,所以root 可以利用passwd [username] 来帮使用者修改他们的密码!因此,『如果使用者的密码不见了, root 是可以 帮他们进行密码的修改,而不需要知道旧密码。』 另外,也只有root 可以随便设定密码,即使该密码并不符合系统的密码验证要求~ 假 如我帮dmtsai 建立的密码太简单,所以其实系统是『警告』过root 的。但在重复输入 两次密码后,嘿嘿!您还是会看到successfully 这个成功的字样呢! 那么如果是一般身 份使用者,或者是root 想要修改自己的密码时,直接输入『passwd 』, 就能够修改自己 的密码了。一般身份使用者输入的密码会经过系统的验证, 验证的机制除了 /etc/login.defs 里头规定的最小密码字符数之外,还会受到/etc/pam.d/passwd 这个 PAM 模块的检验呢!一般来说,您输入的密码最好要符合底下的要求:

  • 密码不能与账号相同;
  • 密码尽量不要选用字典里面会出现的字符串
  • 密码需要超过8 个字符;


     如果无法经过验证,那么该密码就不被接受,当然还是只能使用旧密码啰! 此外,仅 能接受三次密码输入,如果输入的密码都不被接受,那只好....重新执行一次passwd 啊! 而, 经过这个passwd [username] 的动作后,您的账号就会有密码啰,此时, 如果察看 一下/etc/shadow ,你就会知道密码内容被改过啰~ ^_^


  1 实验:
  2 [root@oracle etc]# passwd test
  3 Changing password for user test.
  4 New UNIX password:
  5 BAD PASSWORD: it is too short
  6 Retype new UNIX password:
  7 passwd: all authentication tokens updated successfully.
  8 [test@oracle ~]$ passwd
  9 Changing password for user test.
 10 Changing password for test
 11 (current) UNIX password:
 12 New UNIX password:
 13 BAD PASSWORD: it is based on a dictionary word
 14 New UNIX password:
 15 BAD PASSWORD: it is based on a dictionary word
 16 New UNIX password:

         4. 删除用户Userdel

image


               这个指令下达的时候要小心了!通常我们要移除一个账号的时候,你可以手动的将 /etc/passwd 与/etc/shadow 里头的该账号取消即可!一般而言,如果该账号只是『暂时 不启用』的话,那么将/etc/shadow 里头最后倒数一个字段设定为0 就可以让该账号无法 使用,但是所有跟该账号相关的数据都会留下来! 使用userdel 的时机通常是『你真的 确定不要让该用户在主机上面使用任何数据了!』另外,其实使用者如果在系统上面操作过 一阵子了,那么该使用者其实在系统内可能会含有其它档案的。

         5. 显示用户所属的组groups

image

         6. 创建组groupadd

image

         7. 修改组groupmod


image

         8. 删除组groupdel

image

         9. 显示用户信息id

image




六、权限


(一)、三种用户

    • 档案所属用户user u
    • 档案所属组group g
    • 其他人other o

    •      用户组就是用户存在的组,一个用户可以存在一多个组里面,而且用户已生成之后,系 统默认给予他一个私有组。 组的话,就是可以说成一个公司的项目一样,我公司通过派遣一个组去进行一个项目的 操作,当然啦,项目里面有很多个项目人员进行对项目的一个处理。这个就等于我们的在用 户里面的组一样,各个用户可以通过拥有组的权限对项目进行一个管理,而且只有组里面的 人才可以对项目进行修改的。这样的组就作用了。方便我们去管理。
      其他人就是组与文件拥有者之外的用户。


(二)、三种基本权限

image

     读:r 写:w 可执行:x
目录只有可执行操作的话,只可以进入目录,而不可以对目录进行一个信息的查询,也就是 不能用ll 命令查看。 目录只有读的操作,就只可以ll 指定目录,对目录里面的东西进行查看,而不可以进入目 录。
实验:

  1 [root@oracle tmp]# chmod o=rw a
  2 [test@oracle tmp]$ cd a
  3 -bash: cd: a: Permission denied

只有读与可执行的操作才可以对目录进行cd 或者ll 的操作

image




(三)、有关权限的指令


          1. chmod


通过线索来理解
who : u g o
what: - + =
which: r w x
字符法修改:
chmod u+r dir
g+r
o+r
u-r
g-r
o-r
如此类推
数值法:
r=4
w=2
x=1
比如说一个文件里面的权限是rwxrwxr-x 那么它的权限数值就等于775(4+2+1=7 4+2+1=7
4+0+1=5)
如chmod 775 dir

          2. chown


chown 修改文档的拥有者。
如:语法:
chown username(用户名) dir\\file 修改单个目录或文档的
chown -R username dir 对目录里面的东西可以进行一个递归的修改,也就是说该目录下的
文件的拥有者也一样修改成username
chown username:groupname dir\\file 同时修改该目录或者改文档下的拥有者与拥有组。

          3. chgrp


chgrp :修改文档的拥有组。
语法:
chgrp groupname file\\dir

(四)、特殊权限


          1:特殊权限:


suid(setuid)强制位    -----》加在可执行文件上面
guid(setgid)强制位   -----》加在可执行文件上面
sticky(冒险位)           -----》加在目录上面

文件有读写执行权限以外,ext3 文件系统还支持强制位(setuid 和setgid)与冒险位(sticky) 的特别权限。针对u,g,o,分别有set uid,set gid,及sticky。 强制位与冒险位添加在执行权限的位置上。如果该位置上原已有执行权限。则强制位与冒险 位以小写字母的方式表示,否则,以大写字母表示。 set uid 与set gid 在u 和g 的x 位置上各采用一个s,sticky 使用一个t。

image

         2:Linux 强制位对文件的作用:


         在可执行文件上,用户可以添加set uid 和set gid。 默认情况下,用户执行一个指令,会以该用户的身份来运行进程。 指令文件上的强制位,可以让用户执行的指令,以指令文件的拥有者或所属组的身份运行进程。/bin/ping /usr/bin/passwd 默认情况下,用户建立的文件属于用户当前所在的组。 目录上设置了setgid,表示在此目录中,任何人建立的文件,都会属于目录所属的组。

实验:

  1 [root@oracle ~]# cd /usr/bin/
  2 [root@oracle bin]# ls -l passwd
  3 -r-s--x--x 1 root root 21200 Oct 7 2006 passwd
  4 [root@oracle bin]# chmod u-s passwd
  5 [test@oracle ~]$ passwd
  6 Changing password for user test.
  7 Changing password for test
  8 (current) UNIX password:
  9 passwd: Authentication token manipulation error


         3:Linux 冒险位对目录作用


默认情况下,如果一个目录上有w 和x 权限,则任何人可以在此目录中建立与删除文件。 一旦目录上设置了冒险位,则表示在此目录中,只有文件的拥有者、目录的拥有者与系统管 理员可以删除文件。

  1 实验:
  2 [root@oracle tmp]# chmod 1777 a
  3 [test@oracle a]$ touch b
  4 [test@oracle a]$ chmod 777 b
  5 [test@oracle a]$ rm -rf c
  6 rm: cannot remove `c\': Operation not permitted
  7 
  8 [oracle@oracle a]$ touch c
  9 [oracle@oracle a]$ ll
 10 total 0
 11 -rw-rw-r-- 1 test test 0 Mar 7 23:30 b
 12 -rw-r--r-- 1 oracle oinstall 0 Mar 7 23:30 c
 13 [oracle@oracle a]$ vim b
 14 [oracle@oracle a]$ chmod 777 c
 15 [oracle@oracle a]$ vim b
 16 [oracle@oracle a]$ rm b
 17 rm: cannot remove `b\': Operation not permitted


/tmp

          4:通过字符的方式添加到目录或文件里的权限方法:


通过加入suid
chmod u+s dir/file
加入sgid
chmod g+s dir/file
加入sticky
chmod o+t dir/file
强制位与冒险位的数值表示:
suid=4 sgid=2 sticky=1
通过数值的方式加入权限
如:我要把suid,就是4 加入到权限为775 的dir 里面
我可以通过
chmod 4775 dir(4 就是强制位suid)
如此类推:
chmod 2775 dir (就把2 的强制位guid 加入到dir 里面)
chmod 1775 dir (就把1 的冒险位sticky 加入大dir 里面)
组合加入的话一样与权限的775 一样,就是三个权限加起来的和,比如说我要对dir 加入强
制位suid 与冒险位sticky ,那么guid 就为0 了因为我不加入sgid。所以我要加入的数值是
5775 如此类推



七、VIM


1: vim工作模式

vim 可以执行输出、删除、查找、替换等文本操作,vim 不是一个排版程序,它不象 word 那样对字体、格式、段落等其它属性进行编排,它只是一个文本编辑程序。vim 没有菜单,只有命令,且命令繁多。

vim 有三种基本工作模式,命令模式、文本输入模式和末行模式。

2:vim 启动与退出

vim

vi filename

vi +n filename(将光标置于文件的第 n 行)

末行模式下:

--退出

:q 

--保存退出

:wq 

--保存退出

:x (:wq)

--强制退出。

:q!

--

Z

Z (:wq)

:n,m w filename

:w

:w filename

3:光标移动

使用键盘上的四个方向键移动光标,还可以使用 hjkl 这四个键

代替四个方向键移动光标

0(零)光标移动行首

$光标移动行尾

H 光标移动屏幕上显示的第一行(不是文件头)

L 光标移到屏幕上显示的最后一行(不是文件尾)

M 光标移到屏幕的中间一行

nG 光标移到第 n

n 光标移到文件的第 n

$光标移到文件的最后一行

0 光标移到第一行

gg 光标移到文件头

G 光标移到文件尾

n 回车 光标移动 n

ctrl+G 显示当前编辑文档的状态


4:文本插入

如果用户要将输入的字符当作文本内容,则首先将工作模式从命

令模式切换到输入模式。

I i A a O o

5:文本删除

  1 X 删除光标前面的那个字符
  2 
  3 x 删除光标处的字符
  4 
  5 
  6 dd 删除光标所在的整行
  7 
  8 ndd 删除当前行及其后 n-1 行
  9 
 10 D 或 d$删除从光标所在处开始到行尾的内容
 11 
 12 d0 删除从光标前一个字符开始到行首的内容
 13 
 14 dG 删除所有内容
 15 
 16 dgg	删除当前行的内容
 17 
 18 ndgg 删除当前行前及 n 行
 19 
 20 :d 删除当前行
 21 
 22 :nd 删除第 n 行
 23 
 24 :n, md 删除 n 至 m 行内容
 25 
 26 删除空行
 27 
 28 :g/^\\s*$/d
 29 
 30 删除行尾空格
 31 
 32 :%s/\\s*$//g
 33 
 34 删除行首空格
 35 
 36 :%s/^\\s\\+//g
 37 


6:文本复制

yy 复制光标所在的整行

nyy 复制当前行及其后 n-1

y$ 复制行的剩余部分

:n copy n

:n,m copy n


7:文本移动

:n move n

:n,m move n

8:文本粘贴

p P


9:文本撤销

u 把当前行恢复成被编辑前的状态,不管行被编辑多少次

U 只能取消前一步操作

10:重复

.再次执行一次前面刚完成的某个命令


11:文本保存

:w

:w file name

:w >>file

:n,m w >> file

:n,m w file

12:文本查找

/从光标当前所在位置向文件尾部搜索

? 从光标当前所在位置向文件头部搜索

n 搜索下一个匹配

N 搜索上一个匹配

如果用户在所要搜索的关键字包含特殊字符,需要用\\作为特殊

字符进行转译,以取消特殊字符的功能。如/man\\.


13:文本替换

:s/查找的内容/替换的内容 当前行的第一个单词

:s/查找的内容/替换的内容/g 对当前行全局替换

:n,ms/查找的内容/替换的内容

:n,ms/查找的内容/替换的内容/g

:1,$s/查找的内容/替换的内容/g

:%s/查找的内容/替换的内容/g

过滤条件:

:g/过滤条/s/查找的内容/替换的内容/g

14:读入文本

:n read file name


15:文本加密

:(大写)


16:块操作

vim 的命令模式下使用V键,可以激活以行为单位的块选择方

式,光标经过的地方,就是被选中的内容。用户还可以在 vim 的命令

行模式内激活以指定长方形或正方形的选择内容,使用 ctrl+v




0 这是数字『0 』:移动到这一行的最前面字符处
$ 移动到这一行的最后面字符处
G 移动到这个档案的最后一行
nG n 为数字。移动到这个档案的第n 行。例如20G 则会移动到这个档案的第
20 行(可配合:set nu)
gg 移动到这个档案的第一行,相当于1G 啊!
n<Enter> n 为数字。光标向下移动n 行
/word 向光标之下寻找一个字符串名称为word 的字符串。例如要在档案内搜寻
vbird 这个字符串,就输入/vbird 即可!
:n1,n2s/word1/word2/g
n1 与n2 为数字。在第n1 与n2 行之间寻找word1 这个字符串,并将该
字符串取代为word2 !举例

以上是关于OracleOCP认证 之 Linux基础的主要内容,如果未能解决你的问题,请参考以下文章

Oracle OCP考试及获取OCP证书的方法(经验与坑)

OCP认证有啥用?

Linux之SSH密钥认证

linux基础命令之命令帮助

Java语言基础之方法的设计

JSP编程专题1之JSP基础