操作系统中的不同用户拥有所有权和权限,以确保文件的安全并限制谁可以修改文件的内容。在 Linux 中,chown 命令用于更改系统中另一个用户对文件或目录的所有权。

什么是 chown 命令?

chown(更改所有者的缩写)命令用于更改基于 Linux 的操作系统中文件和目录组的所有权。 它有助于使文件更安全,并对未经授权的用户施加限制。

在本文中,我们将学习在 Linux 中使用 chown 命令,但让我们首先讨论它的语法:

chown [options] user [:group] file…

chown 命令接受一个选项、一个用户和一个组名以及文件/目录的名称。 chown 会将文件/目录的所有权/组更改为指定的用户和组。

下面给出了与 chown 命令一起使用的一些最常用的选项:


如何在 Linux 中检查文件的所有权

首先,在使用 chown 命令进行所有权更改之前,您需要知道原始文件所有者或组。

要检查当前位置的 Linux 文件和目录的组或所有权,请运行以下命令:

ls -l

使用 chown 命令更改文件所有者

我们只需要将文件名和新所有者的用户名一起提供给 chown 命令,以更改 Linux 中文件的所有权:

chown

chown 命令的形成中,可以看到前半部分是用户名,后半部分是文件或文件夹路径。

显示 UID、GID 和组

Linux 系统中,每个用户的 ID 细分为 2 种,分别是用户 ID(User ID,简称 UID)和组 ID(Group ID,简称 GID)。

我们可以在终端 shell 上执行id、groups 命令来显示用户 ID 和组 ID。最后通过使用这些组 ID 或组名称或所有者名称通过 Linux 中的 chown 命令将当前所有权更改为您想要的所有者。

id [OPTION]… [USERNAME]

groups [OPTION]… [USERNAME]…


更改文件的所有者(使用 UID)

如果你已经知道文件的 UID 或文件的组 ID,还可以通过 UID 在 Linux 系统上应用 chown 命令来更改所有权。

更改文件组

要更改组或文件的所有权,可以在 Linux 上使用下面提到的 chown 命令来设置所有者。

更改用户名和组名

chown 命令还允许我们更改 Linux 文件系统上的用户和组名。

chown <用户名/UID>:<组名/GID> <文件名>

在进行更改之前检查所有者和组

chown 命令 --from 选项允许您验证当前所有者和组,然后应用更改。检查用户和组的 chown 语法如下所示:

chown --from=CurrentUser:CurrentGroup NewUser:NewGroup FILE

下面的示例显示我们首先验证了文件 test.txt 的所有权和组:


仅检查组

与上面类似,可以使用选项 --from 仅验证文件的组。

chown --from=:CurrentGroup :NewGroup FILE

这是一个示例,我们在更改当前组之前对其进行了验证:

如何递归更改文件所有权

chown 命令允许更改指定目录中所有文件和子目录的所有权。 将 -R 选项添加到命令中以执行此操作:

chown -R NewUser:NewGroup DirNameOrPath

chown 命令和符号链接

要将更改推送到链接,请运行带有 -h 标志的 chown 命令:

chown -h NewUser:NewGroup SymbolicLink

显示chown命令进程详细信息

默认情况下,终端不显示chown进程信息。 要查看幕后发生的事情,请使用两个命令行标志之一:

即使所有权保持不变,选项 -v 也会生成流程详细信息。
选项 –c 仅在目标文件的所有者或组更改时显示输出信息。

例如,如果我们将当前所有者指定为文件的新所有者:

抑制 chown 命令错误

为避免在运行 chown 命令时看到潜在的错误消息,请使用 -f 选项:

chown 命令C/C++代码实现

int main(int argc, char **argv)
{Hflag = Lflag = Rflag = fflag = hflag = vflag = xflag = 0;while ((ch = getopt(argc, argv, "HLPRfhvx")) != -1)switch (ch) {case 'H':Hflag = 1;Lflag = 0;break;case 'L':Lflag = 1;Hflag = 0;break;case 'P':Hflag = Lflag = 0;break;case 'R':Rflag = 1;break;case 'f':fflag = 1;break;case 'h':hflag = 1;break;case 'v':vflag++;break;case 'x':xflag = 1;break;default:usage();}argv += optind;argc -= optind;if (argc < 2)usage();if (Rflag) {if (hflag && (Hflag || Lflag))errx(1, "the -R%c and -h options may not be ""specified together", Hflag ? 'H' : 'L');if (Lflag) {fts_options = FTS_LOGICAL;} else {fts_options = FTS_PHYSICAL;if (Hflag) {fts_options |= FTS_COMFOLLOW;}}} else if (hflag) {fts_options = FTS_PHYSICAL;} else {fts_options = FTS_LOGICAL;}if (xflag)fts_options |= FTS_XDEV;uid = (uid_t)-1;gid = (gid_t)-1;if (ischown) {if ((cp = strchr(*argv, ':')) != NULL) {*cp++ = '\0';a_gid(cp);}a_uid(*argv);} elsea_gid(*argv);if ((ftsp = fts_open(++argv, fts_options, NULL)) == NULL)err(1, NULL);for (rval = 0; (p = fts_read(ftsp)) != NULL;) {...}...
}
...

