版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/K346K346/article/details/102782740
chown 命令用来改变某个文件或目录的所有者(owner)和所属用户组(group)。
该命令通过改变文件的所有者或者所属用户组可以向某个用户授权。所有者可以是用户名或用户 ID,用户组可以是组名或组 ID。文件名是由空格分隔的文件列表,在文件名中可以包含通配符。一般来说,这个指令仅限系统管理者(root)使用,普通用户没有权限改变文件所有者及所属组。
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
在指定所有者与所属用户组时有如下几种情况: (1)如果只指定了所有者,则只改变每个给定文件的所有者,不会更改文件的用户组; (2)如果所有者后面跟一个冒号和用户组,则文件所属的用户组也将被更改; (3)如果用户名后面有冒号但没有组名,则该用户将成为文件的所有者,并且文件属组将更改为该用户的登录组; (4)如果给定冒号和组名,但省略了所有者,则只更改所属组。这种情况,chown 的功能等同于 chgrp; (5)如果只给定一个冒号,或者整个操作数为空,则所有者和用户组都不会更改。
注意,OWNER 与 GROUP 之间的冒号可以使用点号替代。
-c
--changes
输出效果类似 verbose 模式,但只在有更改生效时才显示
--dereference
修改符号链接指向的实际文件的所有者和所属用户组,而不是符号链接文件本身。为默认选项
-f
--silent
--quiet
忽略大部分错误信息
-v
--verbose
显示指令详细的执行过程
-h
--no-dereference
修改符号链接文件本身的所有者和所属用户组。作用与 --dereference 相反
--from=CURRENT_OWNER:CURRENT_GROUP
只有当文件的所有者和所属组符合选项所指定的才更改。CURRENT_OWNER 和 CURRENT_GROUP 可以省略,这时省略的属性就不需要进行匹配
--no-preserve-root
不特殊对待根目录 /。为默认选项
--preserve-root
不允许在根目录 /上递归操作
--reference=RFILE
使用指定的文件 RFILE 的所有者和所属用户组,而非指定值
-R
--recursive
递归处理所有的文件及子目录
以下三个选项 -H、-L 和 -P 与 -R 配合使用,用于递归操作时确定遍历的方式:
-H
如果命令行参数是一个符号链接指向一个目录,则遍历它
-L
遍历每一个符号链接指向的目录
-P
不遍历任何符号链接。为默认选项
--help
显示帮助信息
--version
显示版本信息
(1)只修改文件所有者为 root。
chown root FILE
注意,指定的所有者必须是系统合法用户,可以查看文件 /etc/passwd 确定当前系统有哪些用户。
(2)修改文件所有者和用户组均为 root。
chown root:root FILE
(3)只修改文件所属组为 root。
chown :root FILE
(4)递归修改所有的文件及子目录所有者和所属组为 root。
chown -R root:root /DIR
(5)显示修改的动作,使用 -v 冗余模式输出。
chown -vR root:root /DIR
/etc/passwd 文件内容如下:
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
...
在 passwd 文件中,第一行内容是超级用户 root 行,可以看到它的 uid 和 gid 都为 0。为了方便理解,下面给出各字段的描述:
字段1:用户名,这是用户登录时使用的账户名称,在系统中是唯一的,不能重名
字段2:密码占位符 x;早期的 Unix 系统中,该字段是存放账户密码的,由于安全原因,后来把这个密码字段内容移到 /etc/shadow 中了
字段3:UID;范围是 0-65535
字段4:GID;范围是 0-65535;当添加用户时,默认情况下会同时建立一个与用户同名且 UID 和 GID 相同的组
字段5:用户说明;这个字段是对这个账户的说明
字段6:宿主目录;用户登录后首先进入的目录,一般为 "/home/用户名" 这样的目录
字段7:登录 Shell 当前用户登录后所使用的 Shell,在 Centos/RHEL 系统中,默认的 Shell 是 Bash;如果不希望用户登登系统,可以通过 usermod 或者手动修改 passwd 设置,将该字段设置为 /sbin/nologin 即可。出于安全考虑,大多数内置系统账户都是 /sbin/nologin,表示禁止登录系统
[1] ps manual [2]【Linux】一步一步学Linux——chown命令(112) [3] Linux系统的用户和用户组管理