更改Linux文件所有者和用户组
来源:互联网 发布:阿里云幕布拍照800*600 编辑:程序博客网 时间:2024/06/08 12:45
一、基本知识
在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:
[root@localhost home]# touch testfile //由 root 用户创建文件
[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里存在,否则就会显示错误。
基本语法:
chgrp [-R] 用户组名称 dirname/filename ...
参数:
-R : 进行递归( recursive )的持续更改,即连同子目录下的所有文件、目录
都更新成为这个用户组。常常用在更改某一目录的情况。
示例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
更改为一个 /etc/group里不存在的用户组
[root@linux ~]# chgrp testing install.log
chgrp: invalid group name `testing' <== 出现错误信息~找不到这个用户组名~
四、chown 函数的使用
在Linux 的C 应用编程中,可以使用 chown 函数来修改文件的拥有者及拥有者组。此函数声明如下:
/usr/include/unistd.h文件中
<div><span class="com" style="color:#8800;">/* Change the owner and group of FILE. */</span><span class="pln"> </span></div><div><span class="kwd" style="color:#0088;">extern</span><span class="pln"> </span><span class="kwd" style="color:#0088;">int</span><span class="pln"> chown </span><span class="pun" style="color:#66660;">(</span><span class="pln">__const </span><span class="kwd" style="color:#0088;">char</span><span class="pln"> </span><span class="pun" style="color:#66660;">*</span><span class="pln">__file</span><span class="pun" style="color:#66660;">,</span><span class="pln"> </span><span class="typ" style="color:#66066;">__uid_t</span><span class="pln"> __owner</span><span class="pun" style="color:#66660;">,</span><span class="pln"> </span><span class="typ" style="color:#66066;">__gid_t</span><span class="pln"> __group</span><span class="pun" style="color:#66660;">)</span><span class="pln">__THROW __nonnull </span><span class="pun" style="color:#66660;">((</span><span class="lit" style="color:#06666;">1</span><span class="pun" style="color:#66660;">))</span><span class="pln"> __wur</span><span class="pun" style="color:#66660;">;</span><span class="pln"> </span></div>
此函数的第一个参数为欲修改用户的文件,第二个参数为修改后的文件拥有者,第三个参数为修改后该文件拥有者所在的组。
对于已打开的文件,使用 fchown 函数来修改。其第一个参数为已打开文件的文件描述符,其他同 chown 函数。该函数声明如下:
<div><span class="com" style="color:#8800;">/* Change the owner and group of the file that FD is open on. */</span><span class="pln"> </span></div><div><span class="kwd" style="color:#0088;">extern</span><span class="pln"> </span><span class="kwd" style="color:#0088;">int</span><span class="pln"> fchown </span><span class="pun" style="color:#66660;">(</span><span class="kwd" style="color:#0088;">int</span><span class="pln"> __fd</span><span class="pun" style="color:#66660;">,</span><span class="pln"> </span><span class="typ" style="color:#66066;">__uid_t</span><span class="pln"> __owner</span><span class="pun" style="color:#66660;">,</span><span class="pln"> </span><span class="typ" style="color:#66066;">__gid_t</span><span class="pln"> __group</span><span class="pun" style="color:#66660;">)</span><span class="pln"> __THROW __wur</span><span class="pun" style="color:#66660;">;</span><span class="pln"> </span></div>
对于连接文件,则可以使用 lchown 函数。其参数同于 chown 函数。
<div><span class="com" style="color:#8800;">/* Change owner and group of FILE, if it is a symbolic link the ownership of the symbolic </span></div><div><span class="com" style="color:#8800;">link is changed. */</span><span class="pln"> </span></div><div><span class="kwd" style="color:#0088;">extern</span><span class="pln"> </span><span class="kwd" style="color:#0088;">int</span><span class="pln"> lchown </span><span class="pun" style="color:#66660;">(</span><span class="pln">__const </span><span class="kwd" style="color:#0088;">char</span><span class="pln"> </span><span class="pun" style="color:#66660;">*</span><span class="pln">__file</span><span class="pun" style="color:#66660;">,</span><span class="pln"> </span><span class="typ" style="color:#66066;">__uid_t</span><span class="pln"> __owner</span><span class="pun" style="color:#66660;">,</span><span class="pln"> </span><span class="typ" style="color:#66066;">__gid_t</span><span class="pln"> __group</span><span class="pun" style="color:#66660;">)</span><span class="pln"> __THROW __nonnull </span><span class="pun" style="color:#66660;">((</span><span class="lit" style="color:#06666;">1</span><span class="pun" style="color:#66660;">))</span><span class="pln"> __wur</span><span class="pun" style="color:#66660;">;</span><span class="pln"> </span></div>
以上这 3 个函数如果执行成功,将返回 0,否则返回-1。
0 0
- 更改Linux文件所有者和用户组
- Linux:chown更改文件所有者和用户组
- 更改文件的所有者 和 所属用户组
- linux 修改文件用户组和所有者
- linux更改文件所有者
- 更改用户组 和所有者的命令
- linux修改文件或目录的所有者(chown)和用户组
- linux修改文件或目录的所有者(chown)和用户组
- linux 更改文件用户和用户组
- linux中更改文件所有者
- linux批量更改文件所有者
- linux更改文件夹权限,更改文件所有者
- linux更改文件夹权限,更改文件所有者
- linux更改文件夹权限,更改文件所有者
- Linux更改文件或目录的所有者和所有组
- 山寨笔记-linux下修改文件的所有者、用户组和权限
- Linux更改文件所有者或组
- Linux 更改文件所有者/所有组
- Shader创建老电影风格的屏幕特效
- 透过宏定义了解MFC的消息响应机制 --作者:苏林 发表时间:2008-04-13 09:04:02
- Java源文件编译出错:类文件包含错误的类 请删除该文件或确保文件位于正确的类路径子目录中
- 二分查找
- CDialog 非模态对话框的创建和销毁
- 更改Linux文件所有者和用户组
- 敏捷开发学习
- 《程序员面试宝典》练习
- 欢迎使用CSDN-markdown编辑器
- MIT计算机科学与编程导论——class1
- 网络编程 客户端与服务器数据传输
- android 定时3点重启
- MIT计算机科学与编程导论——class2
- 数据结构:二叉树的基本操作(JAVA实现)