系统管理指南:安全性服务

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

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

任务 

参考 

显示文件信息 

如何显示文件信息

更改文件拥有权 

如何更改文件的属主

如何更改文件的组拥有权

更改文件权限 

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

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

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

Procedure如何显示文件信息

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

    键入以下命令以显示当前目录中所有文件的长列表。


    % ls -la
    
    -l

    显示包括用户拥有权、组拥有权和文件权限的长格式。

    -a

    显示所有文件,包括以点 (.) 开头的隐藏文件。


示例 6–1 显示文件信息

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


% cd /sbin

% ls -la

total 13456

drwxr-xr-x   2 root     sys          512 Sep  1 14:11 .

drwxr-xr-x  29 root     root        1024 Sep  1 15:40 ..

-r-xr-xr-x   1 root     bin       218188 Aug 18 15:17 autopush

lrwxrwxrwx   1 root     root          21 Sep  1 14:11 bpgetfile -> ...

-r-xr-xr-x   1 root     bin       505556 Aug 20 13:24 dhcpagent

-r-xr-xr-x   1 root     bin       456064 Aug 20 13:25 dhcpinfo

-r-xr-xr-x   1 root     bin       272360 Aug 18 15:19 fdisk

-r-xr-xr-x   1 root     bin       824728 Aug 20 13:29 hostconfig

-r-xr-xr-x   1 root     bin       603528 Aug 20 13:21 ifconfig

-r-xr-xr-x   1 root     sys       556008 Aug 20 13:21 init

-r-xr-xr-x   2 root     root      274020 Aug 18 15:28 jsh

-r-xr-xr-x   1 root     bin       238736 Aug 21 19:46 mount

-r-xr-xr-x   1 root     sys         7696 Aug 18 15:20 mountall

   .

   .

   .

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


Procedure如何更改文件的属主

文件属主、主管理员角色或超级用户可以更改任何文件的拥有权。

  1. 显示文件的权限。


    % ls -l example-file
    
    -rw-r--r--   1 janedoe   staff   112640 May 24 10:49 example-file
  2. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  3. 更改文件的属主。


    # chown stacey example-file
    
  4. 检验文件的属主是否已更改。


    # ls -l example-file
    
    -rw-r--r--   1 stacey   staff   112640 May 26 08:50 example-file 

示例 6–2 允许用户更改其他用户拥有的文件的拥有权

安全注意事项-您应该有合理理由通过将 rstchown 变量设置为零来覆盖系统安全策略。访问系统的任何用户都可以更改系统中任何文件的拥有权。

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


set rstchown = 0

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

此外,请注意,已挂载 NFS 的文件系统对更改拥有权和组有更多限制。有关限制对已挂载 NFS 的系统的访问的更多信息,请参见《系统管理指南:网络服务》中的第 6  章 “访问网络文件系统(参考)”


Procedure如何更改文件的组拥有权

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 更改文件的组拥有权。


    $ chgrp scifi example-file
    

    有关设置组的信息,请参见《系统管理指南:基本管理》中的第 4  章 “管理用户帐户和组(概述)”

  3. 检验文件的组拥有权是否已更改。


    $ ls -l example-file
    
     -rw-r--r--   1 stacey   scifi   112640 June 20 08:55  example-file

    另请参见示例 6–2

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

  1. 如果您不是文件或目录的属主,请成为超级用户或承担等效角色。

    只有当前属主或超级用户可以使用 chmod 命令更改文件或目录的文件权限。

  2. 在符号模式下更改权限。


    % chmod who operator permissions filename
    
    who

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

    operator

    指定要执行的操作。

    permissions

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

    filename

    指定文件或目录。

  3. 检验文件的权限是否已更改。


    % ls -l filename
    

示例 6–3 在符号模式下更改权限

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


% chmod o-r example-file1

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


$ chmod a+rx example-file2

在以下示例中,将为组指定读写和执行权限。


$ chmod g=rwx example-file3

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

  1. 如果您不是文件或目录的属主,请成为超级用户或承担等效角色。

    只有当前属主或超级用户可以使用 chmod 命令更改文件或目录的文件权限。

  2. 在绝对模式下更改权限。


    % chmod nnn filename
    
    nnn

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

    filename

    指定文件或目录。


    注 –

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


  3. 检验文件的权限是否已更改。


    % ls -l filename
    

示例 6–4 在绝对模式下更改权限

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


# ls -ld public_dir

drwxr--r--  1 ignatz   staff    6023 Aug  5 12:06 public_dir

# chmod 755 public_dir

# ls -ld public_dir

drwxr-xr-x  1 ignatz   staff    6023 Aug  5 12:06 public_dir

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


% ls -l my_script

-rw------- 1 ignatz   staff    6023 Aug  5 12:06 my_script

% chmod 700 my_script

% ls -l my_script

-rwx------ 1 ignatz   staff    6023 Aug  5 12:06 my_script

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

  1. 如果您不是文件或目录的属主,请成为超级用户或承担等效角色。

    只有当前属主或具有超级用户功能的用户可以使用 chmod 命令更改文件或目录的特殊权限。

  2. 在绝对模式下更改特殊权限。


    % chmod nnnn filename
    
    nnnn

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

    filename

    指定文件或目录。


    注 –

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


  3. 检验文件的权限是否已更改。


    % ls -l filename
    

示例 6–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 ignatz   staff          512 May 15 15:27 public_dir