系统管理指南:基本管理

管理 SMF 服务

本节包括有关管理 SMF 服务的信息。

对于 SMF 使用 RBAC 权限配置文件

可以使用 RBAC 权限配置文件来允许用户管理某些 SMF 服务,而不必授予用户 root 访问权限。权限配置文件定义用户可以运行哪些命令。已经为 SMF 创建了下列配置文件:

有关授权的具体信息,请参见 smf_security(5) 手册页。有关指定权限配置文件的说明,请参见《系统管理指南:安全性服务》中的“如何更改用户的 RBAC 属性”

Procedure如何禁用服务实例

请使用以下过程禁用服务。服务状态更改记录在服务配置系统信息库中。服务一旦被禁用,其禁用状态将持续到重新引导之后。使服务重新运行的唯一方法就是启用服务。

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 检查要禁用的服务的相关项。

    如果此服务具有所需的相关项,则无法禁用此服务。


    # svcs -D FMRI
    
  3. 禁用此服务。


    # svcadm disable FMRI
    

示例 19–7 禁用 rlogin 服务

第一个命令的输出表明 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

Procedure如何启用服务实例

请使用以下过程启用服务。服务状态更改记录在服务配置系统信息库中。服务一旦被启用,则只要符合服务相关性,系统每次重新引导后仍将保持该启用状态。

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 确定是否满足服务相关性。

    如果服务处于启用状态,则说明满足了服务相关性。否则,请使用 svcadm enable -r FMRI 以递归方式启用所有的相关性。


    # svcs -l FMRI|grep enabled
    
  3. 启用服务。


    # svcadm enable FMRI
    

示例 19–8 启用 rlogin 服务

本示例中的第二个命令启用 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


示例 19–9 在单用户模式下启用服务

以下命令启用 rpcbind-t 选项在不更改服务系统信息库的临时模式下启动服务。在单用户模式下,系统信息库不可写。-r 选项以递归方式启动指定服务的所有相关性。


# svcadm enable -rt rpc/bind

Procedure如何重新启动服务

如果由于配置更改或其他原因而需要重新启动当前正在运行的服务,那么,可以重新启动该服务,而不必键入单独的命令来先停止后启动该服务。只有必须在禁用服务之后、启用服务之前更改配置时,才需要特意地先禁用服务,然后再启用。

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 重新启动服务。


    # svcadm restart FMRI
    

Procedure如何恢复处于维护状态的服务

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 确定依赖该服务的任何进程是否已停止。

    通常,当某个服务实例处于维护状态时,与该实例相关的所有进程均已停止。但是,您应当在继续操作之前确保这一点。以下命令将列出与某个服务实例相关的所有进程以及这些进程的 PID(进程标识符)。


    # svcs -p FMRI
    
  3. (可选的)中止剩余的所有进程。

    对于由 svcs 命令显示的所有进程重复此步骤。


    # pkill -9 PID
    
  4. 如有必要,请修复服务配置。

    有关错误的列表,请查看 /var/svc/log 中相应的服务日志文件。

  5. 恢复此服务。


    # svcadm clear FMRI
    

Procedure如何恢复到另一个 SMF 快照

如果服务配置有误,则可以通过恢复到上次成功启动的快照来修复问题。在以下过程中,使用的是 console-login 服务以前的快照。

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 运行 svccfg 命令。


    # svccfg
    svc:>
    1. 选择要修复的服务实例。


      注 –

      必须使用对该实例进行完全定义的 FMRI,而不允许使用快捷方式。



      svc:> select system/console-login:default
      svc:/system/console-login:default>
    2. 创建可用快照的列表。


      svc:/system/console-login:default> listsnap
      initial
      running
      start
      svc:/system/console-login:default>
    3. 选择或恢复到 start 快照。

      start 快照是上次成功启动服务时的快照。


      svc:/system/console-login:default> revert start
      svc:/system/console-login:default>
    4. 退出 svccfg


      svc:/system/console-login:default> quit
      #
  3. 更新服务配置系统信息库中的信息。

    该步骤用 start 快照中的配置信息更新系统信息库。


    # svcadm refresh system/console-login
    
  4. 重新启动服务实例。


    # svcadm restart system/console-login
    

Procedure如何创建 SMF 配置文件

配置文件是一个 XML 文件,其中列出了各个 SMF 服务以及每个服务是应当处于启用状态还是禁用状态。使用配置文件,可以同时启用或禁用多个服务。并非所有的服务都需要列在配置文件中。每个配置文件只需包括那些为了使其有用而必须启用或禁用的服务。

  1. 创建配置文件。

    在以下示例中,svccfg 命令用来创建一个配置文件,该配置文件反映当前系统上哪些服务处于启用状态,哪些服务处于禁用状态。您还可以创建现有配置文件的副本以对其进行编辑。


    # svccfg extract> profile.xml
    

    如果您使用的是 Oracle Solaris JumpStart,如果您具有大量相同的系统,或者您希望对系统配置进行归档以供日后恢复,则可能需要使用此过程来创建唯一版本的 SMF 配置文件。

  2. 编辑 profile.xml 文件以进行任何所需的更改。

    1. service_bundle 声明中更改配置文件的名称。

      在以下示例中,要将配置文件的名称更改为 profile


      # cat profile.xml
        ...
      <service_bundle type=`profile` name=`profile`
          xmIns::xi='http://www.w3.org/2003/XInclude'
        ...
    2. 删除所有不应当由该配置文件管理的服务。

      对于每个服务,删除三个描述该服务的行。每个服务说明都以 <service 开头并以 </service 结尾。以下示例说明 LDAP 客户机服务的说明行。


      # cat profile.xml
       ...
       <service name='network/ldap/client' version='1' type='service'>
               <instance  name='default' enabled='true'/>
       </service>
    3. 添加所有应当由该配置文件管理的服务。

      每个服务必须使用上面所示的三行语法来进行定义。

    4. 如有必要,请更改选定服务的启用标志。

      在以下示例中,sendmail 服务处于禁用状态。


      # cat profile.xml
        ...
        <service  name='network/smtp' version='1' type='service'>
          <instance  name='sendmail' enabled='false'/>
        </service>
        ...
  3. 如有必要,请应用新配置文件。

    有关说明,请参见如何应用 SMF 配置文件

Procedure如何应用 SMF 配置文件

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 应用配置文件。

    以下示例使用的是 profile.xml 配置文件。


    # svccfg apply profile.xml
    

    注 –

    有关在 generic_limited_net.xmlgeneric_open.xml 之间切换以及在进行此切换时需要应用的属性的具体说明,请参见使用 generic*.xml 更改向网络提供的服务


Procedure使用 generic*.xml 更改向网络提供的服务

netservices 命令可在最小网络风险和传统网络风险之间切换系统服务(如在以前的 Solaris 发行版中那样)。该切换是使用 generic_limited.xmlgeneric_open.xml 配置文件实现的。另外,该命令还可更改某些服务属性,以便根据需要将相应的服务限制在仅本地模式或传统模式。

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 运行 netservices 命令。

    在以下示例中,选择的是开放式网络风险(即传统网络风险)。


    # /usr/sbin/netservices open
    

示例 19–10 限制网络服务的暴露程度

以下命令更改一些服务属性以使相应的服务在本地模式下运行,并限制哪些服务可以通过 generic_limited_net 配置文件来启用。只有在应用了 generic_open.xml 配置文件时,才应当使用此命令。


# /usr/sbin/netservices limited