如何更改linux文件的拥有者及用户组(chown和chgrp)[通俗易懂]

如何更改linux文件的拥有者及用户组(chown和chgrp)[通俗易懂]本文整理自:http://blog.163.com/yanenshun@126/blog/static/128388169201203011157308/http://ydlmlh.iteye.com/blog/1435157一、基本知识在Linux中,创建一个文件时,该文件的拥有者都是创建该文件的用户。该文件用户可以修改该文件的拥有者及用户组,当然root用户可以修改任何文…

大家好,又见面了,我是你们的朋友全栈君。

本文整理自: 

http://blog.163.com/yanenshun@126/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

[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文件中

 

 

/* 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。

更多干货,请关注我的微信公众号:红柚甜

如何更改linux文件的拥有者及用户组(chown和chgrp)[通俗易懂]

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134139.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • TLSF内存分配器记录[通俗易懂]

    TLSF内存分配器记录[通俗易懂]论文:《TLSF:aNewDynamicMemoryAllocatorforReal-TimeSystems》这也是Unity底层使用的内存分配器。我直接从论文中间部分开始看。firstlevel存的是每个内存分配大小,从2的四次方到2的31次方。而对应每个大小,又指向一个二级列表,里面被分成4级,每一级的范围认为是同一类。1表示空闲,所以只有2的六次方和2的15次方块是空闲的。再看它指向的二级列表。只有2的六次方+16到2的6次方+32的这个.

    2022年6月26日
    44
  • 新人如何入行3D游戏建模

    新人如何入行3D游戏建模所有行业都是一样的,没有什么容易的,只不过这一行是偏向于技术的,一个有好的建模师月薪10k+是很常见的,这个需要有自己刻苦学习的成果。游戏建模前景在游戏模型行业,你基本不用担心找不到工作,因为游戏模型师人才缺口非常大。举个例子:游戏制作公司的人员配比大多数是这样的:比如100人的三维制作组,可能有60人在做模型贴图,10个人在K动画。只要你保证技能在手,一定是抢手的人才。在几年前游戏建模这个行业不仅仅缺人才,甚至连新手都非常稀缺,那个时候公司愿意招聘实习生,培养他们然后给公司干活,但是工资一定不会给开的很

    2022年5月12日
    47
  • currentStyle getComputedStyle「建议收藏」

    注意:getComputedStyle是firefox中的,     currentStyle是ie中的. 比如说&lt;style&gt;    #mydiv{           width:300px;    }&lt;/styke&gt; 则:varmydiv=document.getElementById(‘mydiv’);…

    2022年4月7日
    43
  • ElasticSearch分布式搜索引擎安装教程

    ElasticSearch分布式搜索引擎安装教程ElasticSearch分布式搜索引擎安装教程​专注小Du博客,每天分享干货知识。CSDN博客地址:在正式开始安装教程之前,小Du先带大家来了解什么是ElasticSearch。一.Hr:ElasticSearch是什么?​答:Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级

    2022年6月17日
    22
  • The method assertEquals(double, double) from the type Assert is deprecated

    The method assertEquals(double, double) from the type Assert is deprecated从网上下载的视频,看着视频做。居然和人家的不一样。assertEquals(doubleexpected,doubleactul)被废弃了,换成assertEquals(doubleexpected,doubleactul,doubledelta)也就是在原来的方法上加一个误差值(double类型)官方解释为:@Deprecatedstaticpublicvoi

    2022年7月12日
    16
  • SDL_Delay函数

    SDL_Delay函数用此函数来暂停指定的时间,单位为ms。voidSDL_Delay(Uint32ms)参考文章:http://blog.csdn.net/vagrxie/article/details/5735979http://www.cppblog.com/lf426/archive/2008/04/28/48325.html蔡军生C++培训

    2022年5月5日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号