前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技术|chown 命令简介

技术|chown 命令简介

原创
作者头像
知忆
修改2021-07-08 14:12:06
1.4K0
修改2021-07-08 14:12:06
举报
文章被收录于专栏:linux百科小宇宙linux百科小宇宙

学习如何使用chown命令更改文件或目录的所有权。

Linux系统上的每个文件和目录均由某个人拥有,拥有者可以完全控制更改或删除他们拥有的文件。除了有一个拥有用户外,文件还有一个拥有组。

你可以使用ls-l命令查看文件的所有权:

[pablo@workstationDownloads]$ls-ltotal2454732-rw-r--r--.1pablopablo1934753792Jul2518:49Fedora-Workstation-Live-x86_64-30-1.2.iso该输出的第三和第四列是拥有用户和组,它们一起称为所有权。上面的那个ISO文件这两者都是pablo。

所有权设置由chmod命令进行设置,控制允许谁可以执行读取、写入或运行的操作。你可以使用chown命令更改所有权(一个或两者)。

所有权经常需要更改。文件和目录一直存在在系统中,但用户不断变来变去。当文件和目录在系统中移动时,或从一个系统移动到另一个系统时,所有权也可能需要更改。

我的主目录中的文件和目录的所有权是我的用户和我的主要组,以user:group的形式表示。假设Susan正在管理Delta组,该组需要编辑一个名为mynotes的文件。你可以使用chown命令将该文件的用户更改为susan,组更改为delta:

$chownsusan:deltamynotesls-l-rw-rw-r--.1susandelta0Aug112:04mynotes当给该文件设置好了Delta组时,它可以分配回给我:

$chownalanmynotes$ls-lmynotes-rw-rw-r--.1alandelta0Aug112:04mynotes给用户后添加冒号(:),可以将用户和组都分配回给我:

$chownalan:mynotes$ls-lmynotes-rw-rw-r--.1alanalan0Aug112:04mynotes通过在组前面加一个冒号,可以只更改组。现在,gamma组的成员可以编辑该文件:

$chown:gammamynotes$ls-l-rw-rw-r--.1alangamma0Aug112:04mynoteschown的一些附加参数都能用在命令行和脚本中。就像许多其他Linux命令一样,chown有一个递归参数(-R),它告诉该命令进入目录以对其中的所有文件进行操作。没有-R标志,你就只能更改文件夹的权限,而不会更改其中的文件。在此示例中,假定目的是更改目录及其所有内容的权限。这里我添加了-v(详细)参数,以便chown报告其工作情况:

$ls-l.conf.:drwxrwxr-x2alanalan4096Aug515:33confconf:-rw-rw-r--1alanalan0Aug515:33conf.xml$chown-vRsusan:deltaconfchangedownershipof'conf/conf.xml'fromalan:alantosusan:deltachangedownershipof'conf'fromalan:alantosusan:delta根据你的角色,你可能需要使用sudo来更改文件的所有权。

在更改文件的所有权以匹配特定配置时,或者在你不知道所有权时(例如运行脚本时),可以使用参考文件(--referenceRFILE)。例如,你可以复制另一个文件(RFILE,称为参考文件)的用户和组,以撤消上面所做的更改。回想一下,点(.)表示当前的工作目录。

$chown-vR--reference.conf报告更改大多数命令都有用于控制其输出的参数。最常见的是-v(--verbose)以启用详细信息,但是chown还具有-c(--changes)参数来指示chown仅在进行更改时报告。chown还会报告其他情况,例如不允许进行的操作。

参数-f(--silent、--quiet)用于禁止显示大多数错误消息。在下一节中,我将使用-f和-c,以便仅显示实际更改。

保持根目录Linux文件系统的根目录(/)应该受到高度重视。如果命令在此层级上犯了一个错误,则后果可能会使系统完全无用。尤其是在运行一个会递归修改甚至删除的命令时。chown命令具有一个可用于保护和保持根目录的参数,它是--preserve-root。如果在根目录中将此参数和递归一起使用,那么什么也不会发生,而是会出现一条消息:

$chown-cfR--preserve-rootalan/chown:itisdangeroustooperaterecursivelyon'/'chown:use--no-preserve-roottooverridethisfailsafe如果不与--recursive结合使用,则该选项无效。但是,如果该命令由root用户运行,则/本身的权限将被更改,但其下的其他文件或目录的权限则不会更改:

$chown-c--preserve-rootalan/chown:changingownershipof'/':Operationnotpermitted[root@localhost/]#chown-c--preserve-rootalan/changedownershipof'/'fromroottoalan所有权即安全文件和目录所有权是良好的信息安全性的一部分,因此,偶尔检查和维护文件所有权以防止不必要的访问非常重要。chown命令是Linux安全命令集中最常见和最重要的命令之一。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档