系统管理指南:基本管理

配置 SMF 服务

Procedure如何修改服务

以下过程显示如何更改不是由 inetd 服务管理的服务的配置。

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

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

  2. 根据需要对配置文件进行更改。

    许多服务都有一个或多个用来定义启动或其他配置信息的配置文件。这些文件可以在服务正在运行时进行更改。只有当服务已经启动后,才能检查这些文件的内容。

  3. 重新启动服务。


    # svcadm restart FMRI
    

示例 19–11 共享 NFS 文件系统

要使用 NFS 服务共享文件系统,必须在 /etc/dfs/dfstab 文件中定义 NFS 文件系统,然后重新启动 NFS 服务。以下示例显示 dfstab 文件的外观以及如何重新启动服务。


# cat /etc/dfs/dfstab
 .
 .
share -F nfs -o rw /export/home
# svcadm restart svc:/network/nfs/server

Procedure如何更改服务的环境变量

以下过程显示如何修改 cron 环境变量以帮助进行调试。

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

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

  2. 检验该服务是否正在运行。


    # svcs system/cron
    STATE          STIME    FMRI
    online         Dec_04   svc:/system/cron:default
  3. 设置环境变量。

    在本示例中,设置的是 UMEM_DEBUGLD_PRELOAD 环境变量。有关 setenv 子命令的信息,请参阅 svccfg(1M) 手册页。


    # svccfg -s system/cron:default setenv UMEM_DEBUG default
    # svccfg -s system/cron:default setenv LD_PRELOAD libumem.so
    
  4. 刷新和重新启动该服务。


    # svcadm refresh system/cron
    # svcadm restart system/cron
    
  5. 检验是否已进行更改。


    # pargs -e `pgrep -f /usr/sbin/cron`
    100657: /usr/sbin/cron
    envp[0]: LOGNAME=root
    envp[1]: LD_PRELOAD=libumem.so
    envp[2]: PATH=/usr/sbin:/usr/bin
    envp[3]: SMF_FMRI=svc:/system/cron:default
    envp[4]: SMF_METHOD=/lib/svc/method/svc-cron
    envp[5]: SMF_RESTARTER=svc:/system/svc/restarter:default
    envp[6]: TZ=GB
    envp[7]: UMEM_DEBUG=default
    #

Procedure如何更改由 inetd 控制的服务的属性

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

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

  2. 列出指定服务的属性。

    以下命令显示由 FMRI 标识的服务的所有属性。


    # inetadm -l FMRI
    
  3. 更改该服务的属性。

    inetd 控制的服务的每个属性都由属性名和指定的值来定义。提供属性名而不指定值会将属性重置为缺省值。有关服务属性的具体信息应包含在与该服务相关的手册页中。


    # inetadm -m FMRI property-name=value
    
  4. 检验属性是否已更改。

    再次列出属性以确保已进行相应的更改。


    # inetadm -l FMRI
    
  5. 确认更改已生效。

    确认属性更改达到了所需的效果。


示例 19–12 更改 telnettcp_trace 属性

以下示例显示如何将 telnettcp_trace 属性设置为 true。在运行 telnet 命令之后,检查 syslog 的输出,此时会发现所做的更改已经生效。


# inetadm -l svc:/network/telnet:default
SCOPE    NAME=VALUE
         name="telnet"
 .
 .
default  inherit_env=TRUE
default  tcp_trace=FALSE
default  tcp_wrappers=FALSE
# inetadm -m svc:/network/telnet:default tcp_trace=TRUE
# inetadm -l svc:/network/telnet:default
SCOPE    NAME=VALUE
         name="telnet"
 .
 .
default  inherit_env=TRUE
         tcp_trace=TRUE
default  tcp_wrappers=FALSE
# telnet localhost
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
login: root
Password: 
Last login: Mon Jun 21 05:55:45 on console
Sun Microsystems Inc.   SunOS 5.10      s10_57  May 2004
# ^D
Connection to localhost closed by foreign host.
# tail -1 /var/adm/messages
Jun 21 06:04:57 yellow-19 inetd[100308]: [ID 317013 daemon.notice] telnet[100625]
    from 127.0.0.1 32802

Procedure如何修改由 inetd 控制的服务的命令行参数

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

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

  2. 列出特定服务的 exec 属性。

    以下命令显示由 FMRI 标识的服务的所有属性。添加 grep 命令会将输出限制在该服务的 exec 属性。


    # inetadm -l FMRI|grep exec
    
  3. 更改该服务的 exec 属性。

    具有 exec 属性的 command-syntax 集定义在启动服务时运行的命令字符串。


    # inetadm -m FMRI exec="command-syntax
    "
    
  4. 检验属性是否已更改。

    再次列出属性以确保已进行相应的更改。


    # inetadm -l FMRI
    

示例 19–13 向 ftp 命令添加连接日志 (-l) 选项

在以下示例中,当 ftp 守护进程启动时,会向其中添加 -l 选项。此更改的效果可通过在 ftp 登录会话已经完成之后,检查 syslog 输出来查看。


# inetadm -l svc:/network/ftp:default | grep exec
        exec="/usr/sbin/in.ftpd -a"
# inetadm -m svc:/network/ftp:default exec="/usr/sbin/in.ftpd -a -l"
# inetadm -l svc:/network/ftp:default
SCOPE    NAME=VALUE
         name="ftp"
         endpoint_type="stream"
         proto="tcp6"
         isrpc=FALSE
         wait=FALSE
         exec="/usr/sbin/in.ftpd -a -l"
 .
 .
# ftp localhost
Connected to localhost.
220 yellow-19 FTP server ready.
Name (localhost:root): mylogin
331 Password required for mylogin.
Password:
230 User mylogin logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221-You have transferred 0 bytes in 0 files.
221-Total traffic for this session was 236 bytes in 0 transfers.
221-Thank you for using the FTP service on yellow-19.
221 Goodbye.
# tail -2 /var/adm/messages
Jun 21 06:54:33 yellow-19 ftpd[100773]: [ID 124999 daemon.info] FTP LOGIN FROM localhost 
     [127.0.0.1], mylogin
Jun 21 06:54:38 yellow-19 ftpd[100773]: [ID 528697 daemon.info] FTP session closed

Procedure如何转换 inetd.conf

以下过程将 inetd.conf 项转换为 SMF 服务清单。无论何时向系统添加依赖 inetd 的第三方应用程序,都需要运行此过程。如果您需要更改 /etc/inetd.conf 中项的配置,也需要运行此过程。

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

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

  2. 转换 inetd.conf 项。

    inetconv 命令将选定文件中的每个项都转换为服务清单。


    # inetconv -i filename
    

示例 19–14 将 /etc/inet/inetd.conf 项转换为 SMF 服务清单


# inetconv -i /etc/inet/inetd.conf