1. 程式人生 > >如何更改linux檔案的擁有者及使用者組 chown和chgrp

如何更改linux檔案的擁有者及使用者組 chown和chgrp

本文整理自:  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  示例2chown   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