在启动过程中,Service Management Facility (SMF)提供了新的选项。是Solaris10的预测性自我修复系统的相关功能。
Solaris10在x86平台上,支持64位计算。
启动方式
- 手动启动可以进行64位计算的系统。
在64位模式下启动x86系统,在选择启动的提示符下输入:
b kernel /amd64/unix
在以前的基于32位计算的Solaris版本中,如果启动兼容的64位计算能力,则不需要改变启动命令:
b kernel /unix - 使用eeprom命令设置boot-file文件参数。
在以前的Solaris版本中,boot-file文件参数设置为kernel/unix。在Solaris 10中,boot-file文件参数默认设置为空。这时系统启动能自动检测,如果有64位计算能力,就会在x86平台上启动64位模式。直接手工设置boot-file文件参数的方法是:
# eeprom boot-file kernel/amd64/unix
查看当前系统boot-file文件参数的方法是:
# eeprom boot-file - 使用内核调试模式(kmdb)启动系统。
启动内核调试模式的方法是在启动方式的提示符下输入启动命令。如果是启动64位模式,则输入:
b kernel/amd64/unix –k
在基于系统32位模式下,启动64位计算能力,则输入:
b kernel /unix -k
运行级别是由一些代表系统服务运行状态的数字或字符表示。系统总是处于一个运行级别之中。与运行级别相关的是init状态,因为init进程维护着运行的级别。系统管理员可以通过init命令和svcadm命令来改变系统的运行级别。
启动选项
启动选项描述着系统是如何被启动的。不同的启动选项有以下几种。
Interactive boot:当系统启动时按照提示输入相应信息。
Reconfiguration boot:当系统添加了新的硬件或虚拟设备时,选用此种启动方法。
Recovery boot:当系统出了故障时恢复启动。
------------------------------------------------------------------------------
Solaris10的关机命令有不少,在不同的场景应用不同的关机命令:
命令 | 命令描述 | 什么时候使用 |
shutdown | 是调用init程序来关闭 | 推荐在服务器运行级别3时使用, 系统的可运行shell脚本程序 因为要通知用户系统将要关闭 |
init | 改变系统运行级别命令 | 推荐在单机时使用,或者关闭不 影响其他用户时使用 |
reboot | 重新启动系统 | Init 6是首选的重新启动方法 |
Halt,poweroff | 同步磁盘并停止处理器工作 | 不推荐使用,因为会强行终止系统进程。 只有在紧急事件中才用 |
关于运行级别的定义是:
级别 | 描述 | 用户状态 |
0 | 硬件维护模式 | 控制台访问 |
1 | 管理状态:只可获得自动 | 单用户 |
2 | 第一多用户状态:不可获取NFS资源 | 多用户 |
3 | 可获得NFS资源 | 多用户 |
4 | 用户定义状态 | 不定 |
5 | 固件?断电状态 | 控制台访问 |
6 | 操作系统挂起 | 单用户 |
s | 管理任务和恢复中断的文件系统 控制台访问 | 控制台访问 |
你也可以看下面这段关于运行级别的信息:
系统启动时,进入/etc/inittab中initdefault所定义的运行级别(deafult 3)
各运行级别的定义
run level:0, (halt, shotdown, stop+a,sync,go )
1, (single user, boot -s, init s )
2, (multiuser, unshare net)
3, (multiuser, deafult)
5, (halt, power off )
6, (reboot to level 3 )
S (init 1, boot -s)
另外,实际上,SMF 引入了重大事件 (milestone)的概念,它代替了传统的运行级别概念。
------------------------------------------------------------------------------------------
回到原题,服务器的一般运行级别是3,这时系统是多用户操作系统,也有NFS远程服务在运行。这就要求我们关闭服务器要小心,最好先查看一下用户的使用情况。查看谁在使用服务器的命令是who。关闭服务器最好的方法是使用shutdown命令,因为它会给在线用户一个通知。
一下几句例子可以可供参考:
shutdown -g180 –y # SPARC:在180秒后切换系统到单用户状态。
shutdown -i0 -g300 –y # SPARC:在300秒后切换系统到可以关闭电源的运行级0。
shutdown -i6 -g120 -y # 在120秒后重新启动系统。
当然,之所以要如此麻烦,都是由于我们在操作的是一台提供服务的服务器。如果我们在操作的是一台单用户机器的话我们可以直接用inid命令切换运行级别。单用户状态下Solaris10的运行级别如下:运行级别 | SPARC平台提示符 | x86平台提示符 |
S(单用户级) | # | # |
2(多用户级) | # | # |
0(可关闭电源级) | Ok或者 > | 按任意键重新启动 |
3(多用户和NFS服务) | hostname console login: | hostname console login: |
======================================================
接下来是系统启动部分,同x86不同,Solaris在SPARC平台上使用Boot PROM来引导系统硬件,我们可以暂且把它当作和BIOS一样的东西。
引导过程包含了引导PROM、引导程序、内核初始化和系统初始化阶段,这几个阶段是按顺序执行的。
启动信息可参见下表:
引导阶段 | 描 述 |
引导PROM | PROM显示系统标识信息,然后运行自检测诊断程序来验证系统的硬件和内存。然后,PROM装载主引导程序bootblk,bootblk又从位于UFS文件系统中的默认引导设备装载辅助引导程序 |
引导程序 | 程序bootblk找到并执行ufsboot辅助引导程序,将其装载到内存。程序ufsboot被装载后,ufsboot装载内核 |
内核的初始化 | 内核自己进行初始化,并开始装载模块,使用ufsboot 来读取这些文件。当内核装载了足够的模块以挂载根文件系统时,内核终止ufsboot程序,并使用它自己的资源继续引导过程 |
系统初始化 | 内核创建了一个用户进程并启动/sbin/init 进程,后者通过读取/etc/inittab文件启动了其他的进程 |
引导系统可以到以下三种模式:
1.以多用户状态引导系统
要以多用户状态引导系统,可在PROM的ok提示符后,输入boot并按Enter键。自动引导过程将在默认的驱动器上启动,并显示一系列启动消息。系统以多用户状态被启动。
2.以单用户状态引导系统
要以单用户状态引导系统,可在PROM的ok提示符后,输入boot -s并按Enter键。系统引导到单用户状态并提示你输入root密码。
3.交互式引导
如果想要临时改变系统文件或者内核,你可能需要交互式引导。使用这样的方法,你可以测试你所做的修改,并在出现任何问题时很容易地进行恢复。boot -a是进入交互式引导的命令。
--------------------------------------------------------
由于暂时不会使用有SPARC的机器,所以相关详情省略。
接下来是x86的启动:
在x86上可以按ESC键进入手动启动模式或者不动默认使用自动启动模式。
在默认自动启动的情况下,会出现下面的提示
------------------------------------
<<< Current Boot Parameters >>>
Boot path: /pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0:a
Boot args:
Type b [file-name] [boot-flags]
or i
or
------------------------------------------------
说明:
交互式启动按b可以使用启动参数来启动系统:如b-a ,b- 启动到单用户模式s 检测新设备,b-r - 按i,启动交互选项部分可用的命令有:
help //查看帮助
printenv //查看启动选项
show-devs //显示所有device nodes
properties //显示所有active node属性
接下来是本部分最重要的用户账号、用户组和角色管理。
用户:
用户帐号是唯一的,包含了一组惟一的标识号和特征参数来区别不同的用户
它可用于:
- 生成Shell;
- 交互执行应用;
- 调度应用以按照制定的日期或时间运行;
- 访问数据库应用和其他系统服务。
除了用户账号之外,Solaris还有一些用于各种日常维护的系统账户,如root,daemon,bin,sys,lp,adm和uucp,它们的作用如下:
- 执行特定任务的系统资源分配;
- 运行mail服务器;
- 运行web服务器;
- 执行进程管理。
- 用户ID(UID):这是标记用户的一个整数编号。它从root用户开始编排(UID=0),其他UID顺序分配。但系统会保留1023以前的UID号用于系统账号。普通用户的UID从1024开始分配。
- 用户组:这是区分不同用户类型的一种灵活的分组机制。用户组不只是一组相关用户集合的概念,Solaris文件系统除了可以按照个别用户和全体用户来授予权限,还可以按照用户组指定文件访问的读、写和执行权限。每个UID都与一个基本组ID(GID)相关联,但它同时还可以与一个以上的辅助用户组关联。
- 主目录:它是用户所创建的所有文件的默认存储位置。
- 登录Shell:这是用户交互调用命令或编写程序的地方。Solaris提供各种不同的shell,包括Bourne shell(sh),C shell(csh),Bourne again shell(bash)和cornell shell(tcsh)。Shell的选择在很大程度上取决于用户的个人喜好,以及对类C编程结构和终端操作系统的熟练程度。
- 用户注释:它通常为用户的全称。但系统账户的注释可以用来描述它们的作用。如一个Apache系统账户的注释就可以采用“Webserver”。
使用useradd命令可以增加用户账号,命令格式如下:
useradd [-u uid | -g group] | -d dir | -s shell | -c comment | -m [-k skel_dir] ] login
说明:
u指定用户ID号;
g制定所在组;
d指定用户目录;
s制定用户Shell;
c用户的注释;
m建立用户目录;
login用户的登录名。
改变账户密码:
passwd username
passwd -l username可以锁定账户直到管理员设定密码。
修改账户属性:
usermod 参数 username
usermod的参数和useradd基本一致
删除账户:
userdel -r username
----------------------------------------------------------
同windows类似,Solaris10也提供用户组的管理。有关组的信息都存储在组数据库中(/etc/group),但本地的组数据库也可以由NIS/NIS+或LDAP数据库加以补充。可以cat /etc/group查看相关内容。
以下是一些管理命令:
查看用户所属的组:
groups username
查看某组包含的用户:
getent group groupname
增加用户组:
groupadd [-g gid] groupname
-g 设置组的ID号;
gid,组的ID号(不能与现有的组ID号重复);
删除用户组:
groupdel groupname。
----------------
貌似Solaris10中的用户现在运行的组只有一个,输入id命令可以查看当前的组关系。
所以,如果需要新建一个文件有不想和现在所在的gid对应,可以使用
newgrp groupname
命令来切换所在组。
------------------------------
接下来是角色:
对于传统的安全性模型,超级用户拥有完全的超级用户特权,而其他的用户没有足够的权限解决他们自己的问题。有了基于角色的访问控制(RBAC),便可以取代传统的安全模型。
有了RBAC,可以将超级用户的能力分成不同的包,并将它们分别分配给分担管理任务的个体。当使用RBAC划分超级用户特权时,用户可以拥有不同程度的访问权限,可以控制对其他用户特权操作的授权。
RBAC包括了如下特性。
- 角色:一种特殊类型的用户账号,可以用来执行一套管理任务。
- 特征文件(profile):一种打包机制,用特殊的属性将授权和命令分组。例如,使用用户和组的ID。
- 授权:一种用来授予对受限功能的访问权限的权利。
实现RBAC功 能的第一步就是对准备指派给每个用户的角色进行定义。另外,不同资源的访问权限也必须与具体的角色名联系在一起。对于管理者来说,角色的变化,以及用户与 角色关系的调整都是不可避免的。因此,这种变化的角色和用户列表的实现方法应尽可能的简单。另外,单一的任务并不容易实现与单一角色的关联。
比如,一个被定义为“备份操作员”的角色会涉及到ufsdump命令的运行,而这又需要对磁带设备进行写访问操作。此时,备份操作员角色本身就决定了它对这种文件访问的必然性。因此,我们不需要单独为它定义一个新角色。
又如,一个“设备管理员”可能使用命令tapes来对磁带设备执行写访问操作。所以,这些写操作也不能定义为一个新的角色,它自然成为“设备管理员”角色的一部分。
如果一个用户承担某个角色,他的结果要么承担该角色的全部权限,要么就丧失该角色的全部权限。
在默认情况下,Solaris 支持3种不同的系统管理角色。
- 主管理员(PA,Primary Administrator):负责为其他用户分派权限,并负责系统的安全问题。
- 系统管理员(SA,System Administrator):负责与安全无关的日常管理工作。
- 操作员(Operator):执行备份和设备维护操作。
PA和SA之间的区别主要取决于本地的安全策略。例如,尽管默认的PA角色具备添加用户和修改口令的权限,而默认的SA角色并不具备修改口令的权限,但在很多地方,禁止SA的口令访问可能是不现实的。RBAC的一个最大的好处就是它可以按照本地的需求非常方便地分配权限。
特征文件是用于授权的一个或一组特定的命令。这些授权连接在一起形成某个角色,并随后与某个用户或某些不同的用户建立关联关系。它们之间的关系如图7-1所示。
我们可以为每个角色创建一个新的用户账号,这些账号拥有自己的主目录和口令。当执行特征文件中的命令时,用户必须使用su命令进入角色账户,因为这种角色用户是不允许直接登录的。
图7-1 授权和特征文件与给予不同用户的角色相关联
通过su命令访问角色账户与通过su命令访问普通账户的一个不同之处在于它们的审计功能,即在通过su命令访问某个角色时,它执行的所有操作,连同用户的原始UID都会被记入日志。这样,每个访问角色的用户操作都会被明确地记入日志并进行审计
授权:
所谓授权,就是赋予某个角色执行某项操作的特权,它是在/etc/security/auth_attr文件中定义的。授权的定义形式与Internet的域名非常相似,它的最左边为企业名称,随后是依次细化的软件包和功能内容。
例如,net.cassowary.*就是一个由厂商cassowary.net提供的任何功能授权。
在默认情况下,所有Solaris提供的软件包都是由前缀Solaris来加以识别的。比如,修改口令的授权就是Solaris.admin.usermgr.pswd,而不是com.sun.Solaris.admin.usermgr.pswd。
许多授权的划分都是十分细致的,它可能只允许读访问,而不允许写访问,反之也是如此。比如,主管理员(PA)可能拥有Solaris.admin.usermgr.read和Solaris.admin.usermgr.write的授权,因而可以对用户配置文件分别进行读访问和写访问操作。而系统管理员(SA)虽然可能拥有Solaris.admin.usermgr.read授权,但他并没有Solaris.admin.usermgr.write的授权,因此他可以读用户配置文件,但不能写。
下面是一些Solaris的基本授权:
- Solaris.profmgr.read
- Solaris.jobs.users, Solaris.mail.mailq
- Solaris.admin.usermgr.read
- Solaris.admin.logsvc.read
- Solaris.admin.fsmgr.read
- Solaris.admin.serialmgr.read
- Solaris.admin.diskmgr.read
- Solaris.admin.procmgr.user, Solaris.compsys.read
- Solaris.admin.printer.read
- Solaris.admin.prodreg.read
- Solaris.admin.dcmgr.read, Solaris.snmp.read
- Solaris.project.read, Solaris.admin.patchmg.read
- Solaris.network.hosts.read, Solaris.compsys.read
- Solaris.admin.volmgr.read
从这里我们看到,Solaris.admin已经定义了一些授权,它们包括文件系统管理(fsmgr)、日志系统管理(logsvc)、端口管理(serialmgr)和用户管理(usermgr)等。
我们还可以利用关键字grant将权限传递给其他用户。一旦关键字grant被附加在一个授权字符串的末尾,即表明该授权可以委托给其他用户。例如,如果Solaris.admin.usermgr. grant授权与Solaris.admin.usermgr.pswd授权配合在一起,则表示口令修改的操作可以由受委托的用户来执行。
关系:
授权和命令的定义关联起来构成了权限配置文件,该权限配置文件再分派给不同的角色用户来使用。
RBAC数据库:
Solaris共有四个RBAC数据库用于角色的管理
- 扩展的用户属性数据库(/etc/user_attr):将用户、角色、授权和权限配置文件相关联。
- 授权属性数据库(/etc/security/auth_attr):定义了授权及其授权的属性,标识了相关的帮助文件。
- 权限配置文件数据库(/etc/security/prof_attr):定义权限配置文件,列出权限配置文件分配的授权,标识了相关的帮助文件。
- 权限执行属性数据库(/etc/security/exec_attr):定义了分配给一个权限配置文件的特权操作。
另外,policy.conf文件提供将应用于所有用户的默认属性。
这几个数据库的关系如图:
smexec:
可以用来创建、更新,以及删除exec_attr命令数据库的行。该命令在执行时必须提供如下三个选项之一:smmultiuser:smexec可以有两组参数:授权参数和指定参数。
- add,添加一个数据库行;
- delete,删除一个数据库行;
- modify,更改一个数据库行。
授权参数对于每个选项都是通用的,它们用于指定如下特性:使用smexec add 为exec_attr数据库添加行:
- -domain 管理的域
- -hostname:port 执行操作的主机名和端口(默认端口是898)
- -rolepassword 角色的认证口令
- -password 用户口令(不是角色口令)
- -rolename 角色名
- -username 用户名
范例:smexec add -hostname localhost -password xyz123 -username root -- -n
- -c 指定要添加的新命令名的完整路径
- -g 指定执行该新命令的有效GID
- -G 指定执行该新命令的实际GID
- -n 指定与该命令相关联的特征文件名称
- -t cmd 指定该操作为一个命令
- -u 指定执行该新命令的有效UID
- -U 指定执行该新命令的实际UID
“Print Manager” -t cmd -c /usr/sbin/lpsched -u 0 -g 0
该命令为Printer Manager特征文件添加了一个启动打印服务的能力,它的有效UID和GID都是0(即root)。
smmultiuser命令用来执行批处理操作,诸如添加或删除大量的用户。当需要指定的所有用户数据已经存在于文件中时,该命令会非常有用。smuser:
smuser命令可以用来执行对用户账户的操作,无论是从本地用户数据库还是从NIS/NIS+检索数据,它和smmultiuser类似。但是该命令通常只用来添加单个用户,而不是在批模式下添加一组用户。除了添加、删除,以及修改用户条目,也可以检索并列出现存的用户数据。smprofile:
它必备的选项除了add,modify,delete外还有一个list
smprofile命令可以用来创建、列出、更新及删除prof_attr数据库中的特征文件smrole:
smrole命令可以执行有关角色账户的操作,它通常只是用来添加单个角色,而不是以批模式的方式来添加一组角色。
更加详细的内容可以参见:http://rhingheart.blogspot.com/2008/02/solaris10_946.html这篇日志。
没有评论:
发表评论