1.7.4 修改安全设置
如果已经创建了一个文件或目录,并且需要修改它的安全设置。
1.修改权限
chmod命令允许修改文件和目录的安全设置。chmod命令的格式如下:
模式参数允许使用八进制或符号模式来设定安全设置。八进制模式设置相当简单,只需根据需要为文件制定标准的3位八进制代码。八进制文件权限将自动应用于指定的文件。符号模式权限的实现则没有这么容易。如上图所示:u表示用户、g表示用户组、o表示其他(其他任何人)、a表示上述所有。使用一个符号表示:在已有权限中添加权限(+)、从已有权限中减去权限(-)、权限赋值(=)。设置使用权限,其中不仅仅包括rwx值,其他的设置包括:
1. x用于指定执行权限,仅当对象为目录或已经拥有执行权限时有效
2. s用于设置正在执行的UID或GID
3. t用于保存程序文本
4. u用于将权限设置为所有者的权限
5. g用于将权限设置为用户组的权限
6. o用于将权限设置为其他人的权限
命令的操作实例如下所示:
chmod的-R参数将循环执行文件和目录修改。可以在指定文件名时使用通配符,以便于在一个命令中修改多个文件的权限。操作实例如下所示:
2.修改所有者
chown命令可以方便地修改文件的所有者,chgrp命令允许修改文件的默认用户组。chown参数命令如下:
chown命令操作实例如下所示:
PS:只有根用户可以修改文件的所有者。任何用户都可以修改文件的默认组,但是用户必须是与修改操作相关的用户组中的成员。
chgrp命令的操作参数如下:
chgrp命令的操作实例如下:
现在ewang组中的任何成员都可以对文件执行执行操作,这是linux系统上共享文件的一种方法。
3.共享文件
Linux为每个文件和目录都存储了3个额外的信息位:
Ø set user id(SUID):当文件由用户执行时,程序将在文件所有的权限下运行。
Ø set group id(SGID):对于文件,程序将在文件用户组的权限下运行。对于目录,目录中创建的新文件使用目录用户组作为默认用户组。
Ø 粘着位:进程结束后,文件仍然保留(粘着)在内存中。
SGID位对于共享文件非常*。通过启用SGID位,可以强制在共享目录中创建的所有新文件都由目录的用户组和现在各个用户的用户组拥有。
可以使用chmod命令来设置SGID。它将被添加到标准3位八进制的开头(组成四位八进制值),或者,也可以在符号模式中使用符号s。
要创建一个始终为所有新文件设置了目录用户组的共享目录,只需要为目录设SGID。操作实例如下所示:
第一步是使用groupadd创建一个用户组shared。接下来使用mkdir命令创建一个希望共享的目录。接下来使用chgrp命令将目录的默认用户修改为包含需要共享文件的成员的用户组。最后,为目录设置为SGID,以确保在该目录中创建的任何文件都可以使用共享用户组名称为默认用户组。
要让此环境能够正常运行,所有用户组成员都需要设置各自的umask 002值,使用户组成员能够写入文件。
完成所有这些任务之后,可以进入共享目录并创建新文件。不出所料,新文件使用目录的默认用户组,而不是用户账户的默认用户组。现在,共享用户组中的任何用户都可以访问此文件。