鸟哥的Linux私房菜下载见
http://www.linuxidc.net/thread-2200-1-1.html
http://www.linuxidc.net/thread-2268-1-1.html
第二章、
1.Linux对于硬件的要求是什么?是否一定要很高的配置才能安装Linux?
Linux对于硬件配置没有特殊的要求,不一定非要很高的配置才能安装Linux。
2. 一台好的主机在安装之前最好先进行规划,哪些是必需注意的Linux主机规划事项?
必须注意的是主机的用途,用途不同对主机硬件的需求也不同,硬盘的规划也不相同。
3. 请写下目前您使用的个人计算机中,各项设备的主要等级与厂商或芯片组名称:
主机板: CPU: 内存大小:
硬盘容量: 显卡: 网卡:
4. 请写下下列设备在Linux中的硬件代号:
IDE硬盘: /dev/hd[a-d] 光驱:/dev/cdrom 打印机:/dev/lp[0-2]
软驱:/dev/fd[0-1] 网卡:/dev/ethn(n由0开始)
第三章
1. 请以本章的Linux主机规划方式,仔细规划您的Linux主机,好开始您的Linux之旅。
2. Linux安装规范中,有两个分区一定要有,是哪两个?
是/ 根分区和/SWAP 交换分区
3. 请问,一个硬盘最多可以有几个Primary + Extended扇区?
最多可以有3个Primary和1个Extended分区.
4. 如果我的硬盘接在IDE 2的Master上,请问这个硬盘的第一个 Logical磁盘代号为多少?
/dev/hdc1
备注:
IDE\Jumper | 主硬盘 | 从硬盘 |
IDE1 (Primary) | /dev/hda | /dev/hdb |
IDE2 (Primary) | /dev/hdc | /dev/hdd |
5. 一般Swap的建议大小为多少?
一般为内存的2倍.
6. 如果我在分割磁盘时设定了4个Primary扇区,但是磁盘还有空间,请问还能不能使用这些空间?
不能.
备注:
硬盘分为两个区域,一个用于放置这个硬盘的信息,我们称为主引导扇区(Master Boot Recorder,MBR),一个则是放置实际数据文件的地方。在MBR中记录了两个重要的东西,分别是启动管理程序与硬盘分区表(partition table)。硬盘分区表定义了第n个磁盘区块是由第x磁柱到第y个磁柱。MBR区块当初设计的时候就只设计成4个分割记录,这些分割记录就被称为Primary(主分区)及Extended(扩展分区),也就是说,一块硬盘最多可以有4个Primary+ Extended区,其中,Extended只能有一个。扩展分区本身不能在任何系统上使用,还需要额外地分割成Logical(逻辑分区)才能使用
第四章
在Linux上实际记录用户身份的是UID与GID,分别代表用户ID与群组ID。系统管理员(root)的号码即是0,所以您进入/etc/passwd文件即可看到root的两个ID号都是0,基本上,您只要建立一个账号,并且将其UID设定为0,那么它就具有root的身份了。而一般用户的ID号通常在500以后,1~499之间多会留给系统使用。
图形模式与文字模式的切换
Ctrl + Alt + [F1] ~ [F6] :文字界面tty1 ~ tty6终端
Ctrl + Alt + [F7] : 图形界面
从文字界面切换到图形界面,也可以直接输入
[root@test root]# startx
指令输入与基本指令
指令的输入格式为:
[root@test root]# command [-options] parameter1 parameter2 …
指令 选项 参数(1) 参数(2)
说明:
1. 指令与参数区分字母大小写;
2. command为指令的名称,例如变换路径的指令为cd,等等;
3. 中括号[]实际并不存在,在进行参数设定时,通常为“-”号,若为完整参数名称,则输入“–”符号;
4. parameter1,parameter2……为跟在option后面的参数,或是command的参数;
5. command,-options,parameter这几项之间以空格分开,不论空几个格,shell都视为一个空格;
6. 指令太长的时候,可以使用“\”符号使指令连续到下一行。
显示日期的指令:date
[root@test root]# date +%Y/%m/%d
2002/10/16
[root@test root]# date +%H:%M
15:32
显示日历的指令:cal
显示2011年一整年的的日历:cal 2011
cal的语法为:[root@test root]# cal [month] [year]
简单好用的计算器:bc
再改计算器下,几个常用的运算符:
+ 加法
– 减法
* 乘法
/ 除法
^ 指数
% 余数
Ctrl + c:在Linux下,如果输入了错误的指令或参数,有时候系统会一直运行而不停止,可以键入Ctrl + c,这就是中断当前程序。
在线求助 man指令
[root@test root]# man date
出来的页面叫做man page,退出man page可直接输入q这个字母。在man page中可以按的键有:
· 空格键: 向下翻页;
· page up: 向上翻页;
· page down: 向下翻页;
· home: 回到最前面;
· end: 转到最终页;
· /word: 搜寻word所代表的文件。
这些man page通常是放在/usr/share/man中
除了man之外,Linux中还提供另外一种查询方式,即info
[root@test root]# info command
正确的关机方式
观察系统的使用状态:如果要看目前有谁在线,可以输入who指令,而如果要看网络的联机状态,可以输入netstat -a指令,而要看背景执行的程序可以执行ps -aux指令
只有root有权关机
shutdown指令
它的参数有如下几个。
-t sec: -t后面跟秒数,亦即“过几秒后关机”的意思
-k: 不要真的关机,只是发送警告信息
-r: 在将系统的服务停掉之后就重新开机
-h: 将系统的服务停掉后,立即关机
-n: 不经过init程序,直接以shutdown功能关机
-f: 关机并开机之后,强制略过fsck工具的磁盘检查
-F: 系统重新开机之后,强制执行fsck磁盘检查
-c: 取消已经在进行的shutdown指令内容
例子:
shutdown -h now 立刻关机,其中now相当于时间为0
shutdown -h 20:25 系统在今天的20:25分关机
shutdown -h +10 系统再过十分钟后自动关机
shutdown -r now 系统立刻重新开机
shutdown -r +30 ‘The system will reboot’
再过三十分钟系统会重新开机,并显示后面的信息。
shutdown -k ‘This system will reboot’
仅发出引号内的警告信息,系统不会关机
课后练习
1. 请问,如果我以文字模式登入Linux主机,我有几个终端接口可以使用?如何切换各个不同的终端接口?
6个
Ctrl + Alt + [F1] ~ [F6] :文字界面tty1 ~ tty6终端
2. 在Linux系统中,VBird与vbird是否为相同的文件?
不是,区分大小写
3. 我想知道date如何使用,应该如何查询?
man date
或者
info date
4. 我想在今天的1:30让系统自动关机,要怎么做?
shutdown –h 1:30
5. man page的配置文件在哪里?
man page通常是放在/usr/share/man中
6. 我想知道2003年5月2日是星期几,该怎么做?
使用命令:cal 5 2003
7. 使用man date然后找出显示当前日期与时间的参数,使其显示格式类似:2002/10/16-20:03
date %Y/%m/%d-%H:%M
第五章
一个常用指令:
[root@test root]# ls -al
ls是list的意思,参数-al则表示列出所有的文件(包含隐藏文档,就是文件名前第一个字符为“.”的文件)
-rwxrwxrwx 1 root root 293 Oct 19 21:24 test
第一栏(-rwxrwxrwx)代表这个文件的属性:此处需要特别注意。细心的读者可以发现这一栏其实共有10个属性
其中第一个属性代表这个文件是目录、文件或者链接文件。
· 若为[ d ],则是目录,例如上面的tmp/行;
· 若为[ – ],则是文件,例如上面的.bashrc行;
· 若是[ l ],则表示为链接文件(link file);
· 若是[ b ],则表示为设备文件中可供储存的接口设备;
· 若是[ c ],则表示为设备文件中的串行端口设备,例如键盘、鼠标。
第一栏中剩下的属性,三个为一组,且均为“rwx”的组合形式。其中:
· [ r ]代表可读
· [ w ]代表可写
· [ x ]代表可执行
如果不具备某个属性,则相应字母会被删掉。例如,如果仅有读写能力,没有执行能力,那么x会被删掉,而成为[rw-]。
· 第一组[ rwx ]为“拥有者的权限,owner”,例子中,该文件的拥有者可以读写及执行;
· 第二组[ rwx ]为“群组的权限,group”,例子中,和该文件的拥有者属于同一群组的用户,均可擦写及执行;
· 第三组[ — ]为“其他非本群组的用户的权限,others”,上面则显示其他人均不可擦写与执行。
范例:若有一个文件的属性为-rwxr-xr–,则说明:
· 这个文档为一个常规文件;
· 拥有人的权限为可读、可写、可执行;
· 同群组用户权限为可读可执行,但不可写入;
· 其他用户权限仅为可读。
② 第二栏表示链接占用的节点(i-node)(若为目录,通常与该目录下有多少子目录有关),这部分将在介绍链接文件时(下一节)深入介绍。
③ 第三栏表示这个文件(或目录)的“拥有者”。
④ 第四栏表示拥有者的群组。
⑤ 第五栏为这个文件的大小。
⑥ 第六栏为这个文件的建档日期或最近的修改日期,分别为月份、日期及时间。
⑦ 第七栏为这个文件的文件名。如果文件名之前多一个“.”,则表明这个文件为“隐藏文档”
如何改变文件权限
改变群组chgrp
语法:
chgrp 群组名称 文件或目录(改变的目标群组名称必须在/etc/group中存在,否则会显示错误。)
改变拥有者chown
文件的拥有者必须已经存在于系统中,也就是说,拥有者名称在/etc/passwd文件中存在才能改变。chown的用途很多,它还可以直接修改群组的名称。此外,如果要将目录下的所有子目录或文件同时更改文件拥有者,直接加–R参数即可
语法:
chown [ -R ] 账号名称 文件或目录
chown [ -R ] 账号名称:群组名称 文件或目录
改变权限chmod
数字类型改变文件权限
r: 4
w: 2
x: 1
将同一组数字相加。属性[ -rwxrwx— ]的相加结果为:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others = — = 0+0+0 = 0
所以,三组属性生成的数值就是770。
更改属性的指令为chmod,其语法为:
chmod [-R] xyz 文件或目录
其中,xyz为同三组rwx属性数值的相加
符号类型改变文件形态
基本上9个属性分别是user,group和others三组,那么我们可以用u,g和o来代表3个组的属性。此外,a则代表all亦即全部的三组。那么读写属性就可以写成r,w,x。所以,可以使用下面的方式:
chmod | u | +(加入) | r | 文件或目录 |
g | -(除去) | w | ||
o | =(设定) | x | ||
a |
举例:
[root@test root]# chmod u=rwx,og=rx .bashrc
[root@test root]# chmod a+w .bashrc
[root@test root]# chmod a-x .bashrc
Linux支持的文件格式与文件种类
文件格式
可以到Linux 系统的/lib/modules/`uname–r`/kernel/fs下查看,如果有您想要的文件格式,那么这个核心就支持它。
目前使用的最广泛的虽然还是ext2,不过,最近发布的Linux版本大多已经默认采用ext3或reiserfs这种具有日志管理功能(Journaling)的文件格式
文件种类
Linux主要有下面几种文件种类:
· 正规文件(regular file):就是一般类型的文件,即由ls -al显示出的文件中其第一个属性为[ – ]的文件。另外,依照文件的内容,又可以将其细分为下列两种:
?? 纯文本文件(ASCII):这是Unix系统中最多的一种类型,我们可以用来设定的文件几乎都属于这一种;
?? 二进制文件(binary):通常除了脚本(文字型批处理文件)之外,执行文件就是这种文件格式。
· 目录(directory):就是目录,其第一个属性为[ d ]。
· 链接文件(link):类似Windows下的快捷方式,其第一个属性为[ l ]。
· 设备文件(device):与系统外设相关的文件,通常都集中在/dev目录下。通常又分为两种:
?? 块(block)设备文件:就是用于储存数据以提供系统存取的接口设备,简单地说就是硬盘。例如您的主硬盘代码是/dev/hda1。这类文件的第一个属性为[ b ];
?? 字符(character)设备文件:即一些串行端口的接口设备,例如键盘、鼠标等。这类文件的第一个属性为[ c ]。
另外,在Linux下,每个文件或目录的文件名最长可以达到256个字符。
Linux目录配置
/bin | 这是存放诸如ls、mv、rm、mkdir等常用执行文件的地方。有时这个目录的内容与/usr/bin一样,专门用于放置一般用户使用的执行程序 |
/boot | 这里是放置Linux核心与启动相关文件的地方,目录下的vmlinuz-xxx就是Linux的内核。如果启动管理程序选择grub,那么这个目录内还有/boot/grub子目录 |
/dev | 存放与设备有关的文件。如/dev/fd0:软驱、/dev/cdrom:光驱 |
/etc | 系统在启动过程中需要读取的文件均在这个目录下,用户账号与密码、系统的主要设定、http架站参数、您要启动的服务项等,所以一般要备份这个目录 |
/etc/rc.d | 这个目录主要存放开关机过程中用到的脚本文件 |
/etc/rc.d/init.d | 所有服务默认的启动脚本文件都放在这里 |
/home | 这是系统默认的用户根目录(home directory),在新增一个一般用户的账号时,默认的用户根目录已在这里设定好 |
/lib | Linux执行或编译某些程序时要用到的函数库(library)就在这个目录下 |
/root | 系统管理员的根目录 |
/sbin | 放置系统管理常用的程序,例如fdisk,mke2fs,fsck,mkswap和mount等。与/bin不太一样,这个目录下的程序通常是root等系统管理员使用的程序 |
/tmp | 这是让一般用户存放临时文件的地方 |
/usr | 这是最重要的一个目录,,里面含有很多系统信息 |
/usr/share/man | 放置一些程序的说明文件的地方,就是您使用man时会查询的路径 |
/usr/src | 是放置核心源代码的默认目录 |
/var | 所有服务的登录文件或错误信息文件(log files)都在/var/log下,一些数据库如MySQL则在/var/lib下,用户未读取邮件的默认存放地点为/var/spool/mail |
需要注意的目录
在Linux系统中,有几个目录需要特别注意,下面列出这几个目录及相关的用途。
· /etc:这个目录相当重要,如前所述,启动与系统数据文件均在这个目录下,因此当这个目录被破坏,您的系统也就差不多该死掉了!而在后面,您会发现我们常常使用这个目录下的/etc/rc.d/init.d子目录,因为该目录用于存放启动一些Linux系统服务的脚本(可以认为是批处理文档)。而在/etc/rc.d/rc.local这个文件是启动执行文件,有点类似旧Windows系统下的autoexec.bat及config.sys。所以,如果您有需要在启动时加载的服务或执行文件,可以写在这个文件的最后一行,则启动时就会自动加载执行文件了。
· /bin,/sbin,/usr/bin,/usr/sbin:这是系统默认的执行文件的放置目录,例如root常用的userconf,netconf,perl,gcc,C++等数据都放在这几个目录中,所以如果您在提示符下找不到某个执行文件,可以在这4个目录中查找。其中,/bin和/usr/bin是系统用户使用的目录,而/sbin和/usr/sbin则是系统管理员使用的目录。
· /usr/local:这是系统预留的让您安装后来升级的套件的目录。例如,当您发现有更新的Web套件(如Apache),而又不想以RPM的方式升级套件,则可以将apache套件安装在/usr/local下。安装在这里有个好处,因为目前大家的系统都差不多,所以如果您的系统要让别人接管,也较容易上手,比较容易找到数据。因此,如果需要,通常我都会将/usr/local/bin路径加到我的path中。
· /home:这是系统默认的用于存放用户账号的根目录。
· /var:这个目录很重要。登入、各类服务发生问题时的记录,以及常规性的服务记录等都记在这个目录下,所以当您的系统出现问题,就需要在这个目录记录的文件数据中查看问题所在。另外,mail的默认位置也在这里,所以这个目录非常重要。
· /usr/share/man,/usr/local/man:这两个目录为放置各类套件说明文档的地方,例如,您执行man man,则系统自动查找这两个目录下的所有说明文件,如果有相同的数据就会显示出来。
课后练习:
1. 早期的Unix系统文件名最多允许14个字符,而新的Unix与Linux系统,其文件名最多可以容许多少字符?
在Linux下,每个文件或目录的文件名最长可以达到256个字符。
2. 若文件属性为–rwxrwxrwx,则表示这个文件的意义是什么?
该文件的拥有者具有可读可写可执行的权利
该拥有者所属的群组具有可读可写可执行的权利
其他人具有可读可写可执行的权利。
3. 我需要将一个文件的属性改为–rwxr-xr–,请问该输入什么指令?
方法一:chmod u=rwx, g=rx, o=r 文件名
方法二:chmod 754 文件名
4. 若需要更改一个文件的拥有者与群组,该用什么指令?
chown
5. Linux传统的文件系统是什么?此外,常用的带有日志管理功能的文件格式有哪些?
linux传统的文件系统为:ext2。常用的带有日志管理功能的文件格式有:ext3和reiserfs.
6. 请说出下面的目录主要放置什么数据。
/etc/:系统在启动过程中需要读取的文件均在这个目录下
/etc/rc.d/init.d:所有服务默认的启动脚本文件都放在这里
/boot:这里是放置Linux核心与启动相关文件的地方
/usr/bin,/bin:系统用户使用的目录,系统默认的执行文件的存放位置
/usr/sbin,/sbin:系统管理员使用的目录,系统默认的执行文件的存放位置
/dev:存放与设备有关的文件
/var/log:所有服务的登录文件或错误信息文件
7. 若一个文件的文件名以“.”开头,例如.bashrc文件,这代表什么?如何显示这种文件的文件名及其相关属性?
这个文件为隐藏文件,
用ls -al 命令显示
第六章
绝对路径:路径的写法一定是从根目录“/”写起,例如:/usr/share/doc 目录。
相对路径:路径的写法不是由“/”写起,例如从/usr/share/doc转到/usr/share/man下时,可以写成cd ../man。这就是相对路径的写法。
一些常用的目录“符号”代表的意义,如下表所示。
. | 代表当前层目录 |
.. | 代表上层目录 |
~ | 代表自己的根目录 |
~user | 代表到user这个人的根目录 |
目录与路径的几个常用指令
cd 变换目录
pwd 显示当前目录
mkdir 建立一个新目录
rmdir 删除一个内容为空的空目录
cd语法
[root @test /root ]# cd [相对路径或绝对路径]
范例:
[root @test /root]# cd .. <==回到上一层目录
[root @test /root]# cd ../home <==相对路径的写法
[root @test /root]# cd /var/www/html <==绝对路径的写法
[root @test /etc]# cd <==回到用户的根目录
[root @test /etc]# cd ~ <==回到用户的根目录
[root @test /etc]# cd ~test <==回到test用户的根目录
pwd语法
[root @test /root ]# pwd
pwd是print working directory的缩写,是显��当前目录的指令
mkdir语法
[root @test /root ]# mkdir [目录名称]
范例:
[root @test /root]# mkdir test <==建立名为test的目录
rmdir语法
[root @test /root ]# rmdir [目录名称]
范例:
[root @test /root]# rmdir test <==删除名为test的目录
环境变量PATH
echo $PATH(会显示当前PATH)
[root@test root]# echo $PATH
/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin
将/root的路径加入PATH中,可以使用如下指令
PATH=”$PATH”:/root
文件与目录管理基础
ls 显示文件名称、属性等
cp 复制文件或目录
rm 删除文件或目录
mv 移动文件或目录
ls
语法:
[root @test /root ]# ls [-ailS]
参数说明:
-a :列出所有文件(连同隐藏文档)
-i :打印inode的值
-l :详细列出,连同文件大小、属性数据等
-S :以文件大小排序
–color=never :不显示颜色
–color=always :均显示颜色
–color=auto :由系统自行判断
cp
语法:
[root @test /root ]# cp [-drsu] [源文件] [目标文件]
参数说明:
-d :进行复制时,如果是复制到链接文件,若不加任何参数,则默认情况下会将链接到的源文件复制到目的地,若加-d,则链接文件可原封不动地将链接这个快捷方式复制到目的地。
-r :可以进行目录的复制。
-s :做成链接文件,与ln指令功能相同。
-u, –update:如果源文件较新,或者没有目标文件,才会进行复制动作。可用于备份操作。
范例:
[root @test /root]# cp .bashrc bashrc
将.bashrc复制成bashrc文件!
rm
语法:
[root @test /root ]# rm [-fir] [文件名]
参数说明:
-i :提供用户确认(这是默认值)。
-r :循环删除,直到没有东西为止。
-f :force,就是强制删除。
mv
语法:
[root @test /root ]# mv [-u] [源文件] [目标文件]
参数说明:
-u :同样,为update的简写,当源文件比目标文件还新时才会动作!
范例:
[root @test /root]# cp .bashrc bashrc
[root @test /root]# mv bashrc bashrc.old <==也可以用来更改文件名
[root @test /root]# mv bashrc bashrc2 /tmp <==将bashrc与bashrc2移到/tmp目录下。请注意,最后一个才是最终的目标文件,其他的都是源文件
这个指令有两个用途,第一个是移动。在您要移动文件或目录时这个指令很重要。同样,您也可以使用-u (update)测试新旧文件,看看是否需要搬移。另外一个用途就是变更文件名,我们可以很轻易地使用mv来变更文件的文件名。
查看文件内容
cat 由第一行开始显示文件内容
tac 从最后一行开始显示,可以看出,tac是cat的倒写
more 一页一页地显示文件内容
less 与more类似,但其优点是,可以往前翻页
head 只看头几行
tail 只看末尾几行
nl 显示时同时输出行号
od 以二进制方式读取文件内容
cat
语法:
[root @test /root ]# cat [-n]
参数说明:
-n: 显示时,连行号一起输出到屏幕上。
范例:
[root @test /root]# cat ~/.bashrc <==显示.bashrc文件
cat较不常见,因为在文件内容行数超过40行以上时根本来不及看,所以,配合more或者less执行比较好。
tac
语法:
[root @test /root ]# tac [文件名]
参数说明:
范例:
[root @test /root]# tac ~/.bashrc <==发现了没?是反向显示
cat是从第一行到最后一行连续显示在屏幕上,而tac则是从最后一行到第一行反向显示在屏幕上。
more
语法:
[root @test /root ]# more [文件名]
参数说明:
范例:
[root @test /root]# more ~/.bashrc <==一页一页地显示文件内容
[root @test /]# ls -al | more <==一页一页地将ls的内容显示出来
less
语法:
[root @test /root ]# less [文件名]
参数说明:
范例:
[root @test /root]# less ~/.bashrc
less的用法比more更有弹性,使用more时,我们没有办法向前翻看,用less时就可以使用[pageup]、[pagedown]等按键的功能向前向后翻看文件
head与tail常用于仅想读取某个文件的前几行或后几行的情况。
head
语法:
[root @test /root ]# head [-n number] [文件名]
参数说明:
-n :显示number行
范例:
[root @test /root]# head ~/.bashrc <==默认情况下,显示前10行
[root @test /root]# head -n 20 ~/.bashrc <==显示前20行
tail
语法:
[root @test /root ]# tail [-n number] [文件名]
参数说明:
-n :显示number行
范例:
[root @test /root]# tail ~/.bashrc
[root @test /root]# tail -n 5 ~/.bashrc <==只显示最后5行
nl
语法:
[root @test /root ]# nl [文件名]
参数说明:
范例:
[root @test /root]# nl ~/.bashrc
nl指令的用法和cat -n用法相似,即查看文件的同时可以显示行号。
od
语法:
[root @test /root ]# od [文件名]
参数说明:
范例:
[root @test /root]# od ~/.bashrc
Block是记录文件内容数据的区域,inode则是记录该文件的属性及其放置在哪个Block之内的信息。所以,每个文件都会占用一个inode。当Linux系统要查找某个文件时,它会先搜寻inode table找到这个文件的属性及数据放置地点,然后再查找数据存放的Block进而将数据取出
链接又分为硬链接(hard link)与符号链接(symbolic link)两种方式
硬链接就是再建立一个inode链接到文件放置的Block块。
符号链接是再建立一个独立文件,而这个文件会让数据读取操作指向它链接的那个文件。
一个文件名实际上是指向一个inode。然后inode中的信息存放文件的实际存放位置。
硬链接就是在创建一个inode,这个inode里面的信息跟原先的那个inode的存放的信息一样(即指向文件的实际存放位置)。
符号链接是建立一个inode,这个inode里面的信息指向原先的那个inode(指向原先的那个inode)。
语法:
[root @test /root ]# ln [-s] [源文件] [目标文件]
参数说明:
-s :提供符号链接
:如果直接使用ln而不加任何参数,就属于硬链接
文件与目录权限
chown 改变文件的拥有者
chgrp 改变文件的所属群组
chmod 改变文件的可写、可读、可执行等属性
umask 改变预设的建立文件或目录时的属性
chattr 改变文件的特殊属性
lsattr 显示文件的特殊属性
语法:
[root @test /root ]# chown [-R] user:group [目录名称]
参数说明:
-R :循环地将该目录下的所有文件都改成 user 与 group 的名称
范例:
[root @test /root]# mkdir /home/test/testing
在/home/test根目录中建立一个名为testing的子目录
语法:
[root @test /root ]# chmod [-R] [parameter] [目录名称]
参数说明:
-R :循环地将该目录的文件都改变
范例:
[root @test /root]# chmod 777 .bashrc
一个文件或目录至少有9个属性,三三一组,共分为三组。可以使用数字当作变换属性
的参考依据
umask用于指定当前用户在建立文件或目录时的属性默认值。
查看umask数值直接输入umask即可,要设定其值,在umask之后接3个数字。如何指定这3个数字呢?主要还是和Linux的文件属性(那9个属性,r, w, x)有关,同时参考下面的规则。
· 若用户建立的是“文件”,则默认没有可执行(x)项,即只有rw这两个项,也就
是最大为666(-rw-rw-rw);
· 若用户建立的是“目录”,则由于x与是否可以进入此目录有关,因此默认为所有
权限均开放,亦即777(drwxrwxrwx)。
umask指定的是“该默认值需要取消的权限”,因为r,w,x分别是4,2,1,所以,当要取消写权限,就输入2,而如果要取消读权限,就输入4
chattr
语法:
[root @test /root ]# chattr [+-=][ASacdistu] [文件或目录名称]
参数说明:
+-= :分别为“+”(增加)、“-”(减少)、“=”(设定)属性
A :当设定了属性A,这个文件(或目录)的存取时间atime (access)将不可被修改,可避免
诸如手提电脑容易产生磁盘I/O错误的情况
S :这个功能有点类似sync,是将数据同步写入磁盘中,可以有效避免数据流失
a :设定a后,这个文件将只能增加数据而不能删除,只有root才能设定这个属性。
c :设定这个属性之后,将会自动将此文件压缩,在读取时自动解压缩。但是在存储的时候,会
先进行压缩再存储(对于大文件很有用)
d :当dump(备份)程序被执行,设定d属性将可使该文件(或目录)具有dump功效
i :这个参数可以让一个文件“不能被删除、更名、设定链接也无法写入或新增数据”,对于系
统安全性有相当大的助益
j :当使用ext3文件系统格式时,设定j属性将使文件在写入时先记录在日志中,但是当
filesystem设定参数为data=journalled时,由于已经设定了日志,所以这个属性无效
s :当文件设定了s参数时,它会被完全移出这个硬盘空间
u :与s相反,当使用u配置文件时,数据内容其实还存在于磁盘中,可以用来取消删除
范例:
[root @test /root]# chattr +i /etc/shadow
如此则无法更动这个文件
[root @test /root]# chattr -i /etc/shadow
解除该属性
lsattr
语法:
[root @test /root ]# lsattr [-aR]
参数说明:
-a :将隐藏文件的属性也显示出来
-R :连同子目录的数据一并显示出来
搜寻文件或目录
which 查看可执行文件的位置
whereis 查看文件的位置
locate 配合数据库查看文件位置
find 实际搜寻硬盘查询文件名称
which
语法:
[root @test /root ]# which [文件名称]
参数说明:
范例:
[root @test /root]# which passwd
/usr/bin/passwd
which的基本功能是通过PATH环境变量到该路径内寻找可执行文件,所以基本的功能在于寻找可执行文件。
whereis
语法:
[root @test /root ]# whereis [-bmsu] [目录名称]
参数说明:
-b :只找二进制文件
-m :只找在说明文件manual路径下的文件
-s :只找source源文件
-u :没有说明文档的文件!
范例:
[root @test /root]# whereis passwd
passwd:/usr/bin/passwd/etc/passwd /usr/share/man/man1/passwd.1.bz2
将passwd相关字的文件或目录都列出来。
[root @test /root]# whereis -b passwd
passwd: /usr/bin/passwd /etc/passwd
仅列出二进制文件。
[root @test /root]# whereis -m passwd
passwd: /usr/share/man/man1/passwd.1.bz2
仅搜寻man page所在的目录。
locate
语法:
[root @test /root ]# locate [目录名称]
参数说明:
范例:
[root @test /root]# locate root
……一大堆带有root字符串的文件都会显示出来
[root @test /root]# updatedb
立刻更新数据库
locate的使用方式就更简单了,直接输入要找的文件名即可。但是,这个工具有一些使用限制。您会发现,使用locate查找数据特别快,这是因为locate是从已建立的数据库/var/lib/slocate中查找数据,不用直接在硬盘中存取数据,所以自然很快。
find
语法:
[root @test /root ]# find [路径] [参数]
参数说明:
1. 时间:
-atime n :将n*24小时内被存取过的文件列出来
-ctime n :将n*24小时内被改变、新增的文件或目录列出来
-mtime n :将n*24小时内被修改过的文件列出来
-newer file :把比file还要新的文件列出来
2. 使用名称:
-gid n :寻找群组ID为n的文件
-group name :寻找群组名称为name的文件
-uid n :寻找拥有者ID为n的文件
-user name :寻找用户名称为name的文件
-name file :寻找文件名为file的文件名称(可以使用通配符)
-type type :寻找文件属性为type的文件,type包含了b, c, d, p, l, s,
这些与前一章的属性相同。例如l为Link而d为目录
范例:
[root @test /root]# find / -name testing <==寻找文件名为testing
[root @test /root]# find / -name ‘test*’ <==寻找文件名包含test的
[root @test /root]# find . -ctime 1
寻找当前目录下一天内新增的目录或文件
第五章 Linux文件权限与目录配置一个常用指令:
[root@test root]# ls -al
ls是list的意思,参数-al则表示列出所有的文件(包含隐藏文档,就是文件名前第一个字符为“.”的文件)
-rwxrwxrwx 1 root root 293 Oct 19 21:24 test
第一栏(-rwxrwxrwx)代表这个文件的属性:此处需要特别注意。细心的读者可以发现这一栏其实共有10个属性
其中第一个属性代表这个文件是目录、文件或者链接文件。
· 若为[ d ],则是目录,例如上面的tmp/行;
· 若为[ – ],则是文件,例如上面的.bashrc行;
· 若是[ l ],则表示为链接文件(link file);
· 若是[ b ],则表示为设备文件中可供储存的接口设备;
· 若是[ c ],则表示为设备文件中的串行端口设备,例如键盘、鼠标。
第一栏中剩下的属性,三个为一组,且均为“rwx”的组合形式。其中:
· [ r ]代表可读
· [ w ]代表可写
· [ x ]代表可执行
如果不具备某个属性,则相应字母会被删掉。例如,如果仅有读写能力,没有执行能力,那么x会被删掉,而成为[rw-]。
· 第一组[ rwx ]为“拥有者的权限,owner”,例子中,该文件的拥有者可以读写及执行;
· 第二组[ rwx ]为“群组的权限,group”,例子中,和该文件的拥有者属于同一群组的用户,均可擦写及执行;
· 第三组[ — ]为“其他非本群组的用户的权限,others”,上面则显示其他人均不可擦写与执行。
范例:若有一个文件的属性为-rwxr-xr–,则说明:
· 这个文档为一个常规文件;
· 拥有人的权限为可读、可写、可执行;
· 同群组用户权限为可读可执行,但不可写入;
· 其他用户权限仅为可读。
② 第二栏表示链接占用的节点(i-node)(若为目录,通常与该目录下有多少子目录有关),这部分将在介绍链接文件时(下一节)深入介绍。
③ 第三栏表示这个文件(或目录)的“拥有者”。
④ 第四栏表示拥有者的群组。
⑤ 第五栏为这个文件的大小。
⑥ 第六栏为这个文件的建档日期或最近的修改日期,分别为月份、日期及时间。
⑦ 第七栏为这个文件的文件名。如果文件名之前多一个“.”,则表明这个文件为“隐藏文档”
如何改变文件权限
改变群组chgrp
语法:
chgrp 群组名称 文件或目录(改变的目标群组名称必须在/etc/group中存在,否则会显示错误。)
改变拥有者chown
文件的拥有者必须已经存在于系统中,也就是说,拥有者名称在/etc/passwd文件中存在才能改变。chown的用途很多,它还可以直接修改群组的名称。此外,如果要将目录下的所有子目录或文件同时更改文件拥有者,直接加–R参数即可
语法:
chown [ -R ] 账号名称 文件或目录
chown [ -R ] 账号名称:群组名称 文件或目录
改变权限chmod
数字类型改变文件权限
r: 4
w: 2
x: 1
将同一组数字相加。属性[ -rwxrwx— ]的相加结果为:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others = — = 0+0+0 = 0
所以,三组属性生成的数值就是770。
更改属性的指令为chmod,其语法为:
chmod [-R] xyz 文件或目录
其中,xyz为同三组rwx属性数值的相加
符号类型改变文件形态
基本上9个属性分别是user,group和others三组,那么我们可以用u,g和o来代表3个组的属性。此外,a则代表all亦即全部的三组。那么读写属性就可以写成r,w,x。所以,可以使用下面的方式:
chmod | u | +(加入) | r | 文件或目录 |
g | -(除去) | w | ||
o | =(设定) | x | ||
a |
举例:
[root@test root]# chmod u=rwx,og=rx .bashrc
[root@test root]# chmod a+w .bashrc
[root@test root]# chmod a-x .bashrc
Linux支持的文件格式与文件种类
文件格式
可以到Linux 系统的/lib/modules/`uname–r`/kernel/fs下查看,如果有您想要的文件格式,那么这个核心就支持它。
目前使用的最广泛的虽然还是ext2,不过,最近发布的Linux版本大多已经默认采用ext3或reiserfs这种具有日志管理功能(Journaling)的文件格式
文件种类
Linux主要有下面几种文件种类:
· 正规文件(regular file):就是一般类型的文件,即由ls -al显示出的文件中其第一个属性为[ – ]的文件。另外,依照文件的内容,又可以将其细分为下列两种:
?? 纯文本文件(ASCII):这是Unix系统中最多的一种类型,我们可以用来设定的文件几乎都属于这一种;
?? 二进制文件(binary):通常除了脚本(文字型批处理文件)之外,执行文件就是这种文件格式。
· 目录(directory):就是目录,其第一个属性为[ d ]。
· 链接文件(link):类似Windows下的快捷方式,其第一个属性为[ l ]。
· 设备文件(device):与系统外设相关的文件,通常都集中在/dev目录下。通常又分为两种:
?? 块(block)设备文件:就是用于储存数据以提供系统存取的接口设备,简单地说就是硬盘。例如您的主硬盘代码是/dev/hda1。这类文件的第一个属性为[ b ];
?? 字符(character)设备文件:即一些串行端口的接口设备,例如键盘、鼠标等。这类文件的第一个属性为[ c ]。
另外,在Linux下,每个文件或目录的文件名最长可以达到256个字符。
Linux目录配置
/bin | 这是存放诸如ls、mv、rm、mkdir等常用执行文件的地方。有时这个目录的内容与/usr/bin一样,专门用于放置一般用户使用的执行程序 |
/boot | 这里是放置Linux核心与启动相关文件的地方,目录下的vmlinuz-xxx就是Linux的内核。如果启动管理程序选择grub,那么这个目录内还有/boot/grub子目录 |
/dev | 存放与设备有关的文件。如/dev/fd0:软驱、/dev/cdrom:光驱 |
/etc | 系统在启动过程中需要读取的文件均在这个目录下,用户账号与密码、系统的主要设定、http架站参数、您要启动的服务项等,所以一般要备份这个目录 |
/etc/rc.d | 这个目录主要存放开关机过程中用到的脚本文件 |
/etc/rc.d/init.d | 所有服务默认的启动脚本文件都放在这里 |
/home | 这是系统默认的用户根目录(home directory),在新增一个一般用户的账号时,默认的用户根目录已在这里设定好 |
/lib | Linux执行或编译某些程序时要用到的函数库(library)就在这个目录下 |
/root | 系统管理员的根目录 |
/sbin | 放置系统管理常用的程序,例如fdisk,mke2fs,fsck,mkswap和mount等。与/bin不太一样,这个目录下的程序通常是root等系统管理员使用的程序 |
/tmp | 这是让一般用户存放临时文件的地方 |
/usr | 这是最重要的一个目录,,里面含有很多系统信息 |
/usr/share/man | 放置一些程序的说明文件的地方,就是您使用man时会查询的路径 |
/usr/src | 是放置核心源代码的默认目录 |
/var | 所有服务的登录文件或错误信息文件(log files)都在/var/log下,一些数据库如MySQL则在/var/lib下,用户未读取邮件的默认存放地点为/var/spool/mail |
需要注意的目录
在Linux系统中,有几个目录需要特别注意,下面列出这几个目录及相关的用途。
· /etc:这个目录相当重要,如前所述,启动与系统数据文件均在这个目录下,因此当这个目录被破坏,您的系统也就差不多该死掉了!而在后面,您会发现我们常常使用这个目录下的/etc/rc.d/init.d子目录,因为该目录用于存放启动一些Linux系统服务的脚本(可以认为是批处理文档)。而在/etc/rc.d/rc.local这个文件是启动执行文件,有点类似旧Windows系统下的autoexec.bat及config.sys。所以,如果您有需要在启动时加载的服务或执行文件,可以写在这个文件的最后一行,则启动时就会自动加载执行文件了。
· /bin,/sbin,/usr/bin,/usr/sbin:这是系统默认的执行文件的放置目录,例如root常用的userconf,netconf,perl,gcc,C++等数据都放在这几个目录中,所以如果您在提示符下找不到某个执行文件,可以在这4个目录中查找。其中,/bin和/usr/bin是系统用户使用的目录,而/sbin和/usr/sbin则是系统管理员使用的目录。
· /usr/local:这是系统预留的让您安装后来升级的套件的目录。例如,当您发现有更新的Web套件(如Apache),而又不想以RPM的方式升级套件,则可以将apache套件安装在/usr/local下。安装在这里有个好处,因为目前大家的系统都差不多,所以如果您的系统要让别人接管,也较容易上手,比较容易找到数据。因此,如果需要,通常我都会将/usr/local/bin路径加到我的path中。
· /home:这是系统默认的用于存放用户账号的根目录。
· /var:这个目录很重要。登入、各类服务发生问题时的记录,以及常规性的服务记录等都记在这个目录下,所以当您的系统出现问题,就需要在这个目录记录的文件数据中查看问题所在。另外,mail的默认位置也在这里,所以这个目录非常重要。
· /usr/share/man,/usr/local/man:这两个目录为放置各类套件说明文档的地方,例如,您执行man man,则系统自动查找这两个目录下的所有说明文件,如果有相同的数据就会显示出来。
课后练习:
1. 早期的Unix系统文件名最多允许14个字符,而新的Unix与Linux系统,其文件名最多可以容许多少字符?
在Linux下,每个文件或目录的文件名最长可以达到256个字符。
2. 若文件属性为–rwxrwxrwx,则表示这个文件的意义是什么?
该文件的拥有者具有可读可写可执行的权利
该拥有者所属的群组具有可读可写可执行的权利
其他人具有可读可��可执行的权利。
3. 我需要将一个文件的属性改为–rwxr-xr–,请问该输入什么指令?
方法一:chmod u=rwx, g=rx, o=r 文件名
方法二:chmod 754 文件名
4. 若需要更改一个文件的拥有者与群组,该用什么指令?
chown
5. Linux传统的文件系统是什么?此外,常用的带有日志管理功能的文件格式有哪些?
linux传统的文件系统为:ext2。常用的带有日志管理功能的文件格式有:ext3和reiserfs.
6. 请说出下面的目录主要放置什么数据。
/etc/:系统在启动过程中需要读取的文件均在这个目录下
/etc/rc.d/init.d:所有服务默认的启动脚本文件都放在这里
/boot:这里是放置Linux核心与启动相关文件的地方
/usr/bin,/bin:系统用户使用的目录,系统默认的执行文件的存放位置
/usr/sbin,/sbin:系统管理员使用的目录,系统默认的执行文件的存放位置
/dev:存放与设备有关的文件
/var/log:所有服务的登录文件或错误信息文件
7. 若一个文件的文件名以“.”开头,例如.bashrc文件,这代表什么?如何显示这种文件的文件名及其相关属性?
这个文件为隐藏文件,
用ls -al 命令显示
第六章 文件与目录管理绝对路径:路径的写法一定是从根目录“/”写起,例如:/usr/share/doc 目录。
相对路径:路径的写法不是由“/”写起,例如从/usr/share/doc转到/usr/share/man下时,可以写成cd ../man。这就是相对路径的写法。
一些常用的目录“符号”代表的意义,如下表所示。
. | 代表当前层目录 |
.. | 代表上层目录 |
~ | 代表自己的根目录 |
~user | 代表到user这个人的根目录 |
目录与路径的几个常用指令
cd 变换目录
pwd 显示当前目录
mkdir 建立一个新目录
rmdir 删除一个内容为空的空目录
cd语法
[root @test /root ]# cd [相对路径或绝对路径]
范例:
[root @test /root]# cd .. <==回到上一层目录
[root @test /root]# cd ../home <==相对路径的写法
[root @test /root]# cd /var/www/html <==绝对路径的写法
[root @test /etc]# cd <==回到用户的根目录
[root @test /etc]# cd ~ <==回到用户的根目录
[root @test /etc]# cd ~test <==回到test用户的根目录
pwd语法
[root @test /root ]# pwd
pwd是print working directory的缩写,是显示当前目录的指令
mkdir语法
[root @test /root ]# mkdir [目录名称]
范例:
[root @test /root]# mkdir test <==建立名为test的目录
rmdir语法
[root @test /root ]# rmdir [目录名称]
范例:
[root @test /root]# rmdir test <==删除名为test的目录
环境变量PATH
echo $PATH(会显示当前PATH)
[root@test root]# echo $PATH
/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin
将/root的路径加入PATH中,可以使用如下指令
PATH=”$PATH”:/root
文件与目录管理基础
ls 显示文件名称、属性等
cp 复制文件或目录
rm 删除文件或目录
mv 移动文件或目录
ls
语法:
[root @test /root ]# ls [-ailS]
参数说明:
-a :列出所有文件(连同隐藏文档)
-i :打印inode的值
-l :详细列出,连同文件大小、属性数据等
-S :以文件大小排序
–color=never :不显示颜色
–color=always :均显示颜色
–color=auto :由系统自行判断
cp
语法:
[root @test /root ]# cp [-drsu] [源文件] [目标文件]
参数说明:
-d :进行复制时,如果是复制到链接文件,若不加任何参数,则默认情况下会将链接到的源文件复制到目的地,若加-d,则链接文件可原封不动地将链接这个快捷方式复制到目的地。
-r :可以进行目录的复制。
-s :做成链接文件,与ln指令功能相同。
-u, –update:如果源文件较新,或者没有目标文件,才会进行复制动作。可用于备份操作。
范例:
[root @test /root]# cp .bashrc bashrc
将.bashrc复制成bashrc文件!
rm
语法:
[root @test /root ]# rm [-fir] [文件名]
参数说明:
-i :提供用户确认(这是默认值)。
-r :循环删除,直到没有东西为止。
-f :force,就是强制删除。
mv
语法:
[root @test /root ]# mv [-u] [源文件] [目标文件]
参数说明:
-u :同样,为update的简写,当源文件比目标文件还新时才会动作!
范例:
[root @test /root]# cp .bashrc bashrc
[root @test /root]# mv bashrc bashrc.old <==也可以用来更改文件名
[root @test /root]# mv bashrc bashrc2 /tmp <==将bashrc与bashrc2移到/tmp目录下。请注意,最后一个才是最终的目标文件,其他的都是源文件
这个指令有两个用途,第一个是移动。在您要移动文件或目录时这个指令很重要。同样,您也可以使用-u (update)测试新旧文件,看看是否需要搬移。另外一个用途就是变更文件名,我们可以很轻易地使用mv来变更文件的文件名。
查看文件内容
cat 由第一行开始显示文件内容
tac 从最后一行开始显示,可以看出,tac是cat的倒写
more 一页一页地显示文件内容
less 与more类似,但其优点是,可以往前翻页
head 只看头几行
tail 只看末尾几行
nl 显示时同时输出行号
od 以二进制方式读取文件内容
cat
语法:
[root @test /root ]# cat [-n]
参数说明:
-n: 显示时,连行号一起输出到屏幕上。
范例:
[root @test /root]# cat ~/.bashrc <==显示.bashrc文件
cat较不常见,因为在文件内容行数超过40行以上时根本来不及看,所以,配合more或者less执行比较好。
tac
语法:
[root @test /root ]# tac [文件名]
参数说明:
范例:
[root @test /root]# tac ~/.bashrc <==发现了没?是反向显示
cat是从第一行到最后一行连续显示在屏幕上,而tac则是从最后一行到第一行反向显示在屏幕上。
more
语法:
[root @test /root ]# more [文件名]
参数说明:
范例:
[root @test /root]# more ~/.bashrc <==一页一页地显示文件内容
[root @test /]# ls -al | more <==一页一页地将ls的内容显示出来
less
语法:
[root @test /root ]# less [文件名]
参数说明:
范例:
[root @test /root]# less ~/.bashrc
less的用法比more更有弹性,使用more时,我们没有办法向前翻看,用less时就可以使用[pageup]、[pagedown]等按键的功能向前向后翻看文件
head与tail常用于仅想读取某个文件的前几行或后几行的情况。
head
语法:
[root @test /root ]# head [-n number] [文件名]
参数说明:
-n :显示number行
范例:
[root @test /root]# head ~/.bashrc <==默认情况下,显示前10行
[root @test /root]# head -n 20 ~/.bashrc <==显示前20行
tail
语法:
[root @test /root ]# tail [-n number] [文件名]
参数说明:
-n :显示number行
范例:
[root @test /root]# tail ~/.bashrc
[root @test /root]# tail -n 5 ~/.bashrc <==只显示最后5行
nl
语法:
[root @test /root ]# nl [文件名]
参数说明:
范例:
[root @test /root]# nl ~/.bashrc
nl指令的用法和cat -n用法相似,即查看文件的同时可以显示行号。
od
语法:
[root @test /root ]# od [文件名]
参数说明:
范例:
[root @test /root]# od ~/.bashrc
Block是记录文件内容数据的区域,inode则是记录该文件的属性及其放置在哪个Block之内的信息。所以,每个文件都会占用一个inode。当Linux系统要查找某个文件时,它会先搜寻inode table找到这个文件的属性及数据放置地点,然后再查找数据存放的Block进而将数据取出
链接又分为硬链接(hard link)与符号链接(symbolic link)两种方式
硬链接就是再建立一个inode链接到文件放置的Block块。
符号链接是再建立一个独立文件,而这个文件会让数据读取操作指向它链接的那个文件。
一个文件名实际上是指向一个inode。然后inode中的信息存放文件的实际存放位置。
硬链接就是在创建一个inode,这个inode里面的信息跟原先的那个inode的存放的信息一样(即指向文件的实际存放位置)。
符号链接是建立一个inode,这个inode里面的信息指向原先的那个inode(指向原先的那个inode)。
语法:
[root @test /root ]# ln [-s] [源文件] [目标文件]
参数说明:
-s :提供符号链接
:如果直接使用ln而不加任何参数,就属于硬链接
文件与目录权限
chown 改变文件的拥有者
chgrp 改变文件的所属群组
chmod 改变文件的可写、可读、可执行等属性
umask 改变预设的建立文件或目录时的属性
chattr 改变文件的特殊属性
lsattr 显示文件的特殊属性
语法:
[root @test /root ]# chown [-R] user:group [目录名称]
参数说明:
-R :循环地将该目录下的所有文件都改成 user 与 group 的名称
范例:
[root @test /root]# mkdir /home/test/testing
在/home/test根目录中建立一个名为testing的子目录
语法:
[root @test /root ]# chmod [-R] [parameter] [目录名称]
参数说明:
-R :循环地将该目录的文件都改变
范例:
[root @test /root]# chmod 777 .bashrc
一个文件或目录至少有9个属性,三三一组,共分为三组。可以使用数字当作变换属性
的参考依据
umask用于指定当前用户在建立文件或目录时的属性默认值。
查看umask数值直接输入umask即可,要设定其值,在umask之后接3个数字。如何指定这3个数字呢?主要还是和Linux的文件属性(那9个属性,r, w, x)有关,同时参考下面的规则。
· 若用户建立的是“文件”,则默认没有可执行(x)项,即只有rw这两个项,也就
是最大为666(-rw-rw-rw);
· 若用户建立的是“目录”,则由于x与是否可以进入此目录有关,因此默认为所有
权限均开放,亦即777(drwxrwxrwx)。
umask指定的是“该默认值需要取消的权限”,因为r,w,x分别是4,2,1,所以,当要取消写权限,就输入2,而如果要取消读权限,就输入4
chattr
语法:
[root @test /root ]# chattr [+-=][ASacdistu] [文件或目录名称]
参数说明:
+-= :分别为“+”(增加)、“-”(减少)、“=”(设定)属性
A :当设定了属性A,这个文件(或目录)的存取时间atime (access)将不可被修改,可避免
诸如手提电脑容易产生磁盘I/O错误的情况
S :这个功能有点类似sync,是将数据同步写入磁盘中,可以有效避免数据流失
a :设定a后,这个文件将只能增加数据而不能删除,只有root才能设定这个属性。
c :设定这个属性之后,将会自动将此文件压缩,在读取时自动解压缩。但是在存储的时候,会
先进行压缩再存储(对于大文件很有用)
d :当dump(备份)程序被执行,设定d属性将可使该文件(或目录)具有dump功效
i :这个参数可以让一个文件“不能被删除、更名、设定链接也无法写入或新增数据”,对于系
统安全性有相当大的助益
j :当使用ext3文件系统格式时,设定j属性将使文件在写入时先记录在日志中,但是当
filesystem设定参数为data=journalled时,由于已经设定了日志,所以这个属性无效
s :当文件设定了s参数时,它会被完全移出这个硬盘空间
u :与s相反,当使用u配置文件时,数据内容其实还存在于磁盘中,可以用来取消删除
范例:
[root @test /root]# chattr +i /etc/shadow
如此则无法更动这个文件
[root @test /root]# chattr -i /etc/shadow
解除该属性
lsattr
语法:
[root @test /root ]# lsattr [-aR]
参数说明:
-a :将隐藏文件的属性也显示出来
-R :连同子目录的数据一并显示出来
搜寻文件或目录
which 查看可执行文件的位置
whereis 查看文件的位置
locate 配合数据库查看文件位置
find 实际搜寻硬盘查询文件名称
which
语法:
[root @test /root ]# which [文件名称]
参数说明:
范例:
[root @test /root]# which passwd
/usr/bin/passwd
which的基本功能是通过PATH环境变量到该路径内寻找可执行文件,所以基本的功能在于寻找可执行文件。
whereis
语法:
[root @test /root ]# whereis [-bmsu] [目录名称]
参数说明:
-b :只找二进制文件
-m :只找在说明文件manual路径下的文件
-s :只找source源文件
-u :没有说明文档的文件!
范例:
[root @test /root]# whereis passwd
passwd:/usr/bin/passwd/etc/passwd /usr/share/man/man1/passwd.1.bz2
将passwd相关字的文件或目录都列出来。
[root @test /root]# whereis -b passwd
passwd: /usr/bin/passwd /etc/passwd
仅列出二进制文件。
[root @test /root]# whereis -m passwd
passwd: /usr/share/man/man1/passwd.1.bz2
仅搜寻man page所在的目录。
locate
语法:
[root @test /root ]# locate [目录名称]
参数说明:
范例:
[root @test /root]# locate root
……一大堆带有root字符串的文件都会显示出来
[root @test /root]# updatedb
立刻更新数据库
locate的使用方式就更简单了,直接输入要找的文件名即可。但是,这个工具有一些使用限制。您会发现,使用locate查找数据特别快,这是因为locate是从已建立的数据库/var/lib/slocate中查找数据,不用直接在硬盘中存取数据,所以自然很快。
find
语法:
[root @test /root ]# find [路径] [参数]
参数说明:
1. 时间:
-atime n :将n*24小时内被存取过的文件列出来
-ctime n :将n*24小时内被改变、新增的文件或目录列出来
-mtime n :将n*24小时内被修改过的文件列出来
-newer file :把比file还要新的文件列出来
2. 使用名称:
-gid n :寻找群组ID为n的文件
-group name :寻找群组名称为name的文件
-uid n :寻找拥有者ID为n的文件
-user name :寻找用户名称为name的文件
-name file :寻找文件名为file的文件名称(可以使用通配符)
-type type :寻找文件属性为type的文件,type包含了b, c, d, p, l, s,
这些与前一章的属性相同。例如l为Link而d为目录
范例:
[root @test /root]# find / -name testing <==寻找文件名为testing
[root @test /root]# find / -name ‘test*’ <==寻找文件名包含test的
[root @test /root]# find . -ctime 1
寻找当前目录下一天内新增的目录或文件
1. 什么是绝对路径与相对路径?
2. 如何更改一个目录的名称,例如由/home/test变为/home/test2?
3. PATH环境变量的意义是什么?
4. umask有什么用处与优点?
5. 当一个用户的umask分别为033与044,他所建立的文件与目录的权限为什么?
6. 什么是SUID?
7. 当要查询/usr/bin/passwd文件的一些属性时,可以使用什么指令?
8. 尝试用find找出当前Linux系统中所有具有SUID的文件。
课后练习
1. 什么是绝对路径与相对路径?
绝对路径:从根目录开始的路径
相对路径:从当前路径开始的路径
2. 如何更改一个目录的名称,例如由/home/test变为/home/test2?
mv /home/test /home/test2
3. PATH环境变量的意义是什么?
命令搜索的路径
4. umask有什么用处与优点?
umask 可以拿掉一些权限,因此,适当的定义 umask 有助於系统的安全, 因为他可以用来创建默认的目录或文件的权限。
5. 当一个用户的umask分别为033与044,他所建立的文件与目录的权限为什么?
umask指的是“该默认值要减掉的权限”,文件最大权限为-rw-rw-rw,
目录最大权限为-rwxrwxrwx,所以
文件:033表示:-rw-r–r– 目录:-rwxr–r–
文件:044表示:-rw–w–w- 目录:-rwx-w–w-
6. 什么是SUID?
当一个命令具有 SUID 的功能时,则:
- SUID 权限仅对二进位程序(binary program)有效;
- 运行者对於该程序需要具有 x 的可运行权限;
- 本权限仅在运行该程序的过程中有效 (run-time);
- 运行者将具有该程序拥有者 (owner) 的权限。
7. 当要查询/usr/bin/passwd文件的一些属性时,可以使用什么指令?
传统权限 ls -al
文件类型 file
文件的隐藏属性 lsattr /usr/bin/passwd
8. 尝试用find找出当前Linux系统中所有具有SUID的文件。
find / -perm +4000 -print
9.找出 /etc 底下,文件容量大於 50K 且文件所属人不是 root 的档名,且将权限完整的列出 (ls -l);
find /etc -size +50k -a ! -user root -exec ls -ld {} \;
find /etc -size +50k -a ! -user root -type f -exec ls -l {} \;
上面两式均可!注意到 ! ,那个 ! 代表的是反向选择,亦即『不是后面的项目』之意!
10.找出 /etc 底下,容量大於 1500K 以及容量等於 0 的文件:
find /etc -size +1500k -o -size 0
相对於 -a ,那个 -o 就是或 (or) 的意思罗!