Linux_第1章 Linux入门

1 Linux入门

首先要感谢《鸟哥的linux私房菜》这本书,这本书对新手来说,是很好得老师,也感谢师兄郑丹,抽出时间为我们讲解它得心得,让我们学习linux起来事半功倍。希望我得总结能给广大网友们一点帮助,我想这也符合linux开源得精神。

1    Linux的特点

优点:开源、安全性、多用户多任务、稳定、消耗资源较少

缺点:应用程序相对较少,图形化界面不是很理想

坚持命令行:因为xwindows会消耗很多的内存 

 

2   常用命令

2.1      杂项

1.         日期:   date

2.         日历:   cal

3.         计算器:bc

4.         中断目前程序: Ctrl + c

5.         退出:q  

6.         命令与文件补全: [Tab]

7.         清屏: clear

8.         进入XWindows startx

9.         查找某命令的位置:which Command

10.     打包:tar    cf  tvf  xf  rf   -f--delete

11.     压缩:gzip 

12.     解压缩:gunzip

13.     管道:  |

14.     输出重定向    >(覆盖)     >>(追加)

15.     新建文件:vi  touch  或者使用管道

16.     在搜索中使用正则表达式  |grep -i ****

17.     添加组:groupadd

18.     添加用户:useradd(可以输入userTAB键查看关于user的所有命令)

19.     shell编程: shell程序的后缀名是 .sh  ,运行时输入:sh ***.sh

20.     系统运行文件: proc

21.     改变用户:su username              su   (是转为超级用户)

22.     安装卸载等系统程序:rmp  E(卸载) q  查询 

23.     查看系统启动时启动的服务:setup

24.     查看系统已经启动的服务:service

25.     关于redhat系统的命令:redhatTAb 查询

26.     查看该目录下的占用硬盘空间:du -k

27.     查询硬件信息:dmsg

28.     在线求助:man infoLinux 系统中的说明文件汇集目录: /usr/share/doc

man page通常是放在/usr/share/man 里头(不同的版本可能有点差异性)不过,我们可以修改它的 man page 搜寻路径来改善这个目录的问题!修改 /etc/man.config ( 有的版本为 man.conf )

info:在这个info page 里面,你可以输入 p n 往前及往后翻页,如果看到『 * text :』的项目时,将光标移到该项目上面,按下『Enter』还可以进入次页面的说明画面中!

2.2 关于目录和文件

1.         改变所属群组:chgrp 

要改变成为的群组名称必须要在 /etc/group 里面存在的名字才行

语法:   chgrp 群组名称 文件或目录 

范例:[root@test root]# chgrp  users  tmp

2.         改变所属人: chown   

就是在 /etc/passwd 这个文件中有记录的使用者名称才行改变

语法:   chown  账号名称 文件或目录

chown [ -R ] 账号名称:群组名称 文件或目录

范例:   [root@test root]# chown test tmp

[root@test root]# chown R root:root tmp

       备注:    R是指递归对目录操作,下同。

3.         改变文件的属性、 SUID 、等等的特性:chmod

1     数字类型改变文件权限

语法: chmod [-R] xyz 文件或目录(xyz 为同三组 rwx 属性数值的相加 )

rwx rwx rwx 可以使用数字来代表各个属性,例如当属性为 [ -rwxrwx--- ] 则是:770 常常我们以 vi 编辑一个 shell 的文字文件后,它的属性通常是 -rw-rwrw- 也就是 666 的属性,要将它变成可执行档,并且不让其它人修改此一文件的话,那么就需要 - rwxr-xr-x 这一个755 的属性,另外,有些文件你不希望被 其它人看到,例如 -rwxr-----740

(2)        使用群

目录和文档基本上就九个属性分别是usergroupothers 三类!我们可以由 u, g, o 来代表三群的属性!此外, a 则代表 all亦即全部的三群!以使用底下的方式来看:

