本节包括有关管理 SMF 服务的信息。
可以使用 RBAC 权限配置文件来允许用户管理某些 SMF 服务,而不必授予用户 root 访问权限。权限配置文件定义用户可以运行哪些命令。已经为 SMF 创建了下列配置文件:
Service Management:用户可以添加、删除或修改服务。
Service Operator: 用户可以请求对任何服务实例的状态进行更改(如重新启动和刷新)。
有关授权的具体信息,请参见 smf_security(5) 手册页。有关指定权限配置文件的说明,请参见《系统管理指南:安全性服务》中的“如何更改用户的 RBAC 属性”。
请使用以下过程禁用服务。服务状态更改记录在服务配置系统信息库中。服务一旦被禁用,其禁用状态将持续到重新引导之后。使服务重新运行的唯一方法就是启用服务。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
检查要禁用的服务的相关项。
如果此服务具有所需的相关项,则无法禁用此服务。
# svcs -D FMRI |
禁用此服务。
# svcadm disable FMRI |
第一个命令的输出表明 rlogin 服务没有相关项。本示例中的第二个命令禁用 rlogin 服务。第三个命令显示 rlogin 服务实例处于禁用状态。
# svcs -D network/login:rlogin # svcadm disable network/login:rlogin STATE STIME FMRI # svcs network/login:rlogin STATE STIME FMRI disabled 11:17:24 svc:/network/login:rlogin |
请使用以下过程启用服务。服务状态更改记录在服务配置系统信息库中。服务一旦被启用,则只要符合服务相关性,系统每次重新引导后仍将保持该启用状态。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
确定是否满足服务相关性。
如果服务处于启用状态,则说明满足了服务相关性。否则,请使用 svcadm enable -r FMRI 以递归方式启用所有的相关性。
# svcs -l FMRI|grep enabled |
启用服务。
# svcadm enable FMRI |
本示例中的第二个命令启用 rlogin 服务。第三个命令显示 rlogin 服务实例处于联机状态。
# svcs -l network/login:rlogin|grep enabled enabled false # svcadm enable network/login:rlogin # svcs network/login:rlogin STATE STIME FMRI online 12:09:16 svc:/network/login:rlogin |
以下命令启用 rpcbind。-t 选项在不更改服务系统信息库的临时模式下启动服务。在单用户模式下,系统信息库不可写。-r 选项以递归方式启动指定服务的所有相关性。
# svcadm enable -rt rpc/bind |
如果由于配置更改或其他原因而需要重新启动当前正在运行的服务,那么,可以重新启动该服务,而不必键入单独的命令来先停止后启动该服务。只有必须在禁用服务之后、启用服务之前更改配置时,才需要特意地先禁用服务,然后再启用。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
重新启动服务。
# svcadm restart FMRI |
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
确定依赖该服务的任何进程是否已停止。
通常,当某个服务实例处于维护状态时,与该实例相关的所有进程均已停止。但是,您应当在继续操作之前确保这一点。以下命令将列出与某个服务实例相关的所有进程以及这些进程的 PID(进程标识符)。
# svcs -p FMRI |
(可选的)中止剩余的所有进程。
对于由 svcs 命令显示的所有进程重复此步骤。
# pkill -9 PID |
如有必要,请修复服务配置。
有关错误的列表,请查看 /var/svc/log 中相应的服务日志文件。
恢复此服务。
# svcadm clear FMRI |
如果服务配置有误,则可以通过恢复到上次成功启动的快照来修复问题。在以下过程中,使用的是 console-login 服务以前的快照。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
运行 svccfg 命令。
# svccfg svc:> |
选择要修复的服务实例。
必须使用对该实例进行完全定义的 FMRI,而不允许使用快捷方式。
svc:> select system/console-login:default svc:/system/console-login:default> |
创建可用快照的列表。
svc:/system/console-login:default> listsnap initial running start svc:/system/console-login:default> |
选择或恢复到 start 快照。
start 快照是上次成功启动服务时的快照。
svc:/system/console-login:default> revert start svc:/system/console-login:default> |
退出 svccfg。
svc:/system/console-login:default> quit # |
更新服务配置系统信息库中的信息。
该步骤用 start 快照中的配置信息更新系统信息库。
# svcadm refresh system/console-login |
重新启动服务实例。
# svcadm restart system/console-login |
配置文件是一个 XML 文件,其中列出了各个 SMF 服务以及每个服务是应当处于启用状态还是禁用状态。使用配置文件,可以同时启用或禁用多个服务。并非所有的服务都需要列在配置文件中。每个配置文件只需包括那些为了使其有用而必须启用或禁用的服务。
创建配置文件。
在以下示例中,svccfg 命令用来创建一个配置文件,该配置文件反映当前系统上哪些服务处于启用状态,哪些服务处于禁用状态。您还可以创建现有配置文件的副本以对其进行编辑。
# svccfg extract> profile.xml |
如果您使用的是 Oracle Solaris JumpStart,如果您具有大量相同的系统,或者您希望对系统配置进行归档以供日后恢复,则可能需要使用此过程来创建唯一版本的 SMF 配置文件。
编辑 profile.xml 文件以进行任何所需的更改。
在 service_bundle 声明中更改配置文件的名称。
在以下示例中,要将配置文件的名称更改为 profile。
# cat profile.xml ... <service_bundle type=`profile` name=`profile` xmIns::xi='http://www.w3.org/2003/XInclude' ... |
删除所有不应当由该配置文件管理的服务。
对于每个服务,删除三个描述该服务的行。每个服务说明都以 <service 开头并以 </service 结尾。以下示例说明 LDAP 客户机服务的说明行。
# cat profile.xml ... <service name='network/ldap/client' version='1' type='service'> <instance name='default' enabled='true'/> </service> |
添加所有应当由该配置文件管理的服务。
每个服务必须使用上面所示的三行语法来进行定义。
如有必要,请更改选定服务的启用标志。
在以下示例中,sendmail 服务处于禁用状态。
# cat profile.xml ... <service name='network/smtp' version='1' type='service'> <instance name='sendmail' enabled='false'/> </service> ... |
如有必要,请应用新配置文件。
有关说明,请参见如何应用 SMF 配置文件。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
应用配置文件。
以下示例使用的是 profile.xml 配置文件。
# svccfg apply profile.xml |
有关在 generic_limited_net.xml 和 generic_open.xml 之间切换以及在进行此切换时需要应用的属性的具体说明,请参见使用 generic*.xml 更改向网络提供的服务。
netservices 命令可在最小网络风险和传统网络风险之间切换系统服务(如在以前的 Solaris 发行版中那样)。该切换是使用 generic_limited.xml 和 generic_open.xml 配置文件实现的。另外,该命令还可更改某些服务属性,以便根据需要将相应的服务限制在仅本地模式或传统模式。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
运行 netservices 命令。
在以下示例中,选择的是开放式网络风险(即传统网络风险)。
# /usr/sbin/netservices open |
以下命令更改一些服务属性以使相应的服务在本地模式下运行,并限制哪些服务可以通过 generic_limited_net 配置文件来启用。只有在应用了 generic_open.xml 配置文件时,才应当使用此命令。
# /usr/sbin/netservices limited |