在 shell 中,可以使用chown命令來改變文件所有者。chown命令是change owner(改變擁有者)的縮寫。需要要注意的是,用戶必須是已經(jīng)存在系統(tǒng)中的,也就是只能改變?yōu)樵?/etc/passwd這個(gè)文件中有記錄的用戶名稱才可以。
chown命令的用途很多,還可以順便直接修改用戶組的名稱。此外,如果要連目錄下的所有子目錄或文件同時(shí)更改文件擁有者的話,直接加上 -R的參數(shù)即可。
基本語法:
chown [-R] 賬號名稱 文件或目錄
chown [-R] 賬號名稱:用戶組名稱 文件或目錄
參數(shù):
-R : 進(jìn)行遞歸( recursive )的持續(xù)更改,即連同子目錄下的所有文件、目錄
都更新成為這個(gè)用戶組。常常用在更改某一目錄的情況。
示例1:
[root@localhost home]# touch testfile //由 root 用戶創(chuàng)建文件
[root@localhost home]# ls testfile –l
-rw--w--w- 1 root root 0 Jun 7 19:35 testfile //文件的擁有者及擁有者級均為 root
[root@localhost home]# chown yangzongde testfile //修改文件擁有者為 yangzongde
[root@localhost home]# ls testfile -l
-rw--w--w- 1 yangzongde root 0 Jun 7 19:35 testfile //查看文件擁有者為 yangzongde,但組仍為 root
示例2:
chown bin install.log
ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
chown root:root install.log
ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
三、使用chgrp命令更改文件所屬用戶組
在shell中,可以使用chgrp命令來改變文件所屬用戶組,該命令就是change group(改變用戶組)的縮寫。需要注意的是要改變成為的用戶組名稱,必須在 /etc/group里存在,否則就會(huì)顯示錯(cuò)誤。
基本語法:
chgrp [-R] 用戶組名稱 dirname/filename ...
參數(shù):
-R : 進(jìn)行遞歸( recursive )的持續(xù)更改,即連同子目錄下的所有文件、目錄
都更新成為這個(gè)用戶組。常常用在更改某一目錄的情況。
示例3
[root@localhost home]# ls testfile -l
-rw--w--w- 1 yangzongde root 0 Jun 7 19:35 testfile //查看文件擁有者為 yangzongde,但組為 root
[root@localhost home]# chgrp yangzongde testfile //修改擁有者組為 yangzongde
[root@localhost home]# ls testfile -l
-rw--w--w- 1 yangzongde yangzongde 0 Jun 7 19:35 testfile
[root@localhost home]# chown root:root testfile // 使用 chown 一次性修改擁有者及組
[root@localhost home]# ls testfile -l
-rw--w--w- 1 root root 0 Jun 7 19:35 testfile
示例4
[root@linux ~]# chgrp users install.log
[root@linux ~]# ls -l
-rw-r--r-- 1 root users 68495 Jun 25 08:53 install.log
示例5
更改為一個(gè) /etc/group里不存在的用戶組
[root@linux ~]# chgrp testing install.log
chgrp: invalid group name `testing' <== 出現(xiàn)錯(cuò)誤信息~找不到這個(gè)用戶組名~
四、chown 函數(shù)的使用
在Linux 的C 應(yīng)用編程中,可以使用 chown 函數(shù)來修改文件的擁有者及擁有者組。此函數(shù)聲明如下:
/usr/include/unistd.h文件中
/* Change the owner and group of FILE. */
extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)__THROW __nonnull ((1)) __wur;
此函數(shù)的第一個(gè)參數(shù)為欲修改用戶的文件,第二個(gè)參數(shù)為修改后的文件擁有者,第三個(gè)參數(shù)為修改后該文件擁有者所在的組。
對于已打開的文件,使用 fchown 函數(shù)來修改。其第一個(gè)參數(shù)為已打開文件的文件描述符,其他同 chown 函數(shù)。該函數(shù)聲明如下:
/* Change the owner and group of the file that FD is open on. */
extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __THROW __wur;
對于連接文件,則可以使用 lchown 函數(shù)。其參數(shù)同于 chown 函數(shù)。
/* Change owner and group of FILE, if it is a symbolic link the ownership of the symbolic
link is changed. */
extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group) __THROW __nonnull ((1)) __wur;
以上這 3 個(gè)函數(shù)如果執(zhí)行成功,將返回 0,否則返回-1。