以下任务列表说明列出文件权限、更改文件权限,以及使用特殊文件权限保护文件的过程。
任务 |
参考 |
---|---|
显示文件信息 | |
更改文件拥有权 | |
更改文件权限 |
使用 ls 命令显示有关目录中所有文件的信息。
在以下示例中,显示了 /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 . . . |
每一行按以下顺序显示了有关文件的信息:
文件的类型-例如,d。有关文件类型的列表,请参见文件和目录的拥有权。
权限-例如,r-xr-xr-x。有关说明,请参见文件和目录的拥有权。
硬链接数-例如,2。
文件的属主-例如,root。
文件的组-例如,bin。
文件的大小(以字节为单位)-例如,7696。
创建文件的日期或上次更改文件的日期-例如,Aug 18 15:20。
文件名-例如,mountall。
文件属主、主管理员角色或超级用户可以更改任何文件的拥有权。
显示文件的权限。
% ls -l example-file -rw-r--r-- 1 janedoe staff 112640 May 24 10:49 example-file |
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
更改文件的属主。
# chown stacey example-file |
检验文件的属主是否已更改。
# ls -l example-file -rw-r--r-- 1 stacey staff 112640 May 26 08:50 example-file |
安全注意事项-您应该有合理理由通过将 rstchown 变量设置为零来覆盖系统安全策略。访问系统的任何用户都可以更改系统中任何文件的拥有权。
在此示例中,在 /etc/system 文件中将 rstchown 变量的值设置为零。通过此设置,文件属主可以使用 chown 命令将文件的拥有权更改为另一用户。通过此设置,文件属主还可以使用 chgrp 命令将文件的组拥有权设置为非其所在的组。重新引导系统后,更改将生效。
set rstchown = 0 |
有关更多信息,请参见 chown(1) 和 chgrp(1) 手册页。
此外,请注意,已挂载 NFS 的文件系统对更改拥有权和组有更多限制。有关限制对已挂载 NFS 的系统的访问的更多信息,请参见《系统管理指南:网络服务》中的第 6 章 “访问网络文件系统(参考)”。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
$ chgrp scifi example-file |
有关设置组的信息,请参见《系统管理指南:基本管理》中的第 4 章 “管理用户帐户和组(概述)”。
检验文件的组拥有权是否已更改。
$ ls -l example-file -rw-r--r-- 1 stacey scifi 112640 June 20 08:55 example-file |
另请参见示例 6–2。
如果您不是文件或目录的属主,请成为超级用户或承担等效角色。
只有当前属主或超级用户可以使用 chmod 命令更改文件或目录的文件权限。
在符号模式下更改权限。
% chmod who operator permissions filename |
指定要更改其权限的用户。
指定要执行的操作。
指定要更改的权限。有关有效的符号列表,请参见表 6–5。
指定文件或目录。
检验文件的权限是否已更改。
% ls -l filename |
在以下示例中,将解除其他用户的读取权限。
% chmod o-r example-file1 |
在以下示例中,将为用户、组和其他用户添加读和执行权限。
$ chmod a+rx example-file2 |
在以下示例中,将为组指定读写和执行权限。
$ chmod g=rwx example-file3 |
如果您不是文件或目录的属主,请成为超级用户或承担等效角色。
只有当前属主或超级用户可以使用 chmod 命令更改文件或目录的文件权限。
在绝对模式下更改权限。
% chmod nnn filename |
按照该顺序指定将表示文件属主、文件组和其他用户的权限的八进制值。有关有效八进制值的列表,请参见表 6–4。
指定文件或目录。
使用 chmod 命令更改具有 ACL 项的文件的文件组权限时,文件组权限和 ACL 掩码都将更改为新权限。请注意,新 ACL 掩码权限可以更改在文件中具有 ACL 项的其他用户和组的权限。使用 getfacl 命令以确保为所有 ACL 项都设置了适当的权限。有关更多信息,请参见 getfacl(1) 手册页。
检验文件的权限是否已更改。
% ls -l filename |
在以下示例中,将公共目录的权限从 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 |
如果您不是文件或目录的属主,请成为超级用户或承担等效角色。
只有当前属主或具有超级用户功能的用户可以使用 chmod 命令更改文件或目录的特殊权限。
% chmod nnnn filename |
指定用于更改文件或目录的权限的八进制值。最左侧的八进制值设置文件的特殊权限。有关特殊权限的有效八进制值的列表,请参见表 6–6。
指定文件或目录。
使用 chmod 命令更改具有 ACL 项的文件的文件组权限时,文件组权限和 ACL 掩码都将更改为新权限。请注意,新 ACL 掩码权限可以更改在文件中具有 ACL 项的其他用户和组的权限。使用 getfacl 命令以确保为所有 ACL 项都设置了适当的权限。有关更多信息,请参见 getfacl(1) 手册页。
检验文件的权限是否已更改。
% ls -l filename |
在以下示例中,将对 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 |