操作系统 > Unix > 文章内容

Unix系统中文件管理和文件权限设置教程(6)

2017-1-22编辑:ljnbset

改变所有者和所属组
在 UNIX 上创建一个帐户时,系统会给每个用户分配一个所有者 ID 和组 ID。所有上面提到的权限也会基于所有者和组进行分配。

如下的两个命令可以改变一个文件的所有者和组:

chown:chown 表示的是 “change owner”,并且它是被用来改变一个文件的所有者。
chgrp:chgrp 表示的是 “change group”,并且它是被用来一个文件所属的组。


改变所有者关系
chown 命令用来改变一个文件的所有者,它的基本语法如下:

复制代码

代码如下:


$ chown user filelist


上面命令中的 user 既可以是系统中的用户名,也可以是系统中用户的 id(uid)。 示例:

复制代码

代码如下:


$ chown amrood testfile


改变 testfile 文件的所有者为 amrood 用户。

注意:超级用户,root 用户,拥有不受限制的权限,能够更改所有文件的所有者,但是普通用户只能修改他们所拥有的文件的所有者。

改变组关系
chgrp 命令被用来修改文件所属的组。基本语法如下:

复制代码

代码如下:


$ chgrp group filelist


上面命令中的 group 既可以是系统中存在的组的名称,也可以是系统中存在的组的 ID(GID)。

示例:

复制代码

代码如下:


$ chgrp special testfile


改变给定的文件的组为 special 组。

SUID 和 SGID 文件权限
通常执行一个命令时,为了完成该任务它必须拥有某些特殊的权限。

举一个例子,当你使用 passwd 命令改变了你的密码后,您的新密码存储在文件 /etc/shadow 中。

作为一个普通用户,出于安全原因你没有读或写访问这个文件的权限,但是当你改变你的密码时,你需要拥有对这个文件写权限。这意味着 passwd 程序必须给你额外的权限,以便您可以编写文件 /etc/shadow,也就是需要额外的权限。

通过设置用户 ID(SUID)和组 ID(SGID) 位可以给程序额外的权限。

当您执行一个启用了 SUID 的程序,你继承了程序所有者的权限。启动改程序的用户就可以不用设置 SUID 直接运行该程序。

这对于 SGID 同样是适用的。通常程序是按组的权限进行执行,除非你的组改变了该程序所属组的拥有者。

如果 SUID 和 SGID 权限是可用的,它们将会以小写的 “s” 出现。SUID 的 “s” 位通常位于权限中所有者执行权限的旁边。如下:

复制代码

代码如下:


$ ls -l /usr/bin/passwd
-r-sr-xr-x 1 root bin 19031 Feb 7 13:47 /usr/bin/passwd*


上面的显示了 SUID 被设置了并且该命令被 root 用户所拥有。在使用大写字母 S 而不是小写字母表示执行位没有设置。

如果对一个目录设置了防删除位(sticky bit),那么只有你是如下任意一种用户时你才可以删除该文件:

该目录的拥有者
被删除文件的拥有者
超级用户,root 用户
你可以使用如下的方式设置任何目录的 SUID 和 SGID 位。

复制代码

代码如下:


$ chmod ug+s dirname
$ ls -l
drwsr-sr-x 2 root root 4096 Jun 19 06:45 dirname

Unix系统中文件管理和文件权限设置教程(5)

热点推荐

登录注册
触屏版电脑版网站地图