1、第4章 Linux文件系统,补充内容: 1.常用文件扩展名 2.linux目录操作(相对路径和绝对路径) 3.文件信息相关命令(查看、查找等) 4.文件权限(包括特殊权限) 5.目录权限,文件的扩展名(第四章),基本上,Linux文件没有所谓的“扩展名”。一个文件能否被执行,主要看权限,若权限中具有x,则代表这个文件可以被执行。 可执行跟可以执行成功不一样。例如/root目录下有文件install.log,若修改其权限为-rwxrwxrwx后,这个文件仍然不能执行成功。 常用扩展名: *.sh:脚本或批处理文件 *.Z,*.tar,*.tar.gz,*.zip,*.tgz:打包或压缩文件 *.
2、html,*.php:网页相关文件 文件扩展名只能让我们了解文件可能的用途。,4.3 Linux系统的文件操作命令,Linux的文件信息显示命令 cat查看文件信息命令,从第一行开始显示 tac查看文件信息,从最后一行开始显示 more一页一页显示文件内容 less与more相似,但可以往前翻页 head只看头几行 tail只看末尾几行 nl显示时同时输出行号,Linux系统的文件操作命令,Linux的文件检索、排序命令 find实际搜索硬盘查询文件名称 which查看可执行文件的位置 whereis查看文件的位置 locate配合数据库查看文件位置 grep文件信息检索命令 sort排序命令
3、,find命令,语法:find 路径选项 例:find / -name test/文件名为test的文件 例:find / -name test*/文件名包含test 例:find /home -user test/查找/home下属主为test的文件 例:find /dev -type -b/查找/dev目录下文件类型为块设备的文件 缺点:耗硬盘,which命令,语法:which 文件名称 例:which passwd 基本功能:查找可执行文件。,whereis命令,语法:whereis 选项目录名称 例:whereis passwd/将passwd相关字的文件或目录都列出 例:wherei
4、s -b passwd/仅列出二进制文件 例:whereis -m passwd/仅搜寻man page所在的目录 优点:搜索速度快,locate命令,语法:locate 目录名称 例:locate passwd/带有passwd字符串的文件都将列出 优点:速度快 缺点:有使用限制。数据库更新前新建的文件找不到,必须要在更新数据库之后才能搜索到。,SUID,当 s 这个标志出现在文件拥有者的 x 权限上时,例如刚刚提到的 /usr/bin/passwd 这个文件的权限状态:-rwsr-xr-x,此时就被称为 Set UID,简称为 SUID 的特殊权限。 SUID的权限对于一个文件有如下的功能
5、: SUID 权限仅对二进制程序(binary program)有效; 运行者对于该程序需要具有 x 的可运行权限; 本权限仅在运行该程序的过程中有效 (run-time); 运行者将具有该程序拥有者 (owner) 的权限。,SGID,当一个目录配置了 SGID 的权限后,它将具有如下的功能: 使用者若对于此目录具有 r 与 x 的权限时,该使用者能够进入此目录; 使用者在此目录下的有效群组(effective group)将会变成该目录的群组; 用途:若使用者在此目录下具有 w 的权限(可以新建文件),则使用者所创建的新文件,该新文件的群组与此目录的群组相同。,Sticky Bit,Sti
6、cky Bit(SBIT)目前只针对目录有效,对于文件已经没有效果了。SBIT 对于目录的作用是: 当使用者对于此目录具有 w, x 权限,亦即具有写入的权限; 当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件 。 当甲这个使用者于 A 目录是具有群组或其他人的身份,并且拥有该目录 w 的权限, 这表示:甲使用者对该目录内任何人创建的目录或文件均可进行 “删除/更名/搬移“ 等动作。 不过,如果将 A 目录加上了 SBIT 的权限项目时, 则甲只能够针对自己创建的文件或目录进行删除/更名/移动等动作,而无法删除他人的文件。,Sticky Bit,举例来说,我们的 /
7、tmp 本身的权限是drwxrwxrwt, 在这样的权限内容下,任何人都可以在 /tmp 内新增、修改文件,但仅有该文件/目录创建者与 root 能够删除自己的目录或文件。这个特性很重要! 可以这样做个简单的测试: 以 root 登录系统,并且进入 /tmp 当中; touch test,并且更改 test 权限成为 777 ; 以一般使用者登录,并进入 /tmp; 尝试删除 test 这个文件!,SUID/SGID/SBIT 权限配置,例:rootwww # cd /tmp rootwww tmp# touch test rootwww tmp# chmod 4755 test; ls -l
8、 test -rwsr-xr-x 1 root root 0 Sep 29 03:06 test rootwww tmp# chmod 6755 test; ls -l test -rwsr-sr-x 1 root root 0 Sep 29 03:06 test rootwww tmp# chmod 1755 test; ls -l test -rwxr-xr-t 1 root root 0 Sep 29 03:06 test rootwww tmp# chmod 7666 test; ls -l test -rwSrwSrwT 1 root root 0 Sep 29 03:06 test
9、 注意最后一条命令!因为s和t都是取代x这个权限的,我们是下达 7666!即user, group以及others都没有x这个可执行的标志(因为666),所以,这个 S,T 代表的就是空的!,查看文件类型,file命令:查看文件类型 例:file /etc/passwd,权限对文件与目录的意义,例:有个目录的权限如下:drwxr-r- 3 root root 4096 Mar 10 08:10 .ssh系统有个账号名称为stu,这个账号不属于root组,请问stu对这个目录有何权限?是否可以切换到此目录中? 结论:x在目录中是与“能否进入该目录”有关。要开放目录给别人浏览,应该至少给予r及x的
10、权限。,权限对文件与目录的意义,例:有个账号名称为tom,他的账户目录在/home/tom,tom对此目录具有rwx的权限。若在此目录下有个名为the_root.data的文件,该文件的权限如下:-rwx- 1 root root 4356 Sep 19 23:20 the_root.data请问tom对此文件的权限为什么?可否删除此文件? 结论:w具有相当重要的权限,他可以让使用者删除、更新、新建文件或目录。,补充:权限与命令的关系,让用户能进入某目录成为“可工作目录”的基本权限为何: 可使用的命令:例如 cd 等变换工作目录的命令; 目录所需权限:用户对这个目录至少需要具有 x的权限 额外
11、需求:如果用户想要在这个目录内利用 ls 查阅文件名,则用户对此目录还需要 r 的权限。 用户在某个目录内读取一个文件的基本权限为何? 可使用的命令:例如本章谈到的 cat, more, less等等 目录所需权限:用户对这个目录至少需要具有 x 权限; 文件所需权限:用户对文件至少需要具有 r 的权限!,补充:权限与命令的关系,使用户可以修改一个文件的基本权限为何? 可使用的命令:例如 nano 或未来要介绍的 vi 编辑器等; 目录所需权限:用户在该文件所在的目录至少要有 x 权限; 文件所需权限:用户对该文件至少要有 r, w 权限 使用户可以建立一个文件的基本权限为何? 目录所需权限:
12、用户在该目录要具有 w,x 权限,重点在 w ! 使用户进入某目录下执行该目录下的某个命令的基本权限为何? 目录所需权限:用户在该目录至少要有 x的权限; 文件所需权限:用户对该文件至少需要有 x 的权限,权限与命令的关系(自制),补充:权限W,【关于权限w的理解】要判断用户对某个文件、目录是否有权删除,应该看用户对其父目录的操作权限,而不是其本身权限w对于文件来说意味着修改(注意不是删除),对于目录来说则意味:a.建立新的文件与目录b.删除已经存在的文件与目录(不论文件是属于谁的)c.将已存在的文件或目录进行重命名d.移动该目录内的文件、目录的位置,补充:权限与命令的关系,例:让一个用户st
13、u能够进行cp /dir1/file1 /dir2的命令时,请说明 dir1, file1, dir2 的最小所需权限为何? 答:执行 cp 时, stu要能够读取源文件,并能写入目标文件!所以应参考前面第二点和第四点的说明! 因此各文件/目录的最小权限应该是: dir1 :至少需要有 x 权限; file1:至少需要有 r 权限; dir2 :至少需要有 w, x 权限。,补充:权限与命令的关系,例:有一个文件全名为 /home/student/www/index.html ,各相关文件/目录的权限如下: drwxr-xr-x 23 root root 4096 Sep 22 12:09 /
14、 drwxr-xr-x 6 root root 4096 Sep 29 02:21 /home drwx- 6 student student 4096 Sep 29 02:23 /home/student drwxr-xr-x 6 student student 4096 Sep 29 02:24 /home/student/www -rwxr-r- 6 student student 369 Sep 29 02:27 /home/student/www/index.html 请问tom这个账号(不属于student群组)能否读取 index.html 这个文件? 答:虽然 www 与 in
15、dex.html是可以让tom读取的权限,但是因为目录结构是由根目录一层一层读取的, 因此tom可进入 /home 但是却不可以进入 /home/student/ ,既然连进入 /home/student 都不许, 当然就读不到 index.html 了!所以答案是tom不会读取到 index.html 的内容。 那要如何修改权限呢?其实叧要将 /home/student 的权限修改为最小 711 ,或者直接给予 755 就可以!,补充:inode(索引节点),操作系统中的文件数据除了文件实际内容外,通常含有非常多的属性,例如Linux操作的文件权限(rwx)与文件属性(拥有者、群组、时间参数
16、等)。文件系统通常会把这两部分存放在不同的区块,权限与属性放到inode中,实际数据放在data block中。另外,还有一个超级区块(superblock)会记录整个文件系统的整体信息,包括inode与block的总量、使用量、剩余量等。 每个inode与block都有编号,每个文件占用一个inode,inode内有文件数据放置的block编号。因此,若找到文件的inode,则自然会知道这个文件所放置数据的block编号。,第5章 Linux系统管理,补充内容: 1.用户登录具体管理及范例 2.群组管理员 3.身份切换(su 和sudo) 4.进程管理 5.at作业和cron作业,5.1 用
17、户和组管理,Linux 系统上面的用户如果需要登入主机以取得 shell 的环境来工作,首先,他必须要在计算机前面利用 tty1tty7 的终端机提供的 login 接口,并输入账号和密码后才能够登录。输入账号密码后,系统帮忙做了以下工作: 先找寻 /etc/passwd 里面是否有你输入的账号?如果没有则跳出,如果有的话则将该账号对应的UID 和 GID (在 /etc/group 中) 读出来,另外,该账号的家目录和 shell 设定也一并读出; 再来则是核对密码表!这时 Linux 会进入 /etc/shadow 里面找出对应的账号与 UID,然后核对一下刚刚输入的密码与里头的密码是否相
18、符; 如果一切都 OK ,就进入 Shell 管控的阶段。,用户及组的管理命令,用户帐户管理命令 useradd usermod passwd chage:详细的密码参数显示;用户初始密码的强制更改 userdel 用户功能 finger chfn chsh id :查询自己或其他用户的相关UID/GID信息,rootwww # useradd agetest /添加用户agetest rootwww # echo “agetest”|passwd -stdin agetest /显示出agetest并修改密码为同名的agetest rootwww # chage d 0 agetest /强
19、制修改密码为agetest,gpasswd群组管理员,范例一:建立一个新群组,名称为testgroup且群组交由stu1管理: rootwww # groupadd testgroup =先建立群组 rootwww # gpasswd testgroup =给这个群组密码 Changing the password for group testgroup New Password: Re-enter new password: rootwww # gpasswd -A stu1 testgroup =加入群组管理员为stu1 rootwww # grep testgroup /etc/grou
20、p /etc/gshadow,gpasswd群组管理员,范例二:以 stu1 登入系统,并且让他添加 stu1和stu3,使他们成为 testgroup 成员 stu1www $ id stu1www $ gpasswd -a stu1 testgroup stu1www $ gpasswd -a stu3 testgroup stu1www $ grep testgroup /etc/group,使用者身份切换(补充),su sudo,使用者身份切换(补充),语法:su -lm -c 命令username -:表示使用login-shell方式登录系统,若没有表示切换身份为root -l:表
21、示后面要加上要切换的用户名, 使用login-shell方式 -m:表示使用当前的环境设定,而不读取新使用者的配置文件 -c:仅使用一次命令,故后面需加上命令,使用者身份切换(补充),例:假设使用者是stu,要切换到root身份,且使用non-login shell方式 stuwww $su rootwww stu#env | grep stu rootwww stu#exit,使用者身份切换(补充),例:stu要执行命令head n 3 /etc/shadow,且已知root密码 stuwww $su - -c “head n 3 /etc/shadow” 例:stu用户要切换到tom用户
22、stuwww $su -l tom,使用者身份切换su小结,若要完整切换到新使用者的环境,必须使用su username或 su l username,这样连同PATH/USER/MAIL变量都转成新用户的环境 若仅执行一次root的命令,可以利用su - -c “命令串”的方式处理 使用root切换到任何使用者时,并不需要输入新用户的密码,使用者身份切换(补充),sudo:sudo的执行仅需要自己的密码 并非所有人都能够执行sudo,仅有规范到/etc/sudoers内的用户才能执行sudo命令 语法:sudo-b-u username -b:将后续的命令放到背景中让系统自行执行,而不与当前
23、的shell产生影响 -u:后面加要切换的使用者,若无此项表示切换到root,使用者身份切换(补充),例:root用户想以stu用户的身份在/tmp下面建立一个名为tmptest的文件 rootwww #sudo u stu touch /tmp/tmptest rootwww #ls -l /tmp/tmptest,使用者身份切换(补充),sudo预设仅有root能使用,sudo的执行流程: 当用户执行sudo时,系统于/etc/sudoers文件中搜寻该使用者是否有执行sudo的权限; 若使用者具有可执行sudo的权限后,便让使用者输入用户自己的密码来确认; 若密码输入成功,便开始执行su
24、do后续接着的命令(但root执行sudo时,不需要输入密码); 若要切换的身份与执行者身份相同,那也不需要输入密码。,进程的属性(p97),父进程,PID=x 程序码=zzz,PPID=x PID=y 程序码=zzz,fork,exec qqq,PPID=x PID=y 程序码=qqq,中间暂存进程,最终的子进程,at作业(p98),at的工作方式 使用at命令产生要执行的作业,并将此作业以文本文件的方式写入var/spool/at目录内,该作业便能等待atd这个服务的取用与执行了。 允许使用at命令的用户 利用/etc/at.allow与/etc/at.deny这两个文件进行at的使用限制
25、 一般的distribution中,系统通常会保留一个空的/etc/at.deny文件,at作业(p98),创建at作业(续) 格式:at -mldv TIME TIME:时间格式,可定义“什么时候要进行at作业”的时间 HH:MM ex04:00 HH:MM YYYY-MM-DD ex04:00 2012-05-08 HH:MMam|pmMonthDate ex04pm March 17 HH:MMam|pm + numberminutes|hours|days|weeks exnow + 5 minutes ex04pm + 3 days,cron作业(p99)(第五章结束),由守护进程c
26、rond管理的计划任务作业 要想实现以固定的间隔时间执行作业,并且能统一管理所有作业,at命令就不能胜任了,我们可以利用强大的crontab命令来实现cron作业。 cron作业的使用者限制 /etc/cron.allow /etc/cron.deny,第6章 vi编辑器的使用,补充内容: 1.光标定位 2.局部替换(自制) 3.区块选择(vim编辑器),第六章6.4.2快速光标定位命令,移至行首 “”或“0”(零) 移至行尾 “$” 移至指定行 “行号G” 移至指定列 “列号l” 移至文件最后一行 G 移至文件第一行 gg 光标向下移动n行 n 光标向右移动n个字符距离 n,局部替换(自制)
27、,命令格式(从n1到n2行,用字符串1替换字符串2):n1,n2 s/字符串2/字符串1/g例如: :50,100 s/man/Man/g 注意:s前面有空格,后面的字符串替换前面的字符串,注意谁替换谁。,补充:区块选择(Visual Block),例:一个文件内容如下: 192.168.1.1 192.168.1.2 192.168.1.3 现在需要在文件变成如下内容: 192.168.1.1 host1 192.168.1.2 host2 192.168.1.3 host3 如何实现? VIM 文件名,补充:区块选择(Visual Block),补充:区块选择(Visual B
28、lock),使用vim启动文档 将光标移动到第一行的host的h上,然后按Ctrl+v 将光标移动到最底部,此时光标移动过的区域会反白 按下y进行复制 将光标移动到第一行的最右边,用插入模式向右按两个空格,回到命令模式,按p键,补充:多窗口功能 (第六章结束),使用vim启动文档 在底行命令模式下输入:sp filename即可 若直接用:sp则出现同一个文件在两个窗口 Ctrl+w+表示光标可移动到上面的窗口 Ctrl+w+表示光标可移动到下面的窗口,第7章 shell程序设计,补充内容: 1.自定义变量转为环境变量 2.变量键盘读取、数组与声明 3.变量内容的删除、取代 4.命令的别名 5
29、.Bash shell的操作环境 6.位置参数,第七章Shell的变量功能,环境变量的功能 export:自定义变量转成环境变量 命令格式:export 变量名称 环境变量与自定义变量的差异在于“该变量是否会被子程序所继续使用”。子程序仅会继承父程序的环境变量,不继承父程序的自定义变量。,Shell的变量功能,变量键盘读取、数组与声明 declare/typeset:声明变量的类型 命令格式:declare -aixr variable -a:变量定义为数组(array)类型 -i:变量定义为整数(integer)类型 -x:用法与export一样,把变量变成环境变量 -r:将变量设定为rea
30、donly类型,该变量不能被更改内容,也不能unset 例:让变量sum进行10+20+30的加总求和 rootwww #declare -i sum=10+20+30 rootwww #echo $sum,Shell的变量功能,变量键盘读取、数组与声明 默认情况下,变量类型为“字符串”,若不指定变量类型,则1+2为一个字符串 Bash环境中的数值运算,预设最多仅能达到整数,所以1/3的结果是0 例:将sum变成环境变量 rootwww declare x sum rootwww export |grep sum 例:让sum变成只读属性。 rootwww declare r sum 例:让s
31、um变成自定义变量。 rootwww declare +x sum rootwww declare -p sum/-p可单独列出变量类型,Shell的变量功能,变量键盘读取、数组与声明 数组变量的设定:varindex=content 例:设定var1var3的变量值 rootwww #var1=“good” rootwww #var2=“better” rootwww #var3=“best” rootwww #echo “$var1, $var2, $var3”,Shell的变量功能(老师没讲过),变量内容的删除、取代 变量内容的删除 例1:让小写的path自定义变量设定的与PATH相同
32、rootwww#path=$PATH rootwww#echo $path 例2:假设我不喜欢kerberos,所以要将前两个目录删除掉,如何显示? rootwww#echo $path#/*kerberos/bin: $variable#/*kerberos/bin:#代表由变量的最前面开始删除,所以便由开始的/写起。*通配0到无穷多个任意字符。,Shell的变量功能(老师没讲过),变量内容的删除、取代 变量内容的删除 例3:要删除前面所有的目录,仅保留最后一个目录 rootwww#echo $path#/*: #:从头开始,删除符合关键词的“最短的”那一个 #:从头开始,删除符合关键词的“
33、最长的”那一个 例4:要删除最后面的那个目录,即从:到bin为止 rootwww#echo $path%:*bin 例5:只保留第一个目录 rootwww#echo $path%:*bin %:从尾开始,删除符合关键词的“最短的”那一个 %:从尾开始,删除符合关键词的“最长的”那一个,Shell的变量功能(老师没讲过),变量内容的删除、取代 变量内容的取代 例6:将path变量内容中的sbin取代成为大写SBIN rootwww#echo $path/sbin/SBIN rootwww#echo $path/sbin/SBIN /:若变量内容符合“旧字符串”,则第一个旧字符串被新字符串取代 /
34、:若变量内容符合“旧字符串”,则全部的旧字符串被新字符串取代,命令别名,命令别名设定:alias,unalias 例:rootwww#alias lm=ls -al |more 例:rootwww#alias rm=rm -i 例:rootwww#alias/列出目前存在的命令别名 例:rootwww#unalias rm,Bash shell的操作环境(老师没讲过),路径与命令搜寻顺序 命令运行的顺序: 以相对/绝对路径执行指令,例如/bin/ls或./ls 由alias找到该命令来执行 由bash内建的(builtin)指令来执行 通过$PATH这个变量的顺序搜寻到的第一个指令来执行 例:
35、设定echo的命令别名为echo -n,然后观察echo执行的顺序 rootwww alias echo=echo -n rootwww type -a echo,Bash shell的操作环境,Bash的进站与欢迎信息 /etc/issue里面存放有欢迎信息,d本地端的日期 l显示第几个终端机接口 m显示硬件的等级 n显示主机的网络名称 o显示domain name r显示操作系统的版本(相当于uname -r) t显示本地端的时间 s操作系统的名称 v操作系统的版本,Bash shell的操作环境,Bash环境配置文件 login shell 与non-login shell /etc/p
36、rofile(login shell会读取) /.bash_profile(login shell会读取) /.bashrc(non-login shell会读取),login shell:取得 bash 时需要完整的登陆流程的,就称为 login shell。举例来说,你要由tty1 tty6 登陆,需要输入 用户的账号与密码,此时取得的 bash 就称为” login shell”; non-login shell:取得 bash 接口的方法不需要重复登陆的 举动,举例来说,(1)你以 X window 登陆 Linux 后, 再以 X 的图形化接口启动终端机,此时那个终端接口并没有需 要
37、再次的输入账号与密码,那个 bash 的环境就称为 non- login shell了。(2)你在原本的 bash 环境下再次下达 bash 这个命令,同样的也没有输入账号密码, 那第二个 bash(子程序) 也是 non-login shell 。,位置参数(Position Argument) (第七章结束),输出位置参数(p136例7.2) 用set命令给位置参数赋值(p137例7.3) 移动位置参数(p137例7.4),第8章 Linux的网络服务,补充内容: 1.NFS与RPC 2.配置文件/etc/exports 3.NFS服务器配置实例及三种身份访问nfs 4.Web服务Apac
38、he服务器的配置参数 5.PHP修改默认配置 6.Samba服务器配置启动及实例、客户端软件,NFS与RPC(第8章),NFS是通过网络来进行数据的传输,所以NFS需要使用一些端口。基本上NFS服务的端口开在2049,但是由于文件系统非常复杂,因此NFS还有其他的程序启动额外的端口,但额外的端口号是多少? 预设NFS用来传输的端口是随机选择小于1024以下的端口来使用。那客户端如何知道服务器端使用的是哪个端口呢? 需要用到远程过程调用(Remote Procedure Call,RPC)协议来辅助。,什么是RPC,RPC最主要的功能是在指定每个NFS功能所对应的port number,并且回报
39、给客户端,让客户端可以连接到正确的端口上去。 RPC如何知道每个NFS的端口呢?当服务器在启动NFS时会随机取用数个端口,并主动向RPC注册,因此RPC可以知道每个端口对应的NFS功能,然后RPC固定使用port 111来监听客户端的需求并回报客户端正确的端口。 注意:启动NFS之前,RPC就要先启动,否则NFS会无法向RPC注册。另外,RPC若重新启动时,原本注册的数据会不见,因此RPC重新启动后,它管理的所有服务都需要重新启动来重新向RPC注册。 NFS服务器在启动的时候要向RPC注册,所以NFS服务器也被称为RPC server之一。,NFS启动的RPC daemons,NFS服务器主要
40、的任务是进行文件的共享,文件系统的共享则与权限有关。NFS服务器启动时至少需要两个daemons。 rpc.nfsd:这个daemon主要的功能就是在管理客户端是否能够使用服务器文件系统挂载信息等,其中还包含这个登录者的ID的判别。 rpc.mountd:客户端顺利通过rpc.nfsd而登录服务器之后,在可以使用NFS服务器提供的文件之前还会经过文件权限的认证程序。会去读NFS的配置文件/etc/exports来比对客户端的权限,当通过这一关之后客户端就可以取得使用NFS文件的权限。 rpc.lockd(非必要):用于管理文件的锁定功能。 rpc.statd(非必要):用于检查文件的一致性。
41、上述几个RPC需要的程序已经写入基本的服务启动脚本中,即/etc/init.d/nfs(服务器相关)和/etc/init.d/nfslock(客户端相关)。,NFS的文件的访问权限,问题:服务器和客户端刚好有相同的账号和群组,会怎样?,问题:服务器的501这个UID对应账号stu,会怎样?,问题:服务器没有501这个UID,会怎样?,问题:如果使用者是root,会怎样?,配置文件/etc/exports,配置文件/etc/exports,NFS服务器配置实例1,将/tmp目录共享出去给大家使用,由于本来这个目录就是大家都可以读写的,因此想让所有的人都可以存取。此外,我要让root写入的文件仍然
42、具有root的权限,该如何设计配置文件? rootRHEL5#vim /etc/exports /tmp *(rw,no_root_squash),NFS服务器配置实例2,将公共目录/home/public共享出去,但是只有网段192.168.100.0/24且加入stugroup的用户才能够读写,其他来源则只能读取。 rootRHEL5#mkdir /home/public rootRHEL5#setfacl m g:stugroup:rwx /home/public rootRHEL5#vim /etc/exports /tmp *(rw,no_root_squash) /home/pub
43、lic 192.168.100.0/24(rw) *(ro),NFS服务器配置实例3,我要将一个私人目录/home/test开放给192.168.100.10这个客户端的机器使用,该如何设定?假设用户的身份是tom才具有完整的权限。 rootRHEL5#mkdir /home/test rootRHEL5#setfacl m u:tom:rwx /home/test rootRHEL5#vim /etc/exports /tmp *(rw,no_root_squash) /home/public 192.168.100.0/24(rw) *(ro) /home/test 192.168.100
44、.10(rw),NFS服务器配置实例4,我要让*.rhel.tom网域的主机,登录我的NFS服务器时,可以存取/home/linux,但是他们存数据的时候,我希望他们的UID和GID都变成45这个身份,假设我NFS服务器上的UID45与GID45的用户名和组名为nfsanon。 rootRHEL5#groupadd g 45 nfsanon rootRHEL5#useradd-u 45 g nfsanon nfsanon rootRHEL5#mkdir /home/linux rootRHEL5#setfacl m u:nfsanon:rwx /home/linux rootRHEL5#vim
45、 /etc/exports /tmp *(rw,no_root_squash) /home/public 192.168.100.0/24(rw) *(ro) /home/test 192.168.100.10(rw) /home/linux *.rhel.tom(rw,all_squash,anouid=45,anogid=45),客户端与服务器具有相同的UID与账号,假设我在192.168.100.10登录NFS(IP假设为192.168.100.254)服务器,并且我在192.168.100.10的帐号为tom这个身份,同时,在NFS服务器上面也有这个账号,并具有相同的UID,那么: 由
46、于192.168.100.254NFS服务器的/tmp权限为drwxrwxrwt,所以我(tom在192.168.100.10上面)在/tmp底下具有存取的权限,并且写入的文件属主为tom; 在/home/public当中,由于我有读写的权限,所以如果在/home/public这个目录的权限对于tom有开发写入的话,那么我就可以读写,并且我写入的文件属主为tom。但是万一/home/public对于tom这个使用者并没有开放写入的权限时,那么我还是没有办法写入文件。 在/home/test中,我的权限与/home/public相同的状态,还需要NFS服务器的/home/test对于tom有开放
47、权限; 在/home/linux当中就比较麻烦!因为不论你是何种user,你的身份一定会被变成UID=45这个账号!所以,这个目录必须针对UID=45的那个账号名称,修改他的权限!,客户端与服务器的账号不同,假设我在192.168.100.10的身份为jerry(UID为600),但是NFS(IP假设为192.168.100.254)服务器却没有UID=600的帐号时,那么: 我在/tmp底下还是可以写入,只是该文件的权限会保持为UID=600,因此服务器端看起来就会怪怪的,因为找不到UID=600这个账号的现实,所以文件属主会填上600; 我在/home/public里面是否可以写入,还需要
48、视/home/public的权限而定,不过,由于没有加上all_squash的参数,因此在该目录下会保留客户端的属主UID; /home/test与/home/public相同; 在/home/linux底下,我的身份会被变成UID=45这个账号!,客户端的身份为root,假设我在192.168.100.10的身份为root,那么: 我在/tmp底下可以写入,并且由于no_root_squash的参数,改变了预设的root_squash设定值,所以在/tmp写入的文件属主为root; 我在/home/public底下的身份被压缩为nobody。因为默认属性里面都有root_squash,所以,如果/home/public有针对nobody开放写入权限时,那么我就可以写入,但文件属主变成nobody; /home/test与/home/public相同; 在/home/linux底下,我root的身份会被变成UID=45这个账号!,