找回密码
 立即注册
Qt开源社区 门户 查看内容

chown 命令简介 | Linux 中国

2019-10-3 13:50| 发布者: admin| 查看: 1292| 评论: 0

摘要: 学习如何使用 chown 命令更改文件或目录的所有权。-- Alan Formy-duvalLinux 系统上的每个文件和目录均由某个人拥有,拥有者可以完全控制更改或删除他们拥有的文件。除了有一个拥有用户外,文件还有一个拥有组。你可 ...

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

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

你可以使用 ls -l 命令查看文件的所有权:
  1. [pablo@workstation Downloads]$ ls-l
  2. total 2454732
  3. -rw-r--r--.1 pablo pablo 1934753792Jul2518:49Fedora-Workstation-Live-x86_64-30-1.2.iso

该输出的第三和第四列是拥有用户和组,它们一起称为所有权。上面的那个 ISO 文件这两者都是 pablo

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

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

我的主目录中的文件和目录的所有权是我的用户和我的主要组,以 user:group 的形式表示。假设 Susan 正在管理 Delta 组,该组需要编辑一个名为 mynotes 的文件。你可以使用 chown 命令将该文件的用户更改为 susan,组更改为 delta
  1. $ chown susan:delta mynotes
  2. ls-l
  3. -rw-rw-r--.1 susan delta 0Aug  112:04 mynotes

当给该文件设置好了 Delta 组时,它可以分配回给我:
  1. $ chown alan mynotes
  2. $ ls-l mynotes
  3. -rw-rw-r--.1 alan delta 0Aug  112:04 mynotes

给用户后添加冒号(:),可以将用户和组都分配回给我:
  1. $ chown alan: mynotes
  2. $ ls-l mynotes
  3. -rw-rw-r--.1 alan alan 0Aug  112:04 mynotes

通过在组前面加一个冒号,可以只更改组。现在,gamma 组的成员可以编辑该文件:
  1. $ chown:gamma mynotes
  2. $ ls-l
  3. -rw-rw-r--.1 alan gamma 0Aug  112:04 mynotes

chown 的一些附加参数都能用在命令行和脚本中。就像许多其他 Linux 命令一样,chown 有一个递归参数(-R),它告诉该命令进入目录以对其中的所有文件进行操作。没有 -R 标志,你就只能更改文件夹的权限,而不会更改其中的文件。在此示例中,假定目的是更改目录及其所有内容的权限。这里我添加了 -v(详细)参数,以便 chown 报告其工作情况:
  1. $ ls-l . conf
  2. .:
  3. drwxrwxr-x 2 alan alan 4096Aug  515:33 conf
  4. conf:
  5. -rw-rw-r--1 alan alan 0Aug  515:33 conf.xml
  6. $ chown-vR susan:delta conf
  7. changed ownership of 'conf/conf.xml'from alan:alan to  susan:delta
  8. changed ownership of 'conf'from alan:alan to  susan:delta

根据你的角色,你可能需要使用 sudo 来更改文件的所有权。

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

报告更改

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

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

保持根目录

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

如果不与 --recursive 结合使用,则该选项无效。但是,如果该命令由 root 用户运行,则 / 本身的权限将被更改,但其下的其他文件或目录的权限则不会更改:
  1. $ chown-c --preserve-root alan /
  2. chown: changing ownership of '/':Operationnot permitted
  3. [root@localhost /]#chown-c --preserve-root alan /
  4. changed ownership of '/'from root to alan

所有权即安全

文件和目录所有权是良好的信息安全性的一部分,因此,偶尔检查和维护文件所有权以防止不必要的访问非常重要。chown 命令是 Linux 安全命令集中最常见和最重要的命令之一。


via: https://opensource.com/article/19/8/linux-chown-command

作者:Alan Formy-Duval 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出



鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了