介绍:NFS最早是由Sun公司于1984年开发出来的,其目的就是让不同计算机不同操作系统之间可以彼此共享文件。由于NFS使用起来非常方便,因此很 快得到了大多数的UNIX/Linux系统的广泛支持,而且还被IETE(国际互联网工程组)制定为RFC1904、RFC1813和RFC3010标准。
#-------------------------------
使用NFS服务,至少需要启动以下3个系
统守护进程。
(1)rpc.nfsd
(2)rpc.mountd
(3)portmap
NFS服务器端文件系统的共享设置有三种方法
1.直接修改/etc/exports文件
2.用exports命令来增加和删除目录
3.使用图形化的配置方法
NFS客户端配置方法
1.通过mount命令挂载
2.在/etc/fstab中加入条目
exprots文件中每一行提供了一个共享目录的设置,其命令格式为:
<输出目录> [客户端1(选项1,选项2,…)][客户端2(选项1,选项2,…)]
除了输出目录是必选参数外,其他参数都是可选的
注意:格式中的输出目录和客户端之间,客户端与客户端之间都使用空格分隔,但是客户端和选项之间不能有空格
#------------------------------------------------
客户端是指网络中可以访问这个NFS输出目录的计算机,客户端是指定非常灵活,可以是单个主机的IP地址或域名,也可以是某个子网或域中的主机等
客户端常用的指定方式 :
客户端 说明
192.168.16.20 指定IP地址的主机
192.168.16.0/24(或192.168.16.*) 指定子网中的所有主机
pc1.gdvcp.net 指定域名的主机
*.gdvcp.net 指定域中的所有主机
*(或缺省) 所有主机
选项用来设置输出目录的访问权限,用户映射等,在/etc/exports文件中选项,比较多
一般可以分成3类
(1)访问权限选项
*************
用于控制输出目录访问权限的选项
访问权限选项 说明
ro 设置输出目录只读
rw 设置输出目录可读写
(2)用户映射选项
*************
用户映射选项 说明
all_squash 将远程访问的所有普通用户及所属用户组都映射为匿名用户或用户组(一般均为nfsnobody)
no_all_squash 不将远程访问的所有普通用户及所属用户组都映射为匿名用户或用户组(默认设置)
root_squash 将root用户及所属用户组都映射为匿名用户或用户组(默认设置)
no_root_squash 不将root用户及所属用户组都映射为匿名用户或用户组
anonuid=xxx 将远程访问的所有用户都映射为匿名用户,并指定该匿名用户账户为本地用户账户(UID=xxx)
anongid=xxx 将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx)
(3)常用的其他选项
**************
其他选项比较多,可用于对输出目录进行更全面的控制
其他选项 说明
secure 限制客户端只能从小于1024的TCP/IP端口连接NFS服务器(默认设置)
insecure 允许客户端从大于1024的TCP/IP端口连接NFS服务器
sync 将数据同步写入内存缓冲区与磁盘中,虽然这样做效率较低,但可以保证数据的一致性
async 将数据先保存在内存缓冲区中,必要时才写入磁盘
wdelay 检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可提高效率(默认设置)
no_wdelay 若有写操作则立即执行,应与sync配合使用
subtree_check 若输出目录是一个子目录,则NFS服务器将检查其父目录的权限(默认设置)
no_subtree_check 即使输出目录是一个子目录,NFS服务器也不检查其父目录的权限,这样做可提高效率
一、 安装
[root@localhost init.d]# cd /media/Fedora\ 8\ i386\ DVD/Packages/
[root@localhost Packages]# find . -name "*nfs*"
./nfs-utils-1.1.0-6.fc8.i386.rpm
./nfs-utils-lib-1.1.0-3.fc8.i386.rpm
./system-config-nfs-1.3.32-1.fc8.noarch.rpm
[root@localhost Packages]# find . -name "*portmap*"
系统默认已经安装
[root@localhost Packages]# rpm -q nfs-utils-lib-1.1.0-3.fc8.i386
nfs-utils-lib-1.1.0-3.fc8
[root@localhost Packages]# rpm -q nfs-utils-1.1.0-6.fc8.i386
nfs-utils-1.1.0-6.fc8
[root@localhost etc]# /etc/rc.d/init.d/nfs start
启动 NFS 服务: [确定]
关掉 NFS 配额: [确定]
启动 NFS 守护进程: [确定]
启动 NFS mountd: [确定]
[root@localhost etc]# /etc/rc.d/init.d/nfs stop
关闭 NFS mountd: [确定]
关闭 NFS 守护进程: [确定]
关闭 NFS quotas: [确定]
关闭 NFS 服务: [失败]
二、 配置文件/etc/exports文件
该文件默认为空,没有配置输出任何共享目录,这是基于安全性的考虑,这样即使系统启动NFS服务也不会输出任何共享资源
[root@localhost opt]# cd /
[root@localhost /]# mkdir nfs
[root@localhost /]# cd nfs/
[root@localhost nfs]# mkdir public root users ji
[root@localhost nfs]# ls
ji public root users
[root@localhost nfs]# pwd
/nfs
[root@localhost etc]# vi exports
[root@localhost etc]# more exports
/nfs/public 192.168.1.*(rw,async) *(ro)
/nfs/ji 192.168.1.6(rw,sync)
/nfs/root *.jw.com(ro,no_root_squash)
/nfs/users *.jw.com(rw,insecure,all_squash,sync,no_wdelay)
三、 启动/停止
[root@localhost etc]# /etc/rc.d/init.d/nfs start
启动 NFS 服务: [确定]
关掉 NFS 配额: [确定]
启动 NFS 守护进程: [确定]
启动 NFS mountd: [确定]
[root@localhost etc]# /etc/rc.d/init.d/nfs stop
关闭 NFS mountd: [确定]
关闭 NFS 守护进程: [确定]
关闭 NFS quotas: [确定]
关闭 NFS 服务: [确定]
添加:
1、安装xinetd服务:yum install xinetd
2、关闭防火墙:#/etc/init.d/iptables stop
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置。
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件。
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系。
~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的
通常二者设置大致相同,所以通常前者会调用后者。
[yangkai@admin ~]$ cat .
./ .bash_history .bash_profile .mozilla/ .Xauthority
../ .bash_logout .bashrc .viminfo .zshrc
[yangkai@admin ~]$ cat .bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
[yangkai@admin ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
#echo "hello,kaige."
echo 'hello,kaige!this is 132.'
sleep 1
[yangkai@admin ~]$ cat .bash_logout
# ~/.bash_logout
/usr/bin/clear
echo 'bye,kaige!'
[yangkai@admin ~]$
[yangkai@admin ~]$ cat /etc/bashrc
# /etc/bashrc
# System wide functions and aliases
# Environment stuff goes in /etc/profile
# By default, we want this to get set.
# Even for non-interactive, non-login shells.
if [ $UID -gt 99 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
# are we an interactive shell?
if [ "$PS1" ]; then
case $TERM in
xterm*)
if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
else
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"'
fi
;;
screen)
if [ -e /etc/sysconfig/bash-prompt-screen ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\033\\"'
fi
;;
*)
[ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default
;;
esac
# Turn on checkwinsize
shopt -s checkwinsize
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
fi
if ! shopt -q login_shell ; then # We're not a login shell
# Need to redefine pathmunge, it get's undefined at the end of /etc/profile
pathmunge () {
if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
fi
}
# Only display echos from profile.d scripts if we are no login shell
# and interactive - otherwise just process them to set envvars
for i in /etc/profile.d/*.sh; do
if [ -r "$i" ]; then
if [ "$PS1" ]; then
. $i
else
. $i >/dev/null 2>&1
fi
fi
done
unset i
unset pathmunge
fi
# vim:ts=4:sw=4
[yangkai@admin ~]$
登录Linux的console操作环境后,会出现一个提示符号,在这个提示符号之后可以输入命令,Linux根据输入的命令会做回应,这一连串的动作是由一个所谓的 Shell 来做处理。
Shell是一个程序,最常用的就是Bash,这也是登录系统默认会使用的Shell。
profile与bashrc都是Shell的启动设置档,角色类似Microsoft DOS/Windows下的autoexec.bat文件,以下就是这二种文件自己个别的文字叙述。
针对个别用户
用户家目录/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
用户家目录/.profile
# ~/.profile: executed by Bourne-compatible login shells.
针对全体用户
/etc/bash.bashrc
# System-wide .bashrc file for interactive bash(1) shells.
/etc/profile
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
由以上叙述可以知道,差异在于:
1.bashrc
系统启动后就会自动运行。
2.profile
用户登录后才会运行。
3.进行设置后,可运用source bashrc命令更新bashrc
也可运用source profile命令更新profile
通常我们修改bashrc,有些linux的发行版本不一定有profile这个文件
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该
文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该
该文件被读取.
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的
通常二者设置大致相同,所以通常前者会调用后者。