19_Linux基础知识及命令――――修改文件的属主和属组

首先我们来看一个小例子:a.txt属于redis组,因此redis组的用户对a.txt文件具有读写权限。如果我们想让用户mongodb 对文件a.txt具有读写权限,而mongodb并不在redis 组中,那么只能将a.txt的其他用户改为读写权限,但是这样一来不止mongodb,所有的其他用户都对a.txt具有读写权限了,因此这样的操作是非常危险的,通常不建议这么做。


# cd /tmp

# ll

# id mongodb

# chmod o=rw a.txt

# ll

wKioL1Nfyj3BKurTAAJARB9WdP8378.jpg


那么安全的做法是什么呢?

a如果文件a.txtredis用户仍有意义,那么我们可以将mongodb 用户加入到 redis组中,给redis组赋予读写权限;

b)如果文件a.txt redis用户已经没有意义了,那么我们可以将 a.txt的属主改为 mongodb用户,并且让a.txt的属主具有读写权限。


修改文件的属主命令格式为:

# chown [option] USERNAME FILE_NAME

其含义为将 FILE_NAME 这个文件的属主改为 USERNAME 这个用户


修改文件的属组命令格式为:

# chgrp [option] GROUP_NAME FILE_NAME

其含义为将 FILE_NAME 这个文件的属组改为 GROUP_NAME 这个用户


以上两个命令的选项和修改文件权限一样,有两个,分别是:

-R: 递归修改权限

--reference=[PATH]/FILE_NAME1 FILE_NAME2


例如,将文件 a.txt的属主改为mongodb用户:

# chown mongodb a.txt

# ll


将文件a.txt的属组改为testgrp

# chgrp testgrp a.txt

# ll


事实上使用chown 命令可以同时修改文件的属主和属组,其格式如下:

# chown USERNAME:GROUP_NAME FILE_NAME

其含义为将 FILE_NAME这个文件的属主改为USERNAME,并将其属组设定为GROUP_NAME这个组


更简单的写法可以是:

# chown USERNAME.GROUP_NAME FILE_NAME


例如,将文件a.txt的属主和属组改为root用户的root

# chown root:root a.txt

或者是

# chown root.root a.txt

# ll


命令chown 还可以只改属组而保留属主,其写法为:

# chown:GROUP_NAME FILE_NAME

例如,将文件a.txt的属组改为redis组,可以写成:

# chown :redis a.txt

# ll


如果想把a.txt的属主和属组改成b.txt的属主和属组,可以使用 --refernece 选项:

# chown --reference=b.txt a.txt

# ll

wKiom1NfyqjxtazEAAUl_dx3G2s320.jpg

需要注意的是,chownchgrp命令更改的权限都只针对文件本身,即如果文件是目录,则目录里的文件仍保持原来的权限。如果想同时修改目录和其中的文件权限,则需要使用 -R 来进行递归修改。


例如修改目录a的属组,不会影响目录a中文件的属组:

# ll

# chgrp redis a

# ll

# ll a

wKioL1Nfyr6iVqYkAAG4655iGFY837.jpg


注意,chmod命令所有用户都能使用,但是改变文件的属主(chown)和属组(chgrp),只有管理员才有此权限



你可能感兴趣的:(linux,文件,修改,属主,属组)