运行结果:

总结

在每个 Linux 操作系统中,每个文件都与一个组的所有者相关联。 如果不是创建或修改文件的特定所有者,则不能从其他用户帐户更改或修改该文件。 但是在 chown 命令的帮助下,可以轻松访问要修改的目录或文件。

欢迎关注微信公众号【程序猿编码】,需要chown命令完整源码的添加本人微信号(c17865354792)

Linux 中的 chown 命令详解及C/C++代码实现相关推荐

  1. Linux 中的 nl 命令详解及C/C++代码实现(文件行数)

    在Linux 操作系统中,如果想编辑文本文件时,希望显示在其前面附加行号的行,这时 Linux 中 nl 命令就派上用场,nl 命令对文件中的行进行编号. Linux nl命令 nl 命令是一个 Un ...

  2. Linux 中的 renice 命令详解及C/C++代码实现

    Linux 中的 nice 命令有助于执行具有修改的调度优先级的程序/进程. 它启动具有用户定义的调度优先级的进程. 如果我们给一个进程更高的优先级,那么内核会为这个进程分配更多的 CPU 时间. 而 ...

  3. Linux 中的 head 命令详解及C/C++代码实现

    head 命令允许您在标准输出中查看文件的初始行,而无需打开文件. 在本文中,学习了如何使用此实用程序及其选项. Linux head命令 head 命令用于打印文件或标准输出的前几行(默认为 10 ...

  4. linux cut命令学习,Linux中的cut 命令详解

    今天小编要跟大家分享的文章是关于Linux中的cut 命令详解.cut 命令在Linux和Unix中的作用是从文件中的每一行中截取出一些部分,并输出到标准输出中.我们可以使用 cut 命令从一行字符串 ...

  5. linux中的tar命令详解,【Linux】tar命令详解

    tar命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用 ...

  6. linux的chmod,chown命令 详解

    指令名称 : chmod  使用权限 : 所有使用者  使用方式 : chmod [-cfvR] [--help] [--version] mode file...  说明 : Linux/Unix ...

  7. linux中ln -s 命令详解

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在 ...

  8. linux中free -m命令详解,Linux中free命令起什么作用呢?

    摘要: 下文讲述Linux中free的功能说明,如下所示: free命令功能: 用于返回linux系统的物理内存和物理空闲内存 还有交换内存 及被内核使用的缓冲和缓存 free命令的原理: 通过查询/ ...

  9. linux中的du 命令详解

    Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能 ...

最新文章

  1. Windows下安装Python扩展模块提示“Unable to find vcvarsall.bat”的问题(转载)
  2. 富士通服务器 css灯亮,富士通空调指示灯故障含义-富士通空调指示灯代码
  3. Linux学习之服务器搭建——基础网络配置
  4. MySql中4种批量更新的方法
  5. 振作起来– Spring Framework 4.0即将来临!
  6. Kafka中的配置项参数unclean.leader.election.enable
  7. Windows Server 2012 R2 安装补丁KB2999226提示此更新不适合用于计算机
  8. 站内SEO第三篇:降低网站跳出率的7种有效方法
  9. Holding Two
  10. 爬虫就是python吗_python就是爬虫吗
  11. vue打包时报错 Error: No PostCSS Config found in 的解决方法
  12. Argo CD系列视频图文版之安装 argocd 并运行示例
  13. 机器人正运动学DH参数表示法
  14. 【GIS数据处理】 利用空间关系建立线CAD数据和属性表关联
  15. 根据在同一时间使用计算机用户的多少,2016年职称计算机WindowsXP考前冲刺试题1...
  16. UBUNTU 12.04 3D 特效设置(一)
  17. 小六六读Effective记录
  18. 【网络文摘】一个大神程序员的使命感究竟应该是什么
  19. 复试21天 day two
  20. 日志2021年11月

热门文章

  1. web前端开发技术实验与实践(第三版)储久良编著 项目9 设计饭店菜单价目表
  2. Java集合知识点,看这篇就够了,还有月薪3万简历模板+BAT面试题,帮你进大厂!
  3. tf.split()函数(非常清晰简单的解释)
  4. ORACLE用户、授权与同义词的应用示例
  5. 怎么查看本地服务器信息,查看本地服务器url地址
  6. before的用法java_Java LocalTime isBefore()用法及代码示例
  7. opencv滤镜-去色滤镜
  8. playbook变量
  9. System.Runtime.InteropServices.COMException (0x800A03EC):无法访问文件。
  10. ASPxGridView 用法整理