1.1 用户数据保护
访问控制表
访问控制由受保护的信息资源组成,其指定授予谁对这些资源的访问权。只有对象的所有者和 root 用户是可以更改对象的访问权的用户。管理访问控制的最主要的任务是定义用户的组员身份,因为这些组员身份决定了用户对不是他们自己的文件的访问权。访问控制表(ACL)通过添加修改已分配给个人和组的基本许可权的扩展许可权来增加文件访问控制的质量。通过扩展许可权,可以允许或拒绝指定个人或组的文件访问而无需更改基本许可权。维护 ACL,可使用 aclget、acledit 和 aclput 命令。
chmod 命令可以设置基本许可权和属性(用八进制记数法)。chmod 子例程(该命令调用的)禁用扩展许可权。如果对有 ACL 的文件使用 chmod 命令的数字方式,则禁用扩展许可权。chmod 命令的符号方式不禁用扩展许可权。
基本许可权
基本许可权是传统的分配到文件所有者、文件组和其它用户的文件访问方式。访问方式是:读(r)、写(w)和执行/搜索(x)。
在 ACL 中,基本许可权为以下格式,带有表示为 rwx(将每个没有指定的许可权更换为连字符(-))的 Mode 参数:
base permissions:
owner(name): Mode
group(group): Mode
others: Mode
扩展许可权
扩展许可权允许文件的所有者更精确地定义该文件的访问权。扩展许可权通过对指定的个人、组或组和用户的组合允许、拒绝或执行访问方式来修改基本文件许可权(所有者、组、其它)。通过使用关键字来修改许可权。
permit、deny 和 specify 关键字定义如下:
permit:授予用户或组对文件的指定访问权
deny:限制用户或组使用对文件的指定访问权
specify:为用户或组精确地定义文件访问权
如果通过 deny 或 specify 关键字来拒绝用户特定的访问权,没有任何其它的项可以覆盖该访问拒绝。
要使扩展许可权生效,enabled 关键字必须在 ACL 中指定。缺省值为 disabled 关键字。
在 ACL 中,扩展许可权为以下格式:
extended permissions:
enabled | disabled
permit Mode UserInfo...:
deny Mode UserInfo...:
specify Mode UserInfo...:
每一个 permit、deny 或 specify 项占独立的一行。Mode 参数表示成 rwx(每个没有指定的许可权用连字符(-)代替)。UserInfo 参数表示成 u:UserName 或 g:GroupName 或逗号隔开的 u:UserName 和 g:GroupName 的组合。
acledit 命令让您更改由 File 参数指定的文件的访问控制信息。此命令显示了当前访问控制信息,并让文件所有者使用 EDITOR 环境变量指定的编辑器更改此信息。在进行任何永久性更改之前,此命令都将询问您是否要进行更改。
以下 ACL 指出文件属于用户 user1 和组 staff。另外,用户 user2 具有读此文件的权限:
attributes:
base permissions:
owner (user1): rw-
group (group): r--
others: ---
extended permissions
enabled
permit r-- u:user2
以下 ACL 指出了文件属于同一个用户和组,但是在此示例中,每个其它用户(除了 user2)都有读权限:
enabled
"acledit "命令用于建立ACL。首先必须设置文本编辑器.如:export EDITOR=/usr/bin/vi。
然后使用:acledit file_name
屏幕上将会显示:
attributes:
base permissions
owner (rcunning): rwx
group (staff): r—
others: ---
extended permissions
disabled
要设置扩展的权限,将“disabled ”设置改为“enabled”:
extend permissions
enabled
使用permit、deny 或specify关键字来定义扩展权限。前面的例子表明只有所有者能对这个文件写操作。组成员能读此文件而其他用户则没有任何许可权限。如果要使用户" joe"能够读写这个文件,用以下命令:
extended permissions
enabled
permit rw- u: joe.
要允许组用户joegroup读这个文件,用以下命令:
rermit r-- g: joegroup
你能够通过在同一行中合并多个条目来对权限进行微调。如果只想为pete提供读写权,而他是系统组的一部分,则用以下命令:
permit rw- u: pete, g: system
要为几个用户或组增加许可权限,则使用分行命令 :
permit rw- u: joe
permit rw- u: pete
使用" ls -el"命令,查看ACL是否已在文件中设置。如"ls -el profile"命令显示:
— rwxw--------+
最后的+表示文件已具 有有效的ACL 。
注意:使用有数字争议的chmod 命令将使文件或目录的ACL无效
setuid 和 setgid
多数情况下许可权位机制允许对资源的有效访问控制。但对于更精确的访问控制,操作系统提供了 setuid 和 setgid 程序。
大部分程序以调用它们的用户的用户和组访问权执行。程序所有者通过使该程序成为 setuid 或 setgid 程序可以关联调用它们的用户的访问权;就是说,程序在其许可权字段内设置了带有 setuid 或 setgid 位。当进程执行程序时,进程获取程序所有者的访问权。setuid 程序使用其所有者的访问权执行,而 setgid 程序有其组的访问权,并且两个位都可以根据许可权机制来设置。
文件和目录的存取许可权
文件和目录有一组许可权位,采用标准的读、写和执行来定义三个级别的许可权:用户(文件属主)、组和其他人,另外附加的三种许可权位是SUID、SGID和SVTX(粘着位)。
带SUID位的可执行文件意味着文件运行时,其进程以文件的有效UID运行。Shell程序不支持SUID,SUID对目录无意义;带SGID位的可执行文件意味着文件运行时,其进程以文件属组的有效GID运行;带SGID的目录表示在该目录下创建的文件/目录将继承目录的组ID,而忽略创建者的属组;AIX中的粘着位对文件无意义,带粘着位的目录意味着:即使对目录具有写许可权(如/tmp),用户也不能随便删除目录下的文件,除非是文件属主或目录属主。
许可权位 |
文件 |
目录 |
R |
用户具有读许可权 |
用户列出目录的内容 |
W |
用户可修改文件内容 |
用户可在目录下创建或删除文件 |
X |
用户可执行该文件 |
用户可cd到该目录并在PATH中引用该目录 |
SUID |
执行该程序时具有文件属主的有效UID |
—— |
SGID |
程序运行时具有文件组的有效GID |
目录下创建的文件继承目录的GID |
SVTX |
—— |
只有文件或目录属主有权在该目录下删除文件 |
网络服务
客户机服务器应用程序在服务器上打开通信端口,允许应用程序侦听接收到的客户机请求。因为打开的端口易受潜在的安全攻击,所以要识别打开端口的这些应用程序并关闭那些没有必要打开的端口。这种习惯很有用,因为它使您知道什么系统对从因特网上访问的人来说是可用的。