如果要设定一个文件的属性为『-rwxr-xr-x』时à   chmod u=rwx,og=rx  .bashrc

如果只要增加.bashrc 这个文件的每个人均可写入的权限,那么我就可以使用:

chmod a+w .bashrc

如要拿掉所有人的 x 的属性,则

[root@test root]# chmod a-x .bashrc

3     改变预设的建立文件或目录时的属性umask

说明:查看 umask 数值为直接输入 umask

如何来指定文件得预设属性呢?主要还是跟 Linux 的文件属性(那九个属性, r, w, x )有关的,而且是以分数的那一个关系为例的,而有底下的规则为辅:

•若使用者建立为『文件』则预设『没有可执行 ( x ) 项目』,亦即只有 rw 这两个项目,也就是最大为 666 --rw-rw-rw-

•若使用者建立为『目录』,则由于 x 与是否可以进入此目录有关,因此预设为所有权限均开放,亦即为 777 drwxrwxrwx 

那么 umask 指定的是『该默认值需要减掉的权限!』因为 rwx 分别是 421 分,也就是说,当要拿掉能写的权限,就是输入 2 分,而如果要拿掉能读的权限,也就是 4 分,那么要拿掉读与写的权限,也就是 6 分,而要拿掉执行与写入的权限,也就是3分。而这个 umask 可以在 /etc/bashrc 里面进行修改喔!预设的情况之下,rootumask022 ,而一般使用者则为 002

4     改变文件的特殊属性 chattr

说明:这这个指令是重要的,尤其是在系统的安全性上面!由于这些属性是隐藏的性质,所以需要以 lsattr 才能看到该属性呦!

其中,最重要的当属 +i 这个属性了,因为它可以让一个文件无法被更动,对于需要强烈的系统安全的文件来说,真是相当的重要的!此外,如果是 log file 这种的登录档,就更需要+a 这个可以增加,但不会被杀掉的参数了!

5     显示文件的特殊属性:lsattr

4.搜寻文件或目录whereislocatefind

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

1whereis 查看文件的位置

因为 Linux 系统会将系统内的所有文件都记录在一个数据库文件里面,而当使用 whereis 或者是locate 时,都会以此数据库文件的内容为准,因而其查询速度也比较快,同时whereis 可以加入参数来找寻相关的资料,例如如果你是要找可执行档( binary )那么加上 -b 就可以啦!例如上面的范例针对 passwd 这支程序来说明!如果不加任何参数的话,那么就将所有的数据列出来!因此,有的时候你会发现使用这两个命令时,会找到已经被删除的文件!这就是因为它是一个数据库文件! Linux 每天会针对 Linux 主机的这个『数据库』文件进行 updatedb的动作,你可以在 /etc/cron.weekly/slocate.cron 这个文件找到相关的机制!当然,也可以直接使用/usr/bin/updatedb 来更新这个数据库文件!

2locate 配合数据库查看文件位置

locate 的使用方式就更简单了!直接键入你要找的档名即可!使用 locate 来寻找数据的时候特别的快,这是因为 locate 寻找的数据是由已建立的数据库 /var/lib/slocate里面的数据所搜寻到的,所以不用直接在去硬盘当中存取数据。

那么有什么限制呢?就是因为它是经由数据库来搜寻的,而数据库的建立预设是在每个礼拜执行一次,所以当您新建立起来的文件,却还在数据库更新之前搜寻该文件,那么 locate 会告诉您找不到!因为系统还没有要更新数据库,那么我到底要建立哪些数据库呢?是否全部都要建立?似乎不需要,这个时候,你可以自己选择需要建立文件数据库的目录呢!在 /etc/updatedb.conf 这个内即可设定了!

3find 实际搜寻硬盘去查询文件名称

例子:find /etc -name '*httpd*'就可将档名含有 httpd 的文件都列出来。缺点是速度慢!

4which 查看可执行文件的位置which

其基本功能是藉由 PATH 这个环境变量的内容,去该路径内寻找可执行文件

5.文件目录得新建复制移动删除

(1)       删除文件(目录) rmrmdir很少用) 通常加上-fr 参数说明完全删除

(2)       移动(改名):mv  这个命令要慎用,因为如果目标文件已经存在的话,系统会直接替换,不做任何提示

(3)       拷贝文件或目录:cp

(4)       新建目录:mkdir

(5)       查看当前目录位置:pwd

(6)       查看目录内容:ls ltr

(7)       更换目录:cd

6  观看文件内容:

(1)       cat 由第一行开始显示文件内容

(2)       tac 从最后一行开始显示,可以看出 tac cat 的倒着写!

(3)       more 一页一页的显示文件内容

(4)       less more 类似,但是比 more 更好的是,它可以往前翻页!

(5)       head 只看头几行

(6)       tail 只看尾巴几行

(7)       od 以二进制的方式读取文件内容!

例如:假如我想要显示 ~/.bashrc 的第 11 到第 20 行呢?

答: head n 20~/.bashrc | tail n 10

2.3环境变量 PATH

1.显示出目前的 PATH[root@test root]# echo $PATH 

2.如何增加path的目录:可以使用PATH=$PATH:/root 

PATH 里面加入 . 这个目录,就可以直接在所在目录执行文件。但是为了安全起见,不建议将. 加入 PATH 的搜寻当中。

2.4 basenamedirname

basename这个指令会将后面的[目录]取出最后面的那个目录或文件

语法:[root @test /root ]# basename [目录]

dirname这个指令恰恰与 basename 相反

语法:[root @test /root ]# dirname [目录]

如果你有要在shell编程中使用变量,并且取出最后一个数据(不论是文件还是目录),那么使用它。

3    连接档

3.1  inodes

block是磁盘可以记录的最小单位,是由数个 sector 所组成的,所以它的大小通常为 n*512 bytes Block 是记录文件内容数据的地区,而 inode 则是记录该文件的属性、及该文件放置在哪一个 Block 之内的信息。所以,每个文件都会占用到至少一个 inode

当我们 Linux 系统要找到这个文件时,它会先去搜寻 inode table 找到这个文件的属性及数据放置的地区,然后再到数据去找到数据存放的 Block 进而将数据取出利用。这个 inode 数目在一开始就会被设定好,它的设定方式通常是利用 ( 硬盘大小 / 一个容量 ),这个容量至少应该比 Block 要大一些较佳,例如刚刚的 Block 订为 4K ,那么 inode 可以订为 8K 左右。所以,一颗 1GB 的硬盘,如果以 8K 来规划它的 inode 数时,它的 inode 就会有131072 inode 。而一个 inode的大小为 128 bytes 。一个partition 格式化为一个 filesystem 之后,基本上,它一定会有 inode tabledata area两个区块,一个用来记录文件的信息与该文件放置的 block 区块,一个用来记录文件的内容。

²        block 越小 ( 最小为 0.5K ) inodes 越多,可利用空间越多,但是大文件写入效率较差:适合文件数量多但是文件容量小的系统,例如 BBS 或者新闻群组 news 这方面的服务之系统;

²        block 越大 ( 最大可到 16 * 0.5K 以上 ) inodes 数越少,大文件写入效率较佳,但浪费的空间较多:适合文件容量大的系统。

3.2  ln

²        Hard Links

hard link 就是直接再建立一个 inode 连结到文件放置的 block 区块。也就是说,进行 hardlink 的时候,实际上,你的文件内容不会改变,只是你在查询的时候,利用原来的 inode 与后来的 inode 均可被指定到该文件放置的地点,因此两个文件的内容会是一样的!所以读取任何一个 inode 的结果都是存取在同一个文件的内容就是了。

Hard link 有两个最大的限制

1)不能跨 filesystem ,因为不同的 filesystem 有不同的 inode table

2)不能 link 目录,因为inode是会连结到block区域去的,而目录本身仅消耗inode 而已。

