JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 管理:安全服务     Oracle Solaris 11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

第 1 部分安全性概述

1.  安全性服务(概述)

第 2 部分系统、文件和设备安全性

2.  管理计算机安全性(概述)

3.  控制对系统的访问(任务)

4.  病毒扫描服务(任务)

5.  控制对设备的访问(任务)

6.  使用基本审计报告工具(任务)

7.  控制对文件的访问(任务)

使用 UNIX 权限保护文件

用于查看和保证文件安全的命令

文件和目录的所有权

UNIX 文件权限

特殊文件权限(setuidsetgid 和 Sticky 位)

setuid 权限

setgid 权限

Sticky 位

缺省 umask

文件权限模式

使用访问控制列表保护 UFS 文件

防止可执行文件危及安全

保护文件(任务)

使用 UNIX 权限保护文件(任务列表)

如何显示文件信息

如何更改文件的所有者

如何更改文件的组所有权

如何在符号模式下更改文件权限

如何在绝对模式下更改文件权限

如何在绝对模式下更改特殊文件权限

防止程序受到安全风险(任务列表)

如何查找具有特殊文件权限的文件

如何禁止程序使用可执行栈

第 3 部分角色、权限配置文件和特权

8.  使用角色和特权(概述)

9.  使用基于角色的访问控制(任务)

10.  Oracle Solaris 中的安全属性(参考)

第 4 部分加密服务

11.  加密框架(概述)

12.  加密框架(任务)

13.  密钥管理框架

第 5 部分验证服务和安全通信

14.  网络服务验证(任务)

15.  使用 PAM

16.  使用 SASL

17.  使用 安全 Shell(任务)

18.  安全 Shell(参考)

第 6 部分Kerberos 服务

19.  Kerberos 服务介绍

20.  规划 Kerberos 服务

21.  配置 Kerberos 服务(任务)

22.  Kerberos 错误消息和故障排除

23.  管理 Kerberos 主体和策略(任务)

24.  使用 Kerberos 应用程序(任务)

25.  Kerberos 服务(参考)

第 7 部分在 Oracle Solaris 中审计

26.  审计(概述)

27.  规划审计

28.  管理审计(任务)

29.  审计(参考)

词汇表

索引

保护文件(任务)

以下过程使用 UNIX 权限保护文件、查找有安全风险的文件,并保护系统免受这些文件的危害。

使用 UNIX 权限保护文件(任务列表)

以下任务列表列出了用于列出文件权限、更改文件权限,以及使用特殊文件权限保护文件的过程。

任务
参考
显示文件信息。
更改本地文件所有权。
更改本地文件权限。

如何显示文件信息

使用 ls 命令显示有关目录中所有文件的信息。

示例 7-1 显示文件信息

在以下示例中,显示了 /sbin 目录中部分文件的列表。

% cd /sbin
% ls -la
total 4960
drwxr-xr-x   2 root     sys           64 Dec  8 11:57 ./
drwxr-xr-x  39 root     root          41 Dec  8 15:20 ../
-r-xr-xr-x   1 root     bin        21492 Dec  1 20:55 autopush*
-r-xr-xr-x   1 root     bin        33680 Oct  1 11:36 beadm*
-r-xr-xr-x   1 root     bin       184360 Dec  1 20:55 bootadm*
lrwxrwxrwx   1 root     root          21 Jun  7  2010 bpgetfile -> ...
-r-xr-xr-x   1 root     bin        86048 Dec  1 20:55 cryptoadm*
-r-xr-xr-x   1 root     bin        12828 Dec  1 20:55 devprop*
-r-xr-xr-x   1 root     bin       130132 Dec  1 20:55 dhcpagent*
-r-xr-xr-x   1 root     bin        13076 Dec  1 20:55 dhcpinfo*

   .
   .
   .

每一行按以下顺序显示了有关文件的信息:

如何更改文件的所有者

开始之前

如果您不是文件或目录的所有者,则必须分配有 Object Access Management(对象访问管理)权限配置文件。要更改作为public object(公共对象)的文件,您必须是超级用户。

  1. 显示文件的权限。
    % ls -l example-file
    -rw-r--r--   1 janedoe   staff   112640 May 24 10:49 example-file
  2. 成为具有所需安全属性的管理员。

    有关更多信息,请参见如何获取管理权限

  3. 更改文件的所有者。
    # chown stacey example-file
  4. 检验文件的所有者是否已更改。
    # ls -l example-file
    -rw-r--r--   1 stacey   staff   112640 May 26 08:50 example-file 

    已挂载 NFS 的文件系统对所有权和组的更改有更多限制。有关更多信息,请参见《Oracle Solaris 管理:网络服务》中的第 6  章 "访问网络文件系统(参考)"

示例 7-2 允许用户更改其自身文件的所有权

