跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 11.1 管理:安全服务 Oracle Solaris 11.1 Information Library (简体中文) |
以下过程使用 UNIX 权限保护文件、查找有安全风险的文件,并保护系统免受这些文件的危害。
以下任务列表列出了用于列出文件权限、更改文件权限,以及使用特殊文件权限保护文件的过程。
|
使用 ls 命令显示有关目录中所有文件的信息。
% ls -la
显示包括用户所有权、组所有权和文件权限的长格式。
显示所有文件,包括以点 (.) 开头的隐藏文件。
有关 ls 命令的所有选项,请参见 ls(1) 手册页。
示例 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* . . .
每一行按以下顺序显示了有关文件的信息:
文件类型-例如,d。有关文件类型的列表,请参见文件和目录的所有权。
权限-例如,r-xr-xr-x。有关说明,请参见文件和目录的所有权。
硬链接数-例如,2。
文件的所有者-例如,root。
文件的组-例如,bin。
文件的大小(以字节为单位)-例如,13076。
文件创建日期或上次更改日期-例如,Dec 1 20:55。
文件名-例如,dhcpinfo。
开始之前
如果您不是文件或目录的所有者,则必须指定有 Object Access Management(对象访问管理)权限配置文件。要更改作为public object(公共对象)的文件,您必须承担 root 角色。
有关更多信息,请参见如何使用指定给您的管理权限。
% ls -l example-file -rw-r--r-- 1 janedoe staff 112640 May 24 10:49 example-file
# chown stacey example-file
# ls -l example-file -rw-r--r-- 1 stacey staff 112640 May 26 08:50 example-file
要更改 NFS 挂载的文件的权限,请参见《在 Oracle Solaris 11.1 中管理网络文件系统》中的第 3 章 "访问网络文件系统(参考信息)"。
示例 7-2 允许用户更改其自身文件的所有权
安全注意事项-您应该有合理理由将 rstchown 变量的设置更改为零。缺省设置阻止用户列出属于其他用户的文件以便规避空间配额。
在此示例中,在 /etc/system 文件中将 rstchown 变量的值设置为零。通过此设置,文件所有者可以使用 chown 命令将文件的所有权更改为另一用户。通过此设置,文件所有者还可以使用 chgrp 命令将文件的组所有权设置为非其所在的组。重新引导系统后,更改将生效。
set rstchown = 0
有关更多信息,请参见 chown(1) 和 chgrp(1) 手册页。
开始之前
如果您不是文件或目录的所有者,则必须指定有 Object Access Management(对象访问管理)权限配置文件。要更改作为public object(公共对象)的文件,您必须承担 root 角色。
有关更多信息,请参见如何使用指定给您的管理权限。
$ chgrp scifi example-file
有关设置组的信息,请参见《在 Oracle Solaris 11.1 中管理用户帐户和用户环境》中的第 1 章 "管理用户帐户和用户环境(概述)"。
$ ls -l example-file -rw-r--r-- 1 stacey scifi 112640 June 20 08:55 example-file
另请参见示例 7-2。
在以下过程中,用户更改其所拥有的文件的权限。
% chmod who operator permissions filename
指定要更改其权限的用户。
指定要执行的操作。
指定要更改的权限。有关有效符号的列表,请参见表 7-5。
指定文件或目录。
% ls -l filename
注 - 如果您不是文件或目录的所有者,则必须指定有 Object Access Management(对象访问管理)权限配置文件。要更改作为public object(公共对象)的文件,您必须承担 root 角色。
示例 7-3 在符号模式下更改权限
在以下示例中,将解除其他用户的读取权限。
% chmod o-r example-file1
在以下示例中,将为用户、组和其他用户的本地文件添加读和执行权限。
$ chmod a+rx example-file2
在以下示例中,组的读、写和执行权限被指定给本地文件。
$ chmod g=rwx example-file3
在以下过程中,用户更改其所拥有的文件的权限。
% chmod nnn filename
按照该顺序指定将表示文件所有者、文件组和其他用户的权限的八进制值。有关有效八进制值的列表,请参见表 7-4。
指定文件或目录。
注 - 如果使用 chmod 命令更改具有现有 ACL 条目的对象的文件或目录权限,则 ACL 条目也可能会发生更改。具体更改因 chmod 权限操作更改以及文件系统的 aclmode 和 aclinherit 属性值而异。
有关更多信息,请参见《Oracle Solaris 11.1 管理:ZFS 文件系统》中的第 7 章 "使用 ACL 和属性保护 Oracle Solaris ZFS 文件"。
% ls -l filename
注 - 如果您不是文件或目录的所有者,则必须指定有 Object Access Management(对象访问管理)权限配置文件。要更改作为public object(公共对象)的文件,您必须承担 root 角色。
示例 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(公共对象)的文件,您必须承担 root 角色。
有关更多信息,请参见如何使用指定给您的管理权限。
% chmod nnnn filename
指定用于更改文件或目录的权限的八进制值。最左侧的八进制值设置文件的特殊权限。有关特殊权限的有效八进制值的列表,请参见表 7-6。
指定文件或目录。
注 - 使用 chmod 命令更改具有 ACL 项的文件的文件组权限时,文件组权限和 ACL 掩码都将更改为新权限。请注意,新 ACL 掩码权限可以更改在文件中具有 ACL 项的其他用户和组的权限。使用 getfacl 命令以确保为所有 ACL 项都设置了适当的权限。有关更多信息,请参见 getfacl(1) 手册页。
% 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 和 setgid 权限的情况。可疑可执行文件为用户而不是 root 或 bin 授予所有权。
开始之前
您必须承担 root 角色。有关更多信息,请参见如何使用指定给您的管理权限。
# find directory -user root -perm -4000 -exec ls -ldb {} \; >/tmp/filename
检查以指定的 directory(可以是根目录 (/)、sys、bin 或 mail)开头的所有挂载路径。
仅显示由 root 拥有的文件。
仅显示权限设置为 4000 的文件。
以 ls -ldb 格式显示 find 命令的输出。
包含 find 命令的结果的文件。
# more /tmp/filename
有关 setuid 权限的背景信息,请参见setuid 权限。
示例 7-6 查找具有 setuid 权限的文件
以下示例的输出显示,名为 rar 的组中的用户创建了一份 /usr/bin/sh 的个人副本,并将权限设置为 root 的 setuid。因此,/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 角色。有关更多信息,请参见如何使用指定给您的管理权限。
set noexec_user_stack=1
# reboot
示例 7-7 禁止记录可执行栈消息
在此示例中,将禁止记录可执行栈消息,然后重新引导系统。
# cat /etc/system set noexec_user_stack=1 set noexec_user_stack_log=0 # reboot
另请参见
有关更多信息,请参阅以下链接: