chown就是change owner之略。
它除了改变文件所有者之外,还可以改变文件所属群组。它的操作对象当然是文件。
使用这个命令需要超级用户的权限。
chown命令的语法格式如下。
chown [ower][:[group]] file …
chown命令更改的是文件所有者还是文件所属群组,或者对两者都更改,取决于该命令的参数。
设用户名为bob,则下列参数的意义:
bob 把文件所有者从当前所有者更改为用户bob
bob:users 把文件所有者从当前所有者更改为用户bob,并把文件所属群组更改为users
:admins 把文件所属群组更改为admins,文件所有者不变
bob: 把文件所有者从当前所有者更改为用户bob,并把文件所厲群组更改为用户bob登录系统时所属的组
下面举一个例子。
假设有两个用户:拥有超级用户权限的janet和没有该权限的tony。
用户janet想要从她的主目录复制一个文件至用户tony的主目录中。因为用户janet希望tony能够编辑该文件,所以janet把该文件的所有者由janet更改为tony,具体操作如下:
[janet@linuxbox ~]$ sudo cp myfile.txt 〜tony
Password:
[janet@linuxbox ~]$ sudo Is -l ~tony/myfile.txt
-rw-r--r-- 1 root root 8031 2012-03-20 14:30 /home/tony/myfile.txt
[janet@linuxbox ~]$ sudo chown tony:〜tony/myfile.txt
[janet@linuxbox ~]$ sudo Is -l ~tony/myfile.txt
-rw-r--r-- 1 tony tony 8031 2012-03-20 14:30 /home/tony/myfile.txt
这里我们可以看到,用户janet先把文件从她的目录复制到用户tony的主目录中。接下来,janet 把该文件的所有者从root (使用sudo命令的结果)更改为tony。通过在第一个参数末尾加上冒号,janet 也把文件的所属群组更改成了tony登录系统时所属的组,该组名碰巧也叫tony。
值得注意的是,在janet第一次使用了sudo命令之后,系统为什么没有提示她输入她的密码呢?这是因为,在大多数的配置环境下,sudo命令会信任用户几分钟(直到计时结束)。