安全注意事项-您应该有合理理由将 rstchown 变量的设置更改为零。缺省设置阻止用户列出属于其他用户的文件以便规避空间配额。

在此示例中,在 /etc/system 文件中将 rstchown 变量的值设置为零。通过此设置,文件所有者可以使用 chown 命令将文件的所有权更改为另一用户。通过此设置,文件所有者还可以使用 chgrp 命令将文件的组所有权设置为非其所在的组。重新引导系统后,更改将生效。

set rstchown = 0

有关更多信息,请参见 chown(1)chgrp(1) 手册页。

如何更改文件的组所有权

开始之前

如果您不是文件或目录的所有者,则必须分配有 Object Access Management(对象访问管理)权限配置文件。要更改作为public object(公共对象)的文件,您必须是超级用户。

  1. 成为具有所需安全属性的管理员。

    有关更多信息,请参见如何获取管理权限

  2. 更改文件的组所有权。
    $ chgrp scifi example-file

    有关设置组的信息,请参见《Oracle Solaris 管理:常见任务》中的第 2  章 "管理用户帐户和组(概述)"

  3. 检验文件的组所有权是否已更改。
    $ ls -l example-file
     -rw-r--r--   1 stacey   scifi   112640 June 20 08:55  example-file

    另请参见示例 7-2

如何在符号模式下更改文件权限

在以下过程中,用户更改其所拥有的文件的权限。

  1. 在符号模式下更改权限。
    % chmod who operator permissions filename
    who

    指定要更改其权限的用户。

    operator

    指定要执行的操作。

    permissions

    指定要更改的权限。有关有效符号的列表,请参见表 7-5

    filename

    指定文件或目录。

  2. 检验文件的权限是否已更改。
    % ls -l filename

    注 - 如果您不是文件或目录的所有者,则必须分配有 Object Access Management(对象访问管理)权限配置文件。要更改作为public object(公共对象)的文件,您必须是超级用户。


示例 7-3 在符号模式下更改权限

在以下示例中,将解除其他用户的读取权限。

% chmod o-r example-file1

在以下示例中,将为用户、组和其他用户的本地文件添加读和执行权限。

$ chmod a+rx example-file2

在以下示例中,组的读、写和执行权限被指定给本地文件。

$ chmod g=rwx example-file3

如何在绝对模式下更改文件权限

在以下过程中,用户更改其所拥有的文件的权限。

  1. 在绝对模式下更改权限。
    % chmod nnn filename
    nnn

    按照该顺序指定将表示文件所有者、文件组和其他用户的权限的八进制值。有关有效八进制值的列表,请参见表 7-4

    filename

    指定文件或目录。


    注 - 使用 chmod 命令更改具有 ACL 项的文件的文件组权限时,文件组权限和 ACL 掩码都将更改为新权限。请注意,新 ACL 掩码权限可以更改在文件中具有 ACL 项的其他用户和组的权限。使用 getfacl 命令以确保为所有 ACL 项都设置了适当的权限。有关更多信息,请参见 getfacl(1) 手册页。


  2. 检验文件的权限是否已更改。
    % ls -l filename

    注 - 如果您不是文件或目录的所有者,则必须分配有 Object Access Management(对象访问管理)权限配置文件。要更改作为public object(公共对象)的文件,您必须是超级用户。


示例 7-4 在绝对模式下更改权限

在以下示例中,将对公众公开的目录的权限从 744(读、写、执行;只读;只读)更改为 755(读、写、执行;读和执行;读和执行)。

# ls -ld public_dir
drwxr--r--  1 jdoe   staff    6023 Aug  5 12:06 public_dir
# chmod 755 public_dir
# ls -ld public_dir
drwxr-xr-x  1 jdoe   staff    6023 Aug  5 12:06 public_dir

在以下示例中,将可执行 shell 脚本的权限从读写更改为读写和执行。

% ls -l my_script
-rw------- 1 jdoe   staff    6023 Aug  5 12:06 my_script
% chmod 700 my_script
% ls -l my_script
-rwx------ 1 jdoe   staff    6023 Aug  5 12:06 my_script

如何在绝对模式下更改特殊文件权限

开始之前

如果您不是文件或目录的所有者,则必须分配有 Object Access Management(对象访问管理)权限配置文件。要更改作为public object(公共对象)的文件,您必须是超级用户。

  1. 成为具有所需安全属性的管理员。

    有关更多信息,请参见如何获取管理权限

  2. 在绝对模式下更改特殊权限。
    % chmod nnnn filename
    nnnn

    指定用于更改文件或目录的权限的八进制值。最左侧的八进制值设置文件的特殊权限。有关特殊权限的有效八进制值的列表,请参见表 7-6

    filename

    指定文件或目录。


    注 - 使用 chmod 命令更改具有 ACL 项的文件的文件组权限时,文件组权限和 ACL 掩码都将更改为新权限。请注意,新 ACL 掩码权限可以更改在文件中具有 ACL 项的其他用户和组的权限。使用 getfacl 命令以确保为所有 ACL 项都设置了适当的权限。有关更多信息,请参见 getfacl(1) 手册页。


  3. 检验文件的权限是否已更改。
    % ls -l filename

