文件权限管理引言如何描述文件权限?如何修改文件拥有者?如何修改文件访问权限?【问题的提出】Geecy软件开发公司即将开始在Linux系统上进行两个项目的开发。开发人员David和Peter组成一个小组,负责A项目的开发;开发人员Jack和Mike组成另一个小组,负责B项目的开发。【问题的提出】(续)系统管理员Ray需要为这四名开发人员分别建立用户帐号,并满足以下要求:(1)建立目录“/project_a”,该目录里面的文件只能由David和Peter两人读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何的访问操作;(2)建立目录“/project_b”,该目录里面的文件只能由Jack和Mike两人读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何的访问操作;(3)建立目录“/project”,该目录里面的文件只能由David、Peter、Jack和Mike四人读取、增加、删除、修改以及执行,其他用户只可以对该目录进行只读的访问操作。【问题分析】Linux系统采用传统的Unix权限管理机制,对文件或目录的权限设置不能精确到每个用户。也就是,不能直接指定某个文件的权限类似于“对X和Y用户只读、对M和N用户可读可执行、对P和Q用户可读可写可执行”这么详细。【问题分析】(续)在Linux中文件权限的设置对象只有三种:文件的拥有者(1个用户)、组的拥有者(若干个用户)以及其他用户(若干个用户)。但一个用户可以加入到多个用户组,从而可以形成比较复杂的关系,以满足现实需求。【问题分析】(续)因此,可以建立三个用户组:prj_a(组员有David和Peter)、prj_b(组员有Jack和Mike)和prj(David、Peter、Jack和Mike)。然后:(1)对目录“/project_a”设置权限,允许组prj_a读取、增加、删除、修改以及执行,不允许其他用户进行任何的访问操作;(2)对目录“/project_b”设置权限,允许组prj_b读取、增加、删除、修改以及执行,不允许其他用户进行任何的访问操作;(3)对目录“/project”设置权限,允许组prj读取、增加、删除、修改以及执行,允许其他用户对该目录进行只读的访问操作。文件权限的描述文件访问权限(FAP,FileAccessPermission)的描述如下表所示:符号意义对于文件的权限对于目录的权限r读(Read)显示文件内容列出目录中的文件w写(Write)编辑或删除文件创建或删除文件和子目录x执行(Execute)执行Shell脚本或二进制程序文件搜索或进入目录文件权限的描述(续)例如:ray@geecy:~$ls-l/bin/date↙-rwxr-xr-x1rootroot25820Jul262001/bin/date前三个字符(“rwx”)描述文件拥有者对该文件具有的权限,中间三个字符(“r-x”)描述组拥有者对该文件具有的权限,最后三个字符(“r-x”)描述其他用户(既不是文件拥有者也不是组拥有者的其他用户)对该文件具有的权限。修改文件拥有者命令chown用于修改文件的拥有者。命令chgrp用于修改文件的组拥有者。例如:geecy:~#cp/kernelversion/tmp↙geecy:~#chownray/tmp/kernelversion↙geecy:~#chgrpusers/tmp/kernelversion↙修改文件拥有者(续)只有系统管理员用户才能修改文件的拥有者和组拥有者。选项“-R”用于以递归方式实现对整个目录的所有内容(所有子目录和文件)全部修改。修改文件访问权限修改文件访问权限可以使用chmod命令。系统管理员可以修改整个文件系统的所有文件的FAP,普通用户只能修改拥有者是自己的那些文件。修改文件访问权限(续)修改FAP的一种方式是符号描述方式:u、g和o分别表示文件的拥有者(User)、组拥有者(Group)和其他用户(Others);符号“+”和“-”分别表示增加权限和减去权限。例如:ray@geecy:~#chmodg+w/tmp/kernelversion↙ray@geecy:~#chmodu-x,g-w,o+x/tmp/kernelversion↙修改文件访问权限(续)另一种方式符号是绝对方式:r、w和x表示二进制位中的1,“-”表示二进制位中的0;每三个二进制位转换成对应的十进制值。例如:ray@geecy:~#chmod750/tmp/kernelversion↙【解决方案】先增加用户组:geecy:~#groupadd-g2000prj↙geecy:~#groupadd-g2001prj_a↙geecy:~#groupadd-g2002prj_b↙【解决方案】(续)再增加用户:geecy:~#useradd-m-u3001-g2001-G2000david↙geecy:~#useradd-m-u3002-g2001-G2000peter↙geecy:~#useradd-m-u3003-g2002-G2000jack↙geecy:~#useradd-m-u3004-g2002-G2000mike↙【解决方案】(续)修改用户密码:geecy:~#passwddavid↙geecy:~#passwdpeter↙geecy:~#passwdjack↙geecy:~#passwdmike↙【解决方案】(续)建立目录:geecy:~#mkdir/project↙geecy:~#mkdir/project_a↙geecy:~#mkdir/project_b↙【解决方案】(续)修改目录的组拥有者:geecy:~#chgrpprj/project↙geecy:~#chgrpprj_a/project_a↙geecy:~#chgrpprj_b/project_b↙【解决方案】(续)修改目录的FAP:geecy:~#chmod574/project↙geecy:~#chmod570/project_a↙geecy:~#chmod570/project_b↙练习1、复制文件“/etc/hosts”到目录“/tmp”,然后设置其读写权限为:自己可以读、写和执行,组拥有者的用户可以读和执行,其他用户只可以执行。2、复制文件“/etc/hosts”到目录“/tmp”,然后只使用chown命令修改其拥有者为用户ray,组拥有者为组users。要求不得使用chgrp命令。【提示】使用man命令获取帮助。练习(续)3、Tenny一个人使用Linux系统,他既是系统管理员,又是普通用户。为了系统的稳定使用,他需要使用管理员用户为自己创建的两个用户帐号tenny和ten。Tenny平时使用这两个用户登录使用系统,为了这两个用户交换和共享使用的方便,还需要达到如下的要求:(1)在系统中建立一个目录“/mydir”;(2)设置目录“/mydir”的权限为:该目录里面的文件只能由tenny和ten两个用户读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何的访问操作。