810 likes | 993 Views
Redhat 7 服务器管理培训 2. 2002 年 5 月 刘亢 liukange@netease.com. 文件系统的权限. Linux 系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。. 使用 ls – l 命令来看文件的权限. $ ls -l -rw-r--r-- 1 qiujn qiujn 745559 Mar 6 2001 anonftp-3.0-9.i386.rpm
E N D
Redhat 7 服务器管理培训 2 2002年5月 刘亢 liukange@netease.com
文件系统的权限 • Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。
使用ls –l命令来看文件的权限 $ ls -l -rw-r--r-- 1 qiujn qiujn 745559 Mar 6 2001 anonftp-3.0-9.i386.rpm -rw-rw-r-- 1 qiujn qiujn 15167 Mar 26 01:59 l -rw-rw-r-- 1 root root 154806 Oct 6 14:20 wget-1.5.3-4.i386.rpm
ls –l结果的说明 1 文件的类型: - 表示普通文件。 b 表示块设备文件 c 表示字符设备文件 d 表示目录 l 表示符号链接 文件的访问权限: r(读):表示只允许读其内容。 w(写):表示允许对其做任何的更改操作。 x(执行):表示允许将该文件作为一个程序执行。 - : 没有设置权限。
ls –l的结果说明 2 • s :当文件被执行时,把该文件的UID或GID赋予执行进程的UID(用户ID)或GID(组 ID)。 • t :设置标志位(留在内存,不被换出)。如果该文件是目录,在该目录中的文件只能被超级用户、目录拥有者或文件属主删除。如果它是可执行文件,在该文件执行后,指向其正文段的指针仍留在内存。这样再次执行它时,系统就能更快地装入该文件。
uid 和gid的概念 uid 和 gid通常都是唯一的 他们是一串大于0小于65536的数字 不同的用户的uid是不一样的 如果两个用户的uid一样,即使登陆名不一样,系统仍然把这2个用户当成同一个用户。 gid用户所在组的id.
目录的访问权限 r(读):表示可以列出目录中有那些文件。 w(写):表示可以在该目录中添加删除文件。 x(执行):可以进入,列出该目录中下的文件的相关内容。 每一文件或目录的访问权限都有三组,每组用三位表示,分别为: • 文件属主的读、写和执行权限。 • 与属主同组的用户的读、写和执行权限。 • 系统中其他用户的读、写和执行权限。
改变权限的命令 1 chmod 命令:用于改变文件或目录的访问权限。有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
chmod 1. 文字设定法 chmod [who] [+ | - | =] [mode] 文件名 操作对象who可是下述字母中的任一个或者它们的组合: u 表示“用户(user)”,即文件或目录的所有者。 g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。 o 表示“其他(others)用户”。 a 表示“所有(all)用户”。它是系统默认值。 操作符号可以是: + 添加某个权限。 - 取消某个权限。 = 赋予给定权限并取消其他所有权限(如果有的话)。
chmod 设置mode所表示的权限可用下述字母的任意组合: r 可读。 w 可写。 x 可执行。 X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。 s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。 t 保存程序的文本到交换设备上。 u 与文件属主拥有一样的权限。 g 与和文件属主同组的用户拥有一样的权限。 o 与其他用户拥有一样的权限。 文件名:以空格分开的要改变权限的文件列表,支持通配符。 例如: chmod g+r,o+r example
实验 使用chmod命令修改一个文件的权限 权限要求:当前用户可读可写,同组用户可读,其他用户不可读 chmod u+r,u+w, g=r, o-r, filename 使用ls –l命令确认权限是否正确
chmod 2. 数字设定法 属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。8进制的文件属性 数字设定法的一般形式为: chmod [mode] 文件名 $ chmod 644 mm.txt -rw-r--r-- 1 inin users 1155 Nov 5 11:22 mm.txt
实验 使用chmod设置某文件的权限为当前用户完全控制(可读可写可执行),同组用户可读可写,其他用户可读。 chmod 764 filename
改变权限的命令 2 chgrp命令:改变文件或目录所属的组。 语法:chgrp [选项] group filename 该命令改变指定指定文件所属的用户组。其中group可以是用户组ID,也可以是/etc/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。 该命令的各选项含义为: - R 递归式地改变指定目录及其下的所有子目录和文件的属组。 $ chgrp - R book /opt/local /book
实验 使用chgrp命令修改某文件的组 将文件的组修改为class2 使用ls -l命令来确认是否成功
改变权限的命令 3 chown 命令更改某个文件或目录的属主和属组 语法:chown [选项] 用户或组 文件 说明:chown将指定文件的拥有者改为指定的用户或组。用户可以是用户名或用户ID。组可以是组名或组ID。文件是以空格分开的要改变权限的文件列表,支持通配符。
chown 该命令的各选项含义如下: - R 递归式地改变指定目录及其下的所有子目录和文件的拥有者。 - v 显示chown命令所做的工作。 例1:把文件shiyan.c的所有者改为wang。 $ chown wang shiyan.c 例2:把目录/his及其下的所有文件和子目录的属主改成wang,属组改成users。 $ chown - R wang.users /his
实验 使用chown命令将某文件的署主修改为class2 使用ls –l命令确认是否成功
显示文件内容命令 1 1.cat命令: 功能1:在标准输出上显示文件。 例如: cat 123 则显示当前目录下123这个文件的内容。
cat 2 功能2:连接两个或多个文件 说明:该命令功能之二是用来将两个或多个文件连接起来。 例2:$ cat file1 file2 > file3
实验 使用cat命令来看一下“家”目录下的hello这个文件。
显示文件内容命令 2 • 2.more命令 • 功能:在终端屏幕按屏显示文本文件。 • 语法: more [ - 选项 ] 文件 • 说明: 该命令一次显示一屏文本,显示满之后,停下来,并在终端底部打印出- - More- - ,系统还将同时显示出已显示文本占全部文本的百分比,若要继续显示,按回车或空格键即可。
实验 使用more命令看“家”目录下的long这个文件
显示文件内容命令 3 3.less命令 less命令的功能几乎和more命令一样,也是用来按页显示文件,不同之处在于less命令在显示文件时允许用户既可以向前(b)又可以向后(z)翻阅文件。
实验 用less命令来看刚才看过的”long”文件
显示文件内容命令 4 4.head命令:用head命令只显示文件或标准输入的头几行。 语法:head [- n ] 文件 功能:显示指定文件的前若干行。 说明:该命令显示每个指定文件的前面n行。若没有给出n值,缺省设置为10。如果没有指定文件,head就从标准输入读取。 例如显示文件example.c的前3行。 $ head - 3 example.c
实验 使用head命令看”long”这个文件的前5行
显示文件内容命令 5 5.tail命令:如果用户想查看文件的尾部,可以使用tail命令。 语法:tail [+ / - num ] [参数] 文件 说明:该命令显示一个文件的指定内容。它把指定文件的指定显示范围内的内容显示在标准输出上。如果没有给定文件名,则使用标准输入文件。 tail命令中各个选项的含义为: +num 从第num行以后开始显示。 - num 从距文件尾num行处开始显示。如果省略num参数,系统默认值为10。 例如:将显示文件example的最后4行 $ tail -4 example
实验 使用tail文件显示long这个文件的后6行
内容查询命令 1 grep命令 管道“|” ls –al |grep abc 只显示出带有abc的那一行
内容查询命令2 find 功能:在目录结构中搜索文件并执行指定的操作语法:find 起始目录 寻找条件 操作说明:find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作。该命令提供的寻找条件可以是一个用逻辑运算符not、and、or组成的复合条件
find • 1)and:与,用“-a”表示,是缺省选项,如:find –name ’tmp’–xtype c -user ’inin’ 2)or:或,用“-o”表示。如:$ find –name ’tmp’–o –name ’mina*’ 3)not:,用“!”表示。如:$ find ! –name ’tmp’ • 需要说明的是:当使用很多的逻辑选项时,可以用括号把这些选项括起来。为了避免Shell本身对括号引起误解,在话号前需要加转义字符“\”来去除括号的意义。例:$ find \(–name ’tmp’–xtype c -user ’inin’ \) 寻找条件有以下选项:首先,下列各个选项中的n值可以有三种输入方式,假设n为20,则:+20 表示20以后(21,22,23等)-20 表示20以前(19,18,17等)20 表示正好是20
find i. 以名称和文件属性查找- name ’字符串’ 查找文件名匹配所给字符串的所有文件,字符串内可用通配符*、?、[ ]。- lname ’字符串’ 查找文件名匹配所给字符串的所有符号链接文件,字符串内可用通配符*、?、[ ]。-gid n 查找属于ID号为n的用户组的所有文件。-uid n 查找属于ID号为n的用户的所有文件。-group ’字符串’ 查找属于用户组名为所给字符串的所有的文件。-user ’字符串’ 查找属于用户名为所给字符串的所有的文件。-empty 查找大小为0的目录或文件。-path ’字符串’ 查找路径名匹配所给字符串的所有文件,字符串内可用通配符*、?、[ ]。-perm 权限 查找具有指定权限的文件和目录,权限的表示可以如711,644。-size n[bckw] 查找指定文件大小的文件,n后面的字符表示单位,缺省为b。-type x 查找类型为x的文件,x为下列字符之一:(b 块设备文件、c 字符设备文件、d 目录文件、p 命名管道(FIFO)、f 普通文件、l 符号链接文件、s socket文件)-xtype x 与-type基本相同,但只查找符号链接文件。
find ii. 以时间为条件查找- amin n 查找n分钟以前被访问过的所有文件。- atime n 查找n天以前被访问过的所有文件。- cmin n 查找n分钟以前文件状态被修改过的所有文件。- ctime n 查找n天以前文件状态被修改过的所有文件。- mmin n 查找n分钟以前文件内容被修改过的所有文件。- mtime n 查找n天以前文件内容被修改过的所有文件。
find iii. 可执行的操作- exec 命令名称 {} 对符合条件的文件执行所给的Linux命令,而不询问用户是否需要执行该命令。{}表示命令的参数即为所找到的文件;命令的末尾必须以“\;”结束。- ok 命令名称 { } 对符合条件的文件执行所给的Linux 命令,与exec不同的是,它会询问用户是否需要执行该命令。- ls 详细列出所找到的所有文件。- fprintf 文件名 将找到的文件名写入指定文件。- print 在标准输出设备上显示查找出的文件名。- printf 格式 格式的写法请参考有关C语言的书。 例1:查找当前目录中所有以main开头的文件,并显示这些文件的内容。$ find . - name ‘main*’ - exec more {} \;
find 例2:删除当前目录下所有一周之内没有被访问过的a .out或*.o文件。$ find . \(- name a.out - o - name ‘*.o’\)- atime +7 - exec rm {} \;说明:\(和\)表示括号(),其中的“\”称为转义符。 “- name a.out”是指要查找名为a.out的文件;“- name ‘*.o’”是指要查找所有名字以.o结尾的文件。这两个- name之间的- o表示逻辑或(or),即查找名字为a.out或名字以.o结尾的文件,find在当前目录及其子目录下找到这佯的文件之后,再进行判断,看其最后访问时间是否在7天以前(条件-atime +7),若是,则对该文件执行命令rm(- exec rm{ }\;)。其中{}代表当前查到的符合条件的文件名,\;则是语法所要求的。
内容查询命令3 3.locate命令locate命令用于查找文件,它比find命令的搜索速度快,它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来建立。当我们建立好这个数据库后,就可以方便地来搜寻所需文件了。
locate 该命令的一般形式为:locate 相关字例如:查找相关字issue $ locate issue /etc/issue /etc/issue.net /usr/man/man5/issue.5 /usr/man/man5/issue.net.5
文本编辑器vi • VI 是一个全屏幕的编辑器 • Unix 系统必备的工具程序 • 功能强大 • 另外有 VIM 提供更多的功能 • 有 X Window 的 VIM 版本 • VI/VIM 有 Window 的版本
Vi的模式 • Command Mode (命令模式) • 这是执行该程序后启动的模式 • 此时键盘输入操作当作命令 • 命令字符有大小写之区分 • Input Mode (插入模式) • 使用 a、i、o 指定即可开始进行输入数据 • 文件区前面出现 ~ 表示未使用部分 • 按下 ESC 键即可回到 Command Mode
Vi的模式 • Last Mode (上个模式) • 于 Command Line 按下 : 即可进入该模式 • 用来进行储存、开档或环境的设定 • 命令字符有大小写之区分 • 进入输入模式 • a : 在光标所在位置开始输入数据 • i : 在该行最后结尾开始输入数据 • o : 在光标下行插入一行空白开始输入数据
光标的移动 方向鍵: j :向下方向鍵,下移 k : 向上方向鍵,上移 h : 向左方向鍵,左移l : 向右方向鍵,右移 - : 向上移一行 + : 向下移一行 n- : 向上移 n 行 n+ : 向下移 n 行
屏幕的滚动 Ctrl f : 向下移动一頁,同 PageDown Ctrl b : 向上移动一頁,同 PageUp Ctrl d : 向下移动半頁 Ctrl u : 向上移动半頁
删除命令 • x : 删除光标所在字符 • X :删除光标所在的前一个字符 • nx : 删除光标所在后 n 个字符 • dd : 删除游标所在该行 • ndd :删除光标该行开始 n 行 • D : 删除光标开始的字符到结尾 • : n,md : 删除第 n ~ m 行
复制与移动命令 • yy 、Y : 复制光标所在该行数据到 buffer 区域 • nyy 、nY : 复制光标所在n 行数据到 buffer 区域 • :n1,n2 m n3 : 把 n1 ~ n2 行资料搬到第 n3 行后 • :n1,n2 c n3 : 把 n1 ~ n2 行数据复制第 n3 行后 • p : 贴于游标所在行之下 • P : 贴于游标所在行之上 • v : 字符标记 V : 行标记 • Ctrl V : 矩形标记 • d : 删除标记区的数据 y : 复制标记区的数据
寻找与取代 /string : 向下找 string ?string : 向上找 string n : 重复上次的寻找 :s/string1/string2 : 把光标该行第一个 string1 取代 成为 string2 :s/string1/string2/g : 同上,不过是同一行内容进行取代 :%s/string1/string2/g : 同上,不过是全部内容进行取代 :n1,n2s/string1/string2/g : 把 n1 ~ n2 的 string1 取代成为string2
其他指令 重复指令: . : 重复前面一指定操作 u : 取消前一指令的操作 U : 取消对该行的任何修改 (光标没有离开该行方有效) 状态列操作: :syntax off : 关闭语法解析 :line n : 跳至某一行 :set number : 设定显示行数 :set nonumber 其它指令 : Ctrl – l : 屏幕重绘指令 Ctrl – g : 显示相关状态 :!command : 执行某个 command :help : vi 的说明
打开文件和关闭文件 • # vi 文件名称 : 打开文件 • :w : 存档 • :q : 离开 • :w! : 强制存档 • :q! : 强制离开 • :wq : 存档后离开 • :wq! : 强制存档后离开 • Ctrl – z : 暂时离开 vi 回到 shell • fg : 在 shell 执行 fg 回到 vi 中
实验 用vi编辑一个文件,练习字符查找 保存后退出
管理命令 • adduser - 新增使用者指令 • rmuser - 从系统中移除使用者 • passwd - 改变使用者的密码 • su - 替代使用者的特性 • dmesg - 显示系统保留信息 • who - 显示谁在线上 • w - 列出谁在线上,并且显示他们在做什么 • date - 显示或设定日期时间