示例 7-5 在绝对模式下设置特殊文件权限

在以下示例中,将对 dbprog 文件设置 setuid 权限。

# chmod 4555 dbprog
# ls -l dbprog
-r-sr-xr-x   1 db     staff        12095 May  6 09:29 dbprog

在以下示例中,将对 dbprog2 文件设置 setgid 权限。

# chmod 2551 dbprog2
# ls -l dbprog2
-r-xr-s--x   1 db     staff       24576 May  6 09:30 dbprog2

在以下示例中,将对 public_dir 目录设置 sticky 位权限。

# chmod 1777 public_dir
# ls -ld public_dir
drwxrwxrwt   2 jdoe   staff          512 May 15 15:27 public_dir

防止程序受到安全风险(任务列表)

以下任务列表列出了有关查找系统中的危险可执行程序,以及禁止程序利用可执行栈的过程。

任务
说明
参考
查找具有特殊权限的文件。
查找设置了 setuid 位,但不归 root 用户拥有的文件。
防止可执行栈溢出。
防止程序利用可执行栈。
防止记录可执行栈消息。
停止记录可执行栈消息。

如何查找具有特殊文件权限的文件

此过程查找可能未经授权在程序中使用 setuidsetgid 权限的情况。可疑可执行文件为用户而不是 rootbin 授予所有权。

开始之前

您必须是 root 角色。

  1. 使用 find 命令查找具有 setuid 权限的文件。
    # find directory -user root -perm -4000 -exec ls -ldb {} \; >/tmp/filename
    find directory

    检查以指定的 directory(可以是根目录 (/)、sysbinmail)开头的所有挂载路径。

    -user root

    仅显示由 root 拥有的文件。

    -perm -4000

    仅显示权限设置为 4000 的文件。

    -exec ls -ldb

    ls -ldb 格式显示 find 命令的输出。

    /tmp/filename

    包含 find 命令的结果的文件。

  2. /tmp/filename 中显示结果。
    # more /tmp/filename

    有关 setuid 权限的背景信息,请参见setuid 权限

示例 7-6 查找具有 setuid 权限的文件

以下示例的输出显示,名为 rar 的组中的用户创建了一份 /usr/bin/sh 的个人副本,并将权限设置为 rootsetuid。因此,/usr/rar/bin/sh 程序将使用 root 权限运行。

通过将 /var/tmp/chkprm 目录移至归档文件,可以保存此输出以供将来参考。

# find / -user root -perm -4000 -exec ls -ldb {} \; > /var/tmp/ckprm
# cat /var/tmp/ckprm
-r-sr-xr-x 1 root bin 38836 Aug 10 16:16 /usr/bin/at
-r-sr-xr-x 1 root bin 19812 Aug 10 16:16 /usr/bin/crontab
---s--x--x 1 root sys 46040 Aug 10 15:18 /usr/bin/ct
-r-sr-xr-x 1 root sys 12092 Aug 11 01:29 /usr/lib/mv_dir
-r-sr-sr-x 1 root bin 33208 Aug 10 15:55 /usr/lib/lpadmin
-r-sr-sr-x 1 root bin 38696 Aug 10 15:55 /usr/lib/lpsched
---s--x--- 1 root rar 45376 Aug 18 15:11 /usr/rar/bin/sh
-r-sr-xr-x 1 root bin 12524 Aug 11 01:27 /usr/bin/df
-rwsr-xr-x 1 root sys 21780 Aug 11 01:27 /usr/bin/newgrp
-r-sr-sr-x 1 root sys 23000 Aug 11 01:27 /usr/bin/passwd
-r-sr-xr-x 1 root sys 23824 Aug 11 01:27 /usr/bin/su
# mv /var/tmp/ckprm /export/sysreports/ckprm

如何禁止程序使用可执行栈

有关 32 位可执行栈的安全风险的说明,请参见防止可执行文件危及安全

开始之前

您必须是 root 角色。

  1. 编辑 /etc/system 文件,添加以下行:
    set noexec_user_stack=1
  2. 重新引导系统。
    # reboot

示例 7-7 禁止记录可执行栈消息

在此示例中,将禁止记录可执行栈消息,然后重新引导系统。

# cat /etc/system
set noexec_user_stack=1
set noexec_user_stack_log=0
# reboot

另请参见

有关更多信息,请参阅以下链接: