- 论坛徽章:
- 1
|
达内听课笔记第二册整理
一些Solaris 网络知识
1.Solaris 的几个机器名
/etc/nodename 一台机器唯一的机器名
/etc/hostname.hme0 该网卡名,一台机器可以有多张网卡
/etc/hosts 本机中的网卡名与ip 地址的对应信息
在ok 状态的banner 中可以看见hostid,默认的出产hostid 为mac 地址的后24 位,在ok 状态下可以
修改.有些收费软件是根据hostid 来产生license 的
2.deamon,服务
1)结构
两个文件
/etc/services 描述inetd 进程监听的服务,公认的网络服务,占据0-1023 端口
/etc/rpc 描述rpcbind 进程监听的服务,Sun 自定义的网络服务,占据1023 以上的端口
两个deamon
inetd
rpcbind
一个配置文件
/etc/inetd.conf
2)关闭或者启动一个服务,无论是serivces 服务,或者是rpc 服务,都是如此.
a)修改/etc/inetd.conf
b)pkill -HUP inetd
3)关闭一些危险的服务
finger
在客户端finger @192.168.4.28,可以查看网络上一台启动finger 服务的机器上当前登陆用户,在@
前加用户名,可以查看该用户的详细信息
spray
2
2
发包检测网络质量,但是发的包很大,可以用来拒绝服务攻击,spray -c 100000000 -l 1000000000
192.168.4.28,循环与大容量数据包,网络立即切断
4)/etc/inted.conf 的格式
telnet stream tcp6 nowait root /usr/sbin/in.telnetd in.telnetd
解释
telnet 服务名
stream strem 表示tcp,dgram 表示udp.
tcp6 tcp6 意为支持ipv6,并且支持ipv4
nowait 表示在相应一个网络连接之后,服务进程在释放旧的联接之前可以接受新
的连接请求
wait 则表示必须在旧连接清除之后才能接收新的连接
/usr/sbin/in.telnetd 该进程的路径
in.telnetd 真实执行的命令,可能包含有参数
5)man 一个配置文件
man /etc/inet.conf 查找失败
man inet.conf 查找成功
6)启动一个服务的过程
a)inetd 监听网络
b)inetd 接到客户请求
c)从/etc/inetd.conf 中启动服务
d)根据/etc/services 或/etc/rpc 中分配端口
7)关于rpc
rpc remote procedure call
1023 以外的端口,并没有一个组织来进行管理,所以1023 以外的端口由厂商自定义,并且由rpc 来分
配端口
rpcinfo 查看当前启动的rpc 服务
日志
1.查看日志
a)管理员一天的第一件事情就是查看日志
b)日志信息可以发往哪些地方
日志文件
控制台
用户终端
3
3
日志服务器,把多台服务器的日志传到一台日志服务器上,可以集中管理日志!在做集群的时候可能会
有用
2.deamon
/etc/rc2.d/S74syslog
/etc/init.d/syslog start | stop
默认情况下inetd 不记录日志
/etc/rc2.d/S72inetsvc:/usr/sbin/inetd -s & 不保存各种inetd 网络服务信息到
syslog 中
加-t 参数
/etc/rc2.d/S72inetsvc:/usr/sbin/inetd -s -t & 将各种inetd 网络服务的日志归类
到daemon 这一类中
3.配置文件
/etc/syslog.conf
左边,记有关什么的日志
facility.level
方面(facility)
kern 内核
user 用户,如果是用户自己开一个进程,应该是属于这一项来记录,但ftp,http 这种大服务,一般
自己有独立于syslogd 的日志系统
mail 邮件
daemon inetd 启动的网络服务
auth 认证
* 全包括
级别(level)
从紧急到不紧急
emerg 最紧急,打错patch,系统crash,可能会出现
alert
crit
err err 以上的错误都是非常严重的问题
warning 以下开始的不是特别严重
notice
info
debug
如果在syslong.conf 的level 项中写*.err,是向上包括的.如果发生crit 级的错误,一样会进行记录.
4
4
在facility 项中用*号代表所有项.
右边,记下的日志往哪写
/filename 保存到一个路径的文件
@loghost 发送到日志服务器
(找到/etc/hosts 文件中指定日志服务器loghost,并发送,无须认证关系。loghost 在接收后,校对自
身syslog.conf 的facility.level,并发送日志到相应的设备)
user1,user2 发送到2 个用户
* 发送到所有的用户
在syslog.conf 中有一个operator 用户,如果发给这个用户,root 也可以收到信息
syslog.conf 文件
*.err;kern.notice;auth.notice /dev/sysmsg
*.err;kern.debug;daemon.notice;mail.crit /var/adm/messages
(很多日志都记录到这个文件中)
*.alert;kern.err;daemon.err operator
*.alert root
*.emerg *
(如果有很严重的错误,就通知所有人)
/var/adm/messages 文件每周自动改名更新的动作是root 用户执行cron 动作达到的.
4.几个日志的技巧
tail -f /var/adm/messages
查看messages 中的最新信息
有关习惯于存放日志的目录
/var/adm
/var/log
如果想记录日志到一个文件中,但是该文件不存在.必须要手动touch 这个新文件
5.自定义用syslog 记录telnet 访问
1)vi /etc/default/login 去掉SYSLOG 一项的注释,使之生效.
2)修改/etc/syslog.conf,添加以下内容
5
5
auth.notice /var/adm/auth/messages
auth.err /var/adm/auth/errors
auth.crit /var/adm/auth/critical
auth.debug /var/adm/auth/debug
daemon.notice;daemon.debug;daemon.crit /var/adm/daemon/messages
并手工touch 生成这些文件.
3)pkill -HUP syslogd,重启服务,使之生效.
4)通过查看这些文件,了解登陆,登陆失败,su,su 失败的不同记录.并且理解err,notice,debug 等
不同级别间的关系.
6.用logger 自己添加日志
1)这种写日志的方法,可能会用在脚本中
2)在syslog.conf 中,定义facity(自定义).level file 新建一个项.
3)logger -p facity(自定义).level " messages " 发送指定信息到这个项,并保存到文
件中.
4)检查file,就可查到信息
-f 从指定文件中获得信息
-I 每一行记录logger 进程的ID
-t tag 指定每一行日志的标签
特殊文件系统
1.几种伪文件系统,pseudo fs 即ram-based fs.
放在内存中,但却是根目录的一个子目录,所以也称为内存文件系统
1)procfs /proc 存放进程信息
存放内存中每一个进程的状态,每一个进程号数字命名的子目录都对应一个进程
/proc 下的目录的拥有者即进程的创建者.
在/proc 中删除目录,也可以用来杀进程.
2)tmpfs /tmp
写到/tmp 中的数据,先是当到物理内存中,如果空间不够,再往swap 中放
3)fdfs
在/dev/fd
6
6
0,1,2,3 的设备文件
0 > file
1 > file
2 > file
在进行输入输出重定向的时候使用的是这几个设备
4)swapfs
系统用virtual addresses 来索引物理内存与swap 内存,将物理内存中不常用的,优先级低的交换到
swap 分区中,无论是swap 分区还是物理内存对用户来说都是内存.ram/(ram+swap)值越大,内存性能
越佳.
2.关于swap
1)swap 的功能
a)虚拟内存
b)安装时存放mini-root
c)系统crash 之后,系统当时的内存都会存放在swap 分区中
在系统crash 之后,不会马上重启,会把内存中的内容保存到swap 中.如果内存占用空间很大,正在使
用的swap 空间也很大,两者相加大于swap 分区,则不能写入,若两者相加大于硬盘剩余空间,则占满系
统空间,保存后系统不能重起.
2)swap 命令
swap
-l,s 显示
(关于查看swap 分区的大小,swap -l,s df -k 都有可能不准,最好的方法是用format 看)
-a 添加
mkfile 20m /export/data/swapfile
swap -/export/data/swapfile
-d 删除
3.关于系统crash 的过程
7
7
1)发信息到console,保存内存到swap(dump device)
2)原因
a)OS bugs
b)驱动问题
c)内核模块问题
d)有问题的硬件
总之是硬件与内核不匹配
常见的原因
打错补丁(特别是那种大补丁包)
安装一个不兼容的硬件
3)系统重启之后,自动运行savecore 把swap(dump device)中的内存信息提取到/var/crash\`uname
-n`\vmcore.X 与unix.X 中
4)将vmcore.X 与unix.X 寄给Sun,Sun 服务回答crash 的原因.
5)做好分区规划以及备份,防止系统crash
4.删除无用的core 文件
find / -name core -exec rm {}\;
程序执行时非正常中断,会在程序的同一目录下生成一个core 文件,管理员要经常删除无用的core 文
件
NFS 文件共享
1.nfs 简介
1)nfs 的作用是在局网中共享文件目录
2)nfs 的优点
a)中心式的文件管理,比如用户目录,统一管理用户的数据与配置文件
b)应用软件共享
3)关于平台
nfs 支持的平台有,unix,ms-dos.但是不能支持windows
samba 用来在unix 与windows 之间互相访问,而nfs 更多是unix 之间访问.
4)nfs 服务依赖于rpc
2.nfs 基本结构
nfs server nfs client
8
8
命令share resource mount server:mount-point
unshare resource umount server:mount-point
shareall mountall -r
unshareall umountall -r(-r 参数指只检查网络部分)
(根据/etc/dfs/dfstab 文件) (根据/etc/vfstab 文件)
启动脚本/etc/init.d/nfs.server /etc/init.d/nfs.client
rc3 中执行rc2 中执行
配置文件/etc/dfs/dfstab /etc/vfstab
如果这个文件非空
则nfs.server 服务启动
daemons mountd statd
nfsd lockd
3.nfs 命令补充
1)两个在服务器端显示共享目录的命令
dfshares 查看已经share 出去的目录
dfmounts 查看已经被人mount 的目录
dfshares/dfmounts host 查看某一台主机的信息
2)share 命令详解
share 显示已经share 的目录
share -F nfs -o ro /usr/share/man
-F nfs 指定一个文件系统
-o 选项,这里内容就多咯.
nfs 权限认证过程
a)用client 上的访问者uid/gid 在本地匹配,如果是属主uid,则继承属主权限.如果是同组人gid,
则继承同组人权限.否则则是other 权限.
根据client 上的uid/gid 确定client 在server 的身份,以确定client 对nfs 文件系统的访问权限.
b)匹配share 中的option 参数
如果不加这项参数,则默认为-o rw
-o ro 所以机器只读
-o rw 所有机器读写
-o ro=unix1 unix1 只读,其他机器都不可访问
-o rw=unix1 unix1 读写,机器机器均不可访问
-o rw,ro=unix1 unix1 只读,其他机器都读写
-o ro,rw=unix1 unix1 读写,其他机器都只读
-o ro=unix1:unix2 unix1 与unix2 只读,其他机器都不可访问
9
9
-o rw=unix1:unix2 unix1 与unix2 读写,其他机器都不可访问
-o
[email=rw=@192.168.100]rw=@192.168.100[/email]
192.168.100.0 网段读写访问,若在/etc/networks中有定义,则此处亦可
用网络名
-o rw=.domain 此处的'.'表示之后跟的是一个域名
-o anon=n n 为服务器端为未知用户设置的有效id
-o anon=nobody/60001 nobody 拥有对系统访问的最低权限,如果不加anon 参数,则默认为这个值
-o anon=-1 不能访问
-o anon=0 未知用户将拥有root 权限,千万不能这样做,另外此处不能设置为0-99 之
间的系统用户
-o root=unix1 unix1 上的root 用户,对nfs 目录拥有超级用户权限,nfs 客户端的root
默认在远端不拥有超级用户权限,尽量不要设置这个选项,否则会造成安全隐患.
-o nosuid/nosgid 不允许客户端执行nfs server 上的suid 程序.否则可能会造成用户越权.
c)具体应用时,以两个规则相加,并取权限最小值为用户的真实权限.
3)客户端的几个命令
mount -o host1,host2,host3 /export/home
依次寻找host1,host2,host3 上的/export/home 目录,在host1 上成功找到,即不寻找host2,host3.
否则依次寻找.
mount 显示已经挂载的目录
mountall 读取/etc/vfstab,并挂载
umountall -r 卸载所有网络挂接
df -k /export/home 查看这个目录挂载在哪里
4.nfs 操作过程
1)on server 修改/etc/dfs/dfstab
此处注意如何分配权限.
2)on server /etc/init.d/nfs.server start
此处注意如果/etc/dfs/dfstab 为空,则nfs.server 脚本不能启动
3)on client 修改/etc/vfstab
此处注意,挂载的nfs 文件系统的option 中一定要手工写成bg,soft.系统默认的值为fg(会把出错信
息放在前台),hard(出错之后不断进行尝试).这种默认值会造成潜在的错误,所以一定要改掉.
4)on client mkdir,创建挂载点
5)on client mountall,挂载
6)on server 如果要进行修改的话
10
10
a)修改/etc/dfs/dfstab
b)unshareall
c)shareall
5.nfs 排错,由于nfs 的交错使用增加了它的复杂性.nfs 出错分两类.
一:由于系统与网络的不稳定造成的.
二:由于错误的配置文件造成的.
1)nfs mount: server1 :: RPC : Rpcbind failure
RPC:Time out
nfs mount : retrying :/mount-point
解释:RPC 无响应,说明机器地址对,目录错.
1)写错要mount 的ip 地址或者目录
2)服务器太忙,来不及处理
2)NFS server server2 not responding, still trying
机器连不通
1)网络不通
2)在服务器重启,或者关机的情况下,客户端进行连接
3)Setting default interface for multicast : add net 224.0.0.0 : gatewat: client node_name
因为vfstab 文件中的option 设为fg,所以遇到错误停止不前.
4)nfs mount : dbserver :NFS:Service not responding
nfs mount : retrying :/mount-point
服务器端没有启动nfsd daemon
nfs mount : dbserver : RPC : Program not registered
nfs mount : retrying : /mount-point
服务器端没有启动mountd daemon
这种错误可能由于手工打share 命令,重启之后,dfstab 文件内容为空,故nfs.server 不启动两个
daemons 的原因造成
5)stale NFS file handle
若干个人共同修改一个文件造成,umount 后再mount 一次该目录即可解决
6)nfs mount : server1 : RPC : Unkown host
检查/etc/hosts 文件
11
11
7)mount : mount-point /DS does not exist
客户端的挂载点不存在
8)No such file or directory
服务器端的共享目录不存在
AutoFS
1.简单介绍
autofs 是对nfs client 的补充,是纯粹的客户端概念,与服务器端无关.
常用于自动挂接/export/home 目录.
1)在需要访问的时侯挂载
2)在没人访问的时候自动挂断
3)中心式的管理
2.基本结构
命令automount
启动脚本/etc/init.d/autofs,
守护进程automountd
主配置文件/etc/auto_master
其中包括直接映射,间接映射
间接映射文件/etc/auto_home
3.直接映射
在auto_master 文件中
/- auto_direct
在auto_direct 文件中
/usr/local -ro unix1:/export/usr/local
本地无论什么时候访问/usr/local 都会自动安装unix1 上的/export/usr/local 目录
4.间接映射
在auto_master 文件中
/export/home auto_home
在auto_home 文件中
12
12
* unix1:/export/home/&
用*与&通配符挂接所有用户主目录,一但在客户端有用户登陆,则会自动去寻找服务器端的目录,并且
挂接,在不用的时候则会自动卸载,通过这种方式来automount 统一管理用户主目录的情况是非常常
见的.
而这也是间接映射的优点所在,直接映射一次只能挂接一个目录,而间接映射一次可以挂接多个目录.
5.其他需要注意的地方
1)/etc/auto_master 文件中/net 与/xfn 两项不要动
2)打automount 命令,读取auto_master 文件,使配置当场生效
3)automount -t 设置挂断时间,缺省挂断时间是600 秒
4)/etc/auto_master 中的直接映射与间接映射都可以有多项,并可自定义文件.
RBAC
role-based access-list control
1.rbac 的作用,针对用户与角色的权限控制,大型的unix 环境有多个管理员存在,不可能每个人都拥
有root 密码,而通过rbac 分配管理权限.
2.rbac 的基本机构
rbac 配置文件的基本格式(书9-4)
: 隔开若干个属性
; 隔开一个属性中的若干个子属性
, 隔开一个子属性的若干个值
. 隔开一个值的层次结构
rbac 的基本配置是4 个文件
13
配置文件的结构1-1-2
user_attr 用户可修改的
| V
prof_attr-->exec_attr 用户可修改的
| V
auth_attr 系统自定义的
3./etc/user_attr 文件
1)rbac 的总配置文件,存放用户与角色信息
2)例子解释
root::::type=normal;auth=solaris.*,solaris.grant;profiles=All
sysadmin::::type=role;profiles=Device Management,Filesystem Management,All
johndoe::::type=normal;auths=solaris.system.date;roles=sysadmin;profiles=All
type=normal 定义普通用户的权限
type=role 定义一个role 的角色权限,可以把role 的角色权限赋给其他用户
auth=solaris.* 定义该用户拥有solaris 下的所有权限,调用auth_attr 文件
auth=solaris.grant 定义该用户可以把solaris 下的所有权限赋给其他用户, 调用
13
14
14
auth_attr 文件
profiles=Device Management 定义一个用户的profile 权限,调用prof_attr 文件
roles=sysadmin 定义该用户拥有role sysadmin 的权限
4./etc/security/auth_attr 文件
1)定义user_attr 中的auth 自段,授权类型的权限,系统已经完全自定义好,不用手动修改,可以直接
指派到user_attr 中去
2)例子解释
solaris.*:::Primary Administrator::help=PriAdmin.html
solaris..grant:::Grant All Rights::help=PriAdmin.html
solaris.device.:::Device Allocation::help=DevAllocHeader.html
solaris.device.allocate:::Allocate Device::help=DevAllocate.html
solaris.device.config:::Configure Device Attributes ::help=DevConfig.html
solaris.device.grant:::Delegate Device Administration::help=DevGrant.html
solaris.device.revoke:::Revoke or Reclaim Device::help=DevRevoke.html
grant 的意义为授权,之前已经讲过,只有第一列有实际意义,其他的均为描述与帮助信息
3)user_attr 调用auth_attr 的过程
user_attr
johndoe::::type=normal;auths=solaris.system.date;roles=sysadmin;profiles=All
auth_attr
solaris.system.date:::Set Date & Time::help=SysDate.html
经过这样一个过程,johndoe 用户便拥有solaris.system.date 的权限
5./etc/security/prof_attr 文件
1)定义user_attr 中的profiles 字段,定义用户的执行动作
2)例子解释
All:::Standard Solaris user:help=All.html
Printer Management:::Manage print jobs:help=Printer.html
Device Management:::Control Access to Removable
Media:auths=solaris.device.*;help=DevMgmt.html
第一列定义了名字,以用于在user_attr 与exec_attr 中调用,另外在prof_attr 中还可以调用auths
的定义.
3)user_attr 调用prof_attr 的过程
15
15
user_attr 文件
root::::type=normal;auth=solaris.*,solaris.grant;profiles=All
sysadmin::::type=role;profiles=Device Management,Printer Management
prof_attr 文件
All:::Standard Solaris user:help=All.html
Printer Management:::Manage print jobs:help=Printer.html
Device Management:::Control Access to Removable
Media:auths=solaris.device.*;help=DevMgmt.html
在role sysadmin 中指定profiles=Device Management,Printer Management,并在prof_attr 中解
释这两个值
4)prof_attr 调用auth_attr 的过程
auth_attr 中的权限是系统自定义的,而prof_attr 中的权限则是用户可以管理的,所以在prof_attr
中可以调用auth_attr 中已经定义的权限
prof_attr 文件
All::::Standard Solaris user;help=All.html
DeviceManagement::::Controlaccesstoremovable
Media:auths=solaris.device.*;help=DevMgmt.html
auth_attr 文件
solaris.*:::Primary Administrator::help=PriAdmin.html
solaris.grant::Grant All Rights::help=PriAdmin.html
solaris.device:::Device Allocation::help=DevAllocHeader.html
solaris.device.allocate:::Allocate Device::help=DEvAllocate.html
solaris.device.config:::Configure Device Attributes::help=Dev Config.html
solaris.device.grant:::Delegate Device Administration::help=DevGrant.html
solaris.device.revoke:::Revoke or Reclaim Device::help=DevRovoke.html
在prof_attr 中定义profiles:Device Management 拥有auths=solaris.device.*的权限,而在
auth_attr 中解释auths=solaris.device.*具体权限
6./etc/security/exec_attr 文件
1)该文件定义prof_attr 中的动作到具体的命令.
2)例子解释
All:suser:cmd:::*:
...
Printer Management:suser:cmd:::/usr/lib/lp/lpsched:euid=0
Printer Management:suser:cmd:::/usr/lib/lp/lpshut:euid=0
Printer Management:suser:cmd:::/usr/lib/lp/lpmove:euid=0
16
16
Printer Management:suser:cmd:::/bin/lp:euid=0
Printer Management:suser:cmd:::/binlpadmin:euid=0
Printer Management:suser:cmd:::/usr/sbin/lpadmin:euid=0
Printer Management:suser:cmd:::/usr/bin/enable:euid=0
Printer Management:suser:cmd:::/usr/bin/disable:euid=0
Printer Management:suser:cmd:::/usr/sbin/accept:euid=0
Printer Management:suser:cmd:::/usr/sbin/reject:euid=0
Printer Management:suser:cmd:::/usr/sbin/lpsystem:euid=0
在prof_attr 中的Printer Management 动作具体是由这样一些命令组成的
euid 与uid 同样是一样的,只有在出现setuid 的程序时才可能不同,这个地方我们通常用euid.
7.几个关于RBAC 的命令
roleadd 新建一个role,role 本身就是一个特殊的用户,但可以把自身的权限赋给其他用户,该
用户在passwd,shadow 文件中有内容!
rolemod 改变一个role 的信息
-d,-m,-s 与useradd 一样建立主目录
-A 添加auth 权限
-P 添加prof 权限
-c 加提示
useradd -R dateuser yeji 新建一个用户yeji,拥有role dateuser 的权限
8.rbac 实验的一个心得
创建role 后,把role 赋给用户之后,用户并不能执行该权限,而用户su 成该role 则可以执行.
解决的办法是通过分发role 密码来分配权限.
NIS 命名服务
1.选择命名服务
/etc/nsswitch.conf 决定客户端使用哪种命名服务
/etc/nsswitch.dns
hosts: files dns 关于hosts 的信息,先在files 中寻找,再在dns 中寻找
/etc/nsswitch.nis
hosts: nis [NOTFOUND=return] files 如果在nis 上找不到信息,则返回,不再寻找files
的内容
[]中的信息,载自man 手册
Status Meaning
17
SUCCESS 请求的项被找到
UNAVAIL 该服务没有启动
NOTFOUND 该服务已启动,但是没有该项内容
TRYAGAIN 服务器忙
Action Meaning
continue 继续尝试下一种资源
return 返回不再寻找
ls /etc/nsswitch.*
nsswitch.conf 只有这个文件生效,其余五个都是模版文件,只供参考.
nsswitch.dns
nsswitch.nis
nsswitch.files
nsswitch.nisplus
nsswitch.ldap
cp nsswitch.dns nsswitch.conf copy 后立即生效.不用重启daemon
2.nis 服务的结构
1)nis 的过程
a)nis master server 通过make 动作,将自己/etc 目录中的配置文件信息生成nis map
b)nis slave server 同步nis master server 上的nis map 信息
2)关于daemon
master slave client
daemon ypbind ypbind ypbind
ypserv(服务端) ypserv(服务端)
17
18
18
rpc.yppasswdd(允许用户修改nis 上的密码)
rpc.ypupdated
ypxfrd(接受slave 的同步响应)
3)nis 的目录
/var/yp 有关nis 的目录
/var/`domianname` 存放nis map 的信息
如
/var/yp/`domainame`/hosts.byname.pag pag,数据信息
/var/yp/`domainame`/hosts.byname.dir dir,索引,如果pag 文件小,则索引为空
/var/yp/`domainame`/hosts.byadd.pag
/var/yp/`domainame`/hosts.byname.dir
4 个非文本文件,4 个一组,2 个一对,只有两个一起才能生效.存放经过排序的nis map 中的hosts 信
息.
*.byname 知道名字查ip
*.byadd 知道ip 查名字
4)关于Makefile
/usr/ccs/make
/var/yp/Makefile
cd /var/yp;/usr/ccs/make
执行make 命令,根据makefile 这个配置文件,生成nis map 信息.
makefile 解释/etc 中的文本配置文件与/var/yp/`domainname`/ 中的nis map 的对应关系.
5)配置nis 域
命令domianname yeji
配置文件echo "yeji" > /etc/defaultdomain
注意nis domain 与dns domain 是完全两个概念
6)启动脚本
/etc/rc2.d/S72inetsvc 开机启动nis 的脚本
7)启动与关闭命令
/usr/lib/netsvc/yp/ypstop ypstart 临时启动和关闭的脚本,启动与关闭一系列daemon
8)检查nis 服务的几个命令
ypcat hosts 显示nis map 中hosts 的信息
ypcat passwd | grep yeji 显示nis map 中yeji 用户的密码
19
19
ypmatch yeji passwd 同上
ypwhich 查看nis server,如果nis master down 掉,则这个命令显示nis
slave.
ypwhich -m 显示nis server 提供了哪些数据的服务
nis 的一个漏洞,普通用户也可以看见root 的密文
实际配置nis 的过程
1.配置nis master server
1)domainname yejilab;domainname > /etc/defaultdomain 配置nis 域
2)
a)cp /etc/nsswitch.conf /etc/nsswitch.conf.bak 备份
cp /etc/nsswitch.nis /etc/nsswitch.conf 使用模版文件
b)vi /etc/nsswitch.conf 手动修改/etc/nsswitch.conf 中的若干
项
3)touch /etc/ethers /etc/bootparams /etc/locale /etc/timezone /etc/netgroup /etc/netmasks
这几个文件在安装完系统后是自动不存在的,但是如果不存在的话,Makefile 过程中会报错.第一种方
法是touch 这几个文件,第二种方法是修改Makefile 这个文件,在all 一栏中去掉这几项
4)修改/var/yp/Makefile 文件
由
$(DIR)/auth_attr:
$(DIR)/exec_attr:
$(DIR)/prof_attr:
$(DIR)/audit_user:
修改成
$(DIR)/security/auth_attr:
$(DIR)/security/exec_attr:
$(DIR)/securit/yprof_attr:
$(DIR)/securit/yaudit_user:
在Solaris8 之后,这几个文件的路径改变了
5)ypinit -m
Do you want this procedure to quit on non-fatal errors?
切记选no,忽略一些不严重的错误,否则将无法进行.这个过程用/usr/ccs/bin/make 命令执行
/var/yp/Makefile 配置,创建/var/yp/domainname 目录,并在其中生成nis map 数据库的信息.
6)/usr/lib/netsvc/yp/ypstart
启动nis 服务运行脚本,之前做的只是建立nis map 数据库而已,此时必须再手动启动一次
20
20
7)更新master 上的信息
a)修改/etc 下的配置文件
b)cd /var/yp;/usr/ccs/bin/make
更新nis map 数据库的信息,make 这个操作,当前目录必须是/var/yp,否则将无法进行
小技巧
9)在master 处打/usr/lib/netsvc/yp/rpc.yppasswdd /etc/passwd -m passwd
可以使用户在nis client 处可以用passwd 命令修改自己在master server 上的密码
2.配置nis slave server
1)domainname yejilab;domainname > /etc/defaultdomain 配置nis 域
2)
a)cp /etc/nsswitch.conf /etc/nsswitch.conf.bak 备份
cp /etc/nsswitch.nis /etc/nsswitch.conf 使用模版文件
b)vi /etc/nsswitch.conf 也可以手动修改/etc/nsswitch.conf 中的若干项
3)ypinit -c
/usr/lib/netsvc/yp/ypstart
先以客户端的身份启动ypbind,以备接受从master 处push 来的nis map
4)ypinit -s master
配置nis slave server,接受从nis master server 处push 来的nis map
/usr/lib/netsvc/yp/ypstop
/usr/lib/netsvc/yp/ypstart
重启脚本,使nis slave server 的若干个进程生效
5)nis slave server 上的数据更新
master 的数据更新后,会自动push 到slave 上,但是也可以手动操作.
a)ypinit -s nis_master 重新建一次slave,从master 处更新所有nis map 信息
b)/usr/lib/netsvc/yp/ypxfr hosts.byaddr
/usr/lib/netsvc/yp/ypxfr hosts.byname
手动更新关于hosts 的nis map 信息
3.nis client
1)domainname yejilab;domainname > /etc/defaultdomain 配置nis 域
21
21
2)
a)cp /etc/nsswitch.conf /etc/nsswitch.conf.bak 备份
cp /etc/nsswitch.nis /etc/nsswitch.conf 使用模版文件
b)vi /etc/nsswitch.conf 手动修改/etc/nsswitch.conf 中的若干
项
client 端修改nsswitch.conf 的时候要注意host 一项,files 在前,nis 在后.详见下一段落的心得.
3)ypinit -c master
/usr/lib/netsvc/yp/ypstart
配置客户端,并启动daemon
4.配置NIS 服务的其他技巧与心得
1)由于nis 服务存在以下漏洞与问题
a)普通用户可以看见master server root 密码密文的漏洞,
b)不希望系统用户通过nis 登陆
所以在client 上的做法为
a)修改client 的/etc/nsswitch.conf
hosts files nis
files 在前,nis 在后.
b)修改client 的/etc/passwd 与/etc/shadow 文件,删除普通用户,只留root 与系统用户信息.从而实
现普通用户登陆从nis 处验证,而root 以及系统用户的验证在本地进行.
2)实验将automount 的信息放在NIS server 上,结果为失败,弥补的做法是将autonmount 的信息放在
本地,不通过nis 传播
Jumpstart 网络安装
Jumpstart 的基本结构
boot services
基于rarp 协议,没有操作系统的客户端寻找服务器,并配置自己的ip 地址
22
22
installation services
安装服务基于nfs 服务,为客户端提供安装文件
configuration services
提供各台机器的安装配置信息
实际配置过程
约定
server unix3
client unix1,unix2
install dir /install
config dir /config
1.修改/etc/hosts 与/etc/ethers 文件,建立机器名与mac 地址的对应关系,使得server 可以确定客
户端的身份
/etc/hosts
192.168.11.21 unix1
192.168.11.22 unxi2
/etc/ethers
8:0:20:30:6:9a unix1
8:0:20:30:6:83 unix2
2.设置安装服务器,执行两个脚本,将光盘上的安装文件copy 到安装目录
1)创建安装目录
#mkdir /install
至少要有700mb 空间
2)放入cd 1
#/cdrom/cdrom0/s0/Solaris_8/Tools/setup_install_server /install
3)放入cd 2
#/cdrom/cdrom0/Solaris_8/Tools/add_to_install_server /install
3.设置配置文件服务器
!!技巧,如果是从windows 上ftp 过来的配置文件,在回车处会出现^M 的错误,用命令dos2unix 可以
修改这种字符错误.
1)从安装目录copy 配置文件模版到配置文件目录
#mkdir /config
23
23
#cp -r /install/Solaris_8/Misc/jumpstart_sample/* /config
2)创建或修改sysidcfg 文件
改文件存放一些对所有机器都生效的配置信息, 需要手工生成, 可以借用他人的模版. 修改
root_passwd 时,可以将已知密码的密文copy 到这里.下面是一个sysidcfg 的例子
# Sample sysidcfg file for SPARC systems
system_locale=en_US
timezone=US/Mountain
timeserver=localhost
terminal=vt100
name_service=NONE
security_policy=NONE
root_password=Hx23475vABDDM
network_interface=PRIMARY {protocol_ipv6=yes netmask=255.255.255.0}
rules 配置文件让指定哪些客户端使用哪些class 配置文件进行安装
3)修改rules 文件
项目内容begin 脚本class 文件finish 脚本
hostname unix1 - unix1class finish_script
指定unix1 使用class 文件unix1class 进行安装,安装完之后执行finish_script 脚本.
如果安装的机器很多,环境很大,rules 文件还可以根据网络,主机类型,甚至是内存大小,来进行更高
级的安装分类,如有更高的需求再查手册或者书籍.
begin 在正式安装前执行的脚本
finish 在正式安装后执行的脚本,在这个地方其实可以作更多的事情比如安装补丁加固系统之
类的事情.
4)修改class 文件
例子:
install_type inital_install 初始安装
system _type standalone 独立系统
partitioning explicit 手动分区
filesys c0t3d0s0 150 /
filesys c0t3d0s1 128 swap
filesys c0t3d0s6 800 /usr
filesys c0t3d0s7 free /var t3 剩下的所有空间
24
24
filesys c0t1d0s7 all /opt t1 的所有空间
cluster SUNWCXall 指定完全安装
在确定分区大小之前,一定要先了解安装客户端的硬盘情况.
由rules 文件指定不同的机器读取不同的class 文件,class 文件仍可以做更高级的安装规划,这里就
不列出了,如有更高的需求再查手册或者书籍.
5)在这个地方老师的经验
a)在roles 中只放主机名信息,在class 中只放安装,分区方式,和文件系统的大小
b)vi finish_script
touch /a/autoshutdown
chmod 700 finish_script
取消半小时关机的节电模式,由于安装时是在mini-root 下,所以硬盘是挂在/a 目录下的,在finsh 脚
本中还可以做更多的事情.日后注意在这个地方的技巧积累.
4.share 安装以及配置文件的目录
1)vi /etc/dfs/dfstab
share -F nfs -o ro,anon=0 /install
share -F nfs -o ro,anon=0 /config
(注意anon 一定要等于0,否则不能正常安装)
b)/etc/init.d/nfs.server start
5.添加客户端
../Tools/add_install_client -s unix3:/install -c unix3:/config -p unix3:/config unix1 sun4u
../Tools/add_install_client -s unix3:/install -c unix3:/config -p unix3:/config unix2 sun4u
若有两台client,就要执行两次这个脚本,sun4u 表示平台类型.
三个参数指定三个服务器角色的位置
-s installation server
-c configuration server
-p sysidcfg file
add_install_client 脚本自动产生两个目录
/etc/bootparams
/tftpboot
配置结束
25
25
6.检查配置情况
1)/config/check 检查rules 与class 配置文件有否错误,检查无误之后生成rules.ok 文
件.
2)/usr/sbin/install.d/pfinstall -D -c /install unix1class
用这个脚本进行模拟安装
7.客户端开始安装
1)stop - a 进入ok 状态
2)boot net -install
8.假如要用jumpstart 跨网段安装的话,则需要假设bootp 协议的中继,来转发bootp 广播,来启动机
器.
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/3435/showart_105068.html |
|