使用wang用户在其家目录中创建一个叫wangfile的空文件,然后使用ls -l命令查看该文件的详细信息,操作步骤如下所示:
- [wang@jump ~]$ id
- uid=1001(wang) gid=1001(wang) groups=1001(wang)
- [wang@jump ~]$ pwd
- /home/wang
- [wang@jump ~]$ touch wangfile
- [wang@jump ~]$ ls -l wangfile
- -rw-rw-r-- 1 wang wang 0 Jan 20 17:12 wangfile
ls -l结果中的第三项和第四项表示文件的所属者和所属组(红色文字)。在创建文件或目录后,默认当前的创建者即是文件的所属者,所属者所在的私有组即是该文件的所属组。使用chown命令可以更改文件所属者和所属组,这个命令只能由root用户来操作。命令使用方法如下。
(1)更改文件所属者和所属组
格式如下:
chown 所属者:所属组 文件名
例如,chown root:root wangfile,把文件wangfile的所属者设置成root,所属组设置成root。所属者和所属组之间的“:”也可以写成“.”,例如:chown root.root wangfile。
(2)更改文件所属者
格式如下:
chown 所属者 文件名
例如,chown zhang wangfile,把文件wangfile的所属者设置成zhang,然后使用ls -l命令查看修改后的效果,操作结果如下。
- [wang@jump ~]$ id zhang
- uid=1000(zhang) gid=1000(zhang) groups=1000(zhang)
- [wang@jump ~]$ whoami
- wang
- [wang@jump ~]$ chown zhang wangfile
- chown: changing ownership of ‘wangfile’: Operation not permitted
- [wang@jump ~]$ exit
- logout
- [root@jump scripts]# cd /home/wang
- [root@jump wang]# whoami
- root
- [root@jump wang]# chown zhang wangfile
- [root@jump wang]# ls -l wangfile
- -rw-rw-r-- 1 zhang wang 0 Jan 20 17:12 wangfile
- [root@jump wang]#
可见如果普通用户修改文件的所有者会报错,操作失败,除非使用root用户来操作才可以。
(3)更改文件所属组
格式如下:
chown .所属组 文件名 或 chown :所属者 文件名
例如,chown .zhang wangfile或chown :zhang wangfile,不设定“.”或“:”左边的内容,表示略过所属者,把文件wangfile的所属组设置成zhang用户。
注意,还可以使用chgrp命令更改所属组,如chgrp zhang wangfile。
如果更改的是目录所属,默认目录内的子文件和子目录并未跟着一起更改,若想实现目录内容继承更改,则需要增加递归参数-R。例如,chown -R zhang.zhang dd,表示更改目录dd及其内容的所属者和所属组。
文件复制对文件所属信息的影响以下操作所示。
- [root@jump ~]# cd /mnt
- [root@jump mnt]# mkdir dd
- [root@jump mnt]# touch dd/rootfile
- [root@jump mnt]# ls -ld dd
- drwxr-xr-x 2 root root 22 Jan 20 17:35 dd
- [root@jump mnt]# ls -l dd/rootfile
- -rw-r--r-- 1 root root 0 Jan 20 17:35 dd/rootfile
- [root@jump mnt]# chown -R zhang.zhang dd
- [root@jump mnt]# ls -ld dd
- drwxr-xr-x 2 zhang zhang 22 Jan 20 17:35 dd
- [root@jump mnt]# ls -l dd/rootfile
- -rw-r--r-- 1 zhang zhang 0 Jan 20 17:35 dd/rootfile
如果使用root用户复制dd目录及其目录下的子文件,文件的所属将会发生变化,变回root属主root属组了。参见如下操作。
- [root@jump mnt]# cp -r dd /tmp
- [root@jump mnt]# ls -ld /tmp/dd
- drwxr-xr-x 2 root root 22 Jan 20 17:40 /tmp/dd
- [root@jump mnt]# ls -ld /tmp/dd/rootfile
- -rw-r--r-- 1 root root 0 Jan 20 17:40 /tmp/dd/rootfile
那么如果想要复制后保持原所属信息不变,可增加-p参数,参见如下操作。
- [root@jump mnt]# rm -rf /tmp/dd
- [root@jump mnt]# cp -rp dd /tmp
- [root@jump mnt]# ls -ld /tmp/dd
- drwxr-xr-x 2 zhang zhang 22 Jan 20 17:35 /tmp/dd
- [root@jump mnt]# ls -l /tmp/dd/rootfile
- -rw-r--r-- 1 zhang zhang 0 Jan 20 17:35 /tmp/dd/rootfile