如何更改linux檔案的擁有者及使用者組 chown和chgrp
阿新 • • 發佈:2018-12-16
本文整理自:
http://blog.163.com/[email protected]/blog/static/128388169201203011157308/
http://ydlmlh.iteye.com/blog/1435157
一、基本知識
在Linux中,建立一個檔案時,該檔案的擁有者都是建立該檔案的使用者。該檔案使用者可以修改該檔案的擁有者及使用者組,當然root使用者可以修改任何檔案的擁有者及使用者組。在Linux中,對於檔案的許可權(rwx),分為三部分,一部分是該檔案的擁有者所擁有的許可權,一部分是該檔案所在使用者組的使用者所擁有的許可權,另
一部分是其他使用者所擁有的許可權
。對於檔案的許可權請參考《
Linux的chmod命令
》
檔案(含資料夾,下同)的許可權,在shell中可以通過chmod命令來完成,關於此請參考
《
Linux的chmod命令
》
。
在
shell
中,可以使用
chown命令
來改變檔案所有者及使用者組,
chgrp命令
來改變檔案所在使用者組。
在 Linux的
C程式
中,可以使用
chown函式
來改變檔案所有者,
及
所在使用者組。
另外,
在shell中,要修改檔案當前的使用者必須具有管理員root的許可權。可以通過su命令切換到root使用者,也可以通過sudo獲得root的許可權。
二、使用
chown命令
更改檔案擁有者
在 shell 中,可以使用
chown命令
來改變檔案所有者。
chown命令
是change owner(改變擁有者)的縮寫。需要要注意的是,
使用者必須是已經存在系統中的,也就是隻能改變為在 /etc/passwd這個檔案中有記錄的使用者名稱稱才可以
。
chown命令
的用途很多,還可以順便直接修改使用者組的名稱。此外,如果要連目錄下的所有子目錄或檔案同時更改檔案擁有者的話,直接加上
-R
的引數即可。
基本語法:
chown [
-R]
賬號名稱
檔案或
目錄
chown [
-R]
賬號名稱:
使用者組名稱
檔案或
目錄
引數:
-R : 進行遞迴( recursive )的持續更改,即連同子目錄下的所有檔案、目錄
都更新成為這個使用者組。常常用在更改某一目錄的情況。
示例1:
[[email protected] home]#
touch
testfile
//由 root 使用者建立檔案
[[email protected] home]#
ls
testfile
–l
-rw--w--w- 1 root root 0 Jun 7 19:35 testfile
//檔案的擁有者及擁有者級均為 root
[[email protected] home]#
chown
yangzongde
testfile
//修改檔案擁有者為 yangzongde
[[email protected] 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
裡存在,否則就會顯示錯誤。
基本語法:
chgrp [
-R]
使用者組名稱
dirname/
filename ...
引數:
-R : 進行遞迴( recursive )的持續更改,即連同子目錄下的所有檔案、目錄
都更新成為這個使用者組。常常用在更改某一目錄的情況。
示例3
[[email protected] home]#
ls
testfile
-l
-rw--w--w- 1 yangzongde root 0 Jun 7 19:35 testfile
//檢視檔案擁有者為 yangzongde,但組為 root
[[email protected] home]#
chgrp
yangzongde
testfile
//修改擁有者組為 yangzongde
[[email protected] home]#
ls
testfile
-l
-rw--w--w- 1 yangzongde yangzongde 0 Jun 7 19:35 testfile
[[email protected] home]#
chown
root:
root
testfile
// 使用 chown 一次性修改擁有者及組
[[email protected] home]#
ls
testfile
-l
-rw--w--w- 1 root root 0 Jun 7 19:35 testfile
示例4
[[email protected] ~]#
chgrp
users
install.log
[[email protected] ~]#
ls
-l
-rw-r--r-- 1 root users 68495 Jun 25 08:53 install.log
示例5
更改為一個
/etc/group
裡不存在的使用者組
[[email protected] ~]#
chgrp
testing
install.log
chgrp: invalid group name `testing' <== 出現錯誤資訊~找不到這個使用者組名~
四、chown 函式的使用
在Linux 的C 應用程式設計中,可以使用
chown 函式
來修改檔案的擁有者及擁有者組。此函式宣告如下:
/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 ;
此函式的第一個引數為欲修改使用者的檔案,第二個引數為修改後的檔案擁有者,第三個引數為修改後該檔案擁有者所在的組。 對於 已開啟的檔案 ,使用 fchown 函式 來修改。其第一個引數為已開啟檔案的檔案描述符,其他同 chown 函式。該函式宣告如下:
/* 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 函式。其引數同於 chown 函式。
/* 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 個函式如果執行成功,將返回 0,否則返回-1。
再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!希望你也加入到我們人工智慧的隊伍中來!http://www.captainbed.net