²        Symbolic Links

它就是在建立一个独立的文件,而这个文件会让数据读取指向它 link 的那个文件内容。由于只是利用文件来做为指向的动作,所以,当来源档被删除之后,symboliclink 的文件会开不了。

语法:[root @test /root ]# ln [-s] [来源档] [目的档]

参数说明:-s :提供连结档的连结。如果直接以 ln 不加任何参数的话,那么就属于hard link

注意连接文件的关系。如果你做了这样的连结:ln s  /bin  /root/bin

那么如果你进入 /root/bin 这个目录下,并且将其中的数据杀掉时, /bin 里面的数据就通通不见了。这点请千万注意。并不是 /root 底下的资料都是 root 的。还需要注意一下该属性才行。 

4    SetUID, SetGID, Sticky bit file 指令

4.1  SUID SGID

UID 代表我们的使用者代号,而 GID 则是群组的代号,保存组和用户信息的文件分别是 /etc/group /etc/passwd. 其中 rootroot组的uidgid都是 0,那么什么是 SUID SGID 呢?

在说明之前我们先来以一般身份使用者 test 的身份登入,再来看一个文件的内容:

[test@test test]$ ll /usr/bin/passwd

-r-s--x--x 1 root root 13476 Aug 7 2001 /usr/bin/passwd

怎么会有 s 的属性在原本的 x 呀?那个就是所谓的 SUID 了。当一个文件具有 SUID 的时候,而且other的群组具有可执行的权限,那么当 others 群组执行该程序的时候,other将拥有该文件的owner的权限。

下例更好的说明这个属性的作用:

[test@test test]$ ls -l /usr/bin/passwd

-r-s--x--x 1 root root 13476 Aug 7 2001 /usr/bin/passwd

我们以账号的密码文件来说明好了。可以看到的是,/etc/passwd的权限是只有 root 才能存取。那么为什么一般使用者可以自己修改密码呀?因为修改密码一定跟/etc/passwd这个文件有关,那么使用者是如何修改 /etc/passwd 这个文件的呢?这就是使用 SUID 的功能。由此也可以知道,由于这个Set UID ( SUID ) 的主要功能是在某个文件执行的期间具有文件拥有者的权限,因此s 就是替代上面提到的 x 这个可执行的位置。那万一该文件并没有x 的属性,那么该文件的属性就会将小写的 s 变成大写的 S

不过, SUID SGID 的关键问题就是太不安全了。因此上,在变更一个文件成为具有 SUID SGID 的情况时,必须要特别小心。

4.2  Sticky bit

Sticky bit 的属性t的最大用处在于,具有sticky bit 属性的该”目录”下的文件,其文件或目录只有文件拥有者及 root 才有权力删除。/tmp 这个目录就具有这样的特性,在该目录里面虽然你可以建立与修改任何文件,但是却仅能删除自己建立的文件(除非你是 root

4.3  SUID, SGID, Sticky bit 的设定方法:

如何开启文件使成为具有 SUID SGID 的权限呢,这就需要刚刚的数字更改权限的方法了。数字型态个更改权限方式为『三个数字』的组合,那么如果在这三个数字之前再加上一个数字的话,那最前的面数字就代表这几个属性了

4 SUID

2 SGID

1 Sticky bit 

假设要将一个文件属性改为-rwsr-xr-x时,由于s在使用者权限中,所以是SUID ,因此,在原先的755之前还要加上4 ,也就是:『 chmod 4755 filename 』来设定。

另外,在设置s属性的时候,要给予其可执行的权限,不然文件拥有者都无法执行了,哪里来的权限给其它人使用?当然就是空的。

4.4  file

用来查看这个文件的类型,可以用来观看文件是否被加入 SUID 等等的信息。并且,也同时提供了是否有使用动态函式库的信息。

语法:[root @test /root ]# file [文件名]

 

展开阅读全文

没有更多推荐了,返回首页