linux系统如何更改文件权限

时间:2022-05-05 21:53:44

一、 更改文件9个属性:chmod

用这个命令修改文件属性有两种方式:数字或者符号

1. 数字类型改变文件权限 chmod

(1)类unix系统的文件有9个属性分别是owner/group/others 的read/write/excute 属性,这9个属性中3个为一组,可以用数字来表示各个属性:

r:4

w:2

x:1

每个权限代表一个数字,将同一组的3个权限累加,就是这一组权限的数字表示方式,

例如当文件属性是[-rwxrw-r--]时:

Owner:  4+2+1=7(rwx)

Group:  4+2+0=6(rw)

Others: 4+0+0=4(r)

因此该文件的属性用数字来表示就是764了。

(2)语法:chmod [-R] xyz filename

xyz:数字类型的权限属性,也就是rwx所代表数字的和

-R: 进行递归的持续修改,常用于修改某一目录

(3)例子。假定有一个名为test的文件,具有如下权限:

-rw-rw-r-- 1 root root  165 Nov 18 15:53 test

现在希望拥有者对该文件可读、写和执行,root组用户对该文件只读,其他人没有权限,可以键入:

$chmod 740 test

$ls -l

-rwxr----- 1 root root  165 Nov 18 15:53 test

 

2. 符号类型改变文件权限

(1) chmod命令的一般格式为:

chmod [who] operator [permission] filename

who的含义是:

u 文件属主权限。

g 属组用户权限。

o 其他用户权限。

a 所有用户(文件属主、属组用户及其他用户)。

operator的含义:

+ 增加权限。

- 取消权限。

= 设定权限。

permi ssion的含义:

r 读权限。

w 写权限。

x 执行权限。

s 文件属主和组set-ID。

t 粘性位*。

l 给文件加锁,使其他用户无法访问。

(这里只关注r、w、x权限,其他的后面解释)

(2) 例子:当创建test文件时,它具有这样的权限:

-rw-r--r-- 1 root root  165 Nov 18 15:53 test

如果要使属主和属组用户具有有执行权限,并取消其他用户的写权限,可以用:

$ chmod ug+x test

$ chmod o-w test

-rwxr-xr-- 1 root root  165 Nov 18 15:53 test

最后将属组的属性设置为rwx,其他人的属性设置为rw

$ chmod g=rwx,o=rw test (g=rwx,o=rw是在一起的,中间没有空格)

-rwxrwxrw- 1 root root  165 Nov 18 15:53 test

二、 更改文件拥有者chown

当你创建一个文件时,你就是该文件的属主。一旦你拥有某个文件,就可以改变它的所有权,把它的所有权交给另外一个/etc/passwd文件中存在的合法用户。可以使用用户名或用户ID号来完成这一操作。

在改变一个文件的所有权时,相应的suid也将被清除,这是出于安全性的考虑。只有文件的属主和系统管理员可以改变文件的所有权。一旦将文件的所有权交给另外一个用户,就无法再重新收回它的所有权。如果真的需要这样做,那么就只有求助于系统管理员了。

1. chown命令的一般形式

chown  [--cfhvR]  owner  file


2. 例子

# ls -l

drwxrwxr-x  2 sam  sam  4096 10月 26 19:48 sam

# chown gem sam

# ls –l

drwxrwxr-x  2 gem  sam  4096 10月 26 19:48 sam

文件sam的所有权现在由用户sam交给了用户gem。也可以将属主与属组一起修改:

# chown gem:gem sam

# ls –l

drwxrwxr-x  2 gem  gem  4096 10月 26 19:50 sam

三、 更改所属用户组chgrp

chgrp命令和chown命令的格式差不多,下面给出一个例子:

# ls -l

drwxrwxr-x  2 gem  sam  4096 10月 26 19:48 sam

# chgrp group sam

# ls -l

drwxrwxr-x  2 gem  group  4096 10月 26 19:48 sam

一般来说再将文件复制给另外一个用户的时候需要修改文件的所属者,不然那个用户无法打开这个文件。

四、 找出你或者其他人所属的用户组

如果你希望知道自己属于哪些用户组,可以用ID这个命令:

# su sam

$ id

uid=506(sam) gid=4(adm) groups=4(adm)

如果想看其他人的用户组,用#id 用户名,如:

# su sam

$ id gem

uid=507(gem) gid=507(group) groups=507(group),0(root),4(adm)

五、参考

1. 《shell十三问》

(完)