【CentOS 7.5】文件权限管理

Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。

文件所有者一般是创建者,但是也可以改变文件的所有者。
文件用户组是文件的属组。组是一群用户组成的集合。
其他人是不包括前两种和root用户的人。

查看文件和目录的属性:ls -l

drwxr-xr-x. 2 zyan root 4096 Apr 27 17:36 uniref90
  • d:第一位代表的是文件的类型,类型可以是下面几个中的一个:
    • d代表的是目录(directroy)
    • -代表的是文件(regular file)
    • s代表的是套字文件(socket)
    • p代表的管道文件(pipe)或命名管道文件(named pipe)
    • l代表的是符号链接文件(symbolic link)
    • b代表的是该文件是面向块的设备文件(block-oriented device file)
    • c代表的是该文件是面向字符的设备文件(charcter-oriented device file)
  • rwxr-xr-x:接下来的9个字符表示,三种用户的读、写、运行的权限。如第一组rwxr-xr-x,表示文件所有者(u)有r (读)、w(写)、x(运行)的权限;属组(g)有读权限 、没有写权限,有运行权限;其他人(o)有读权限 、没有写权限,有运行权限。

Alt

  • 2:第二个数字表示文件的连接 和书。
  • zyan:第三个表示文件的属主
  • root:第四个表示文件的属组
  • 最后分别是文件大小、最后修改日期和时间、文件的名称。

chown

参数

chown (change owner) 用于改变文件的所有权,语法如下:

chown [-cfhvR] [--help] [--version] user[:group] file...
  • user : 新的文件拥有者的使用者 ID
  • group : 新的文件拥有者的使用者组(group)
  • -c : 显示更改的部分的信息
  • -f : 忽略错误信息
  • -h :修复符号链接
  • -v : 显示详细的处理信息
  • -R : 处理指定目录以及其子目录下的所有文件
  • –help : 显示辅助说明
  • –version : 显示版本

示例

# 把文件days拥有着更改为pan,属组更改为root。
sudo chown pan:root days

# 如果只要更改文件的拥有者,可以省略:GROUP参数。该命令把拥有者更改为guest。
sudo chown guest days

# 同样也可以省略 OWNER,该命令将文件days的属组更改为 pan。
sudo chown :pan days

# 如果想要把文件夹下的所有文件都更改用户或者组别,需要加上-R参数:
sudo chown -R pan HOME/

# 将当前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:
chown -R runoob:runoobgroup *

chgrp

参数

chgrp (change group) 用于变更文件或目录的所属群组。

chgrp [-cfhRv][--help][--version][所属群组][文件或目录...]
chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]
  • -f 或 --quiet 或 --silent:不显示错误信息。
  • -h 或 --no-dereference:只对符号连接的文件作修改,而不改动其他任何相关文件。
  • -R 或 --recursive:递归处理,将指定目录下的所有文件及子目录一并处理。
  • -v 或 --verbose:显示指令执行过程。
  • -c 或 --changes:效果类似"-v"参数,但仅回报更改的部分。
  • –help:帮助。
  • –reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
  • –version:显示版本信息。

示例

# 改变文件的群组属性
# 将 log2012.log 文件由 root 群组改为 bin 群组。
chgrp -v bin log2012.log

[root@localhost test]# ll
---xrw-r-- 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]# chgrp -v bin log2012.log
[root@localhost test]# ll
---xrw-r-- 1 root bin  302108 11-13 06:03 log2012.log

# 根据指定文件改变文件的群组属性
# 改变文件 log2013.log 的群组属性,使 log2013.log 的群组属性和参考文件 log2012.log 的群组属性相同。
chgrp --reference=log2012.log log2013.log

[root@localhost test]# ll
---xrw-r-- 1 root bin  302108 11-13 06:03 log2012.log
-rw-r--r-- 1 root root     61 11-13 06:03 log2013.log
[root@localhost test]# chgrp --reference=log2012.log log2013.log 
[root@localhost test]# ll
---xrw-r-- 1 root bin  302108 11-13 06:03 log2012.log
-rw-r--r-- 1 root bin      61 11-13 06:03 log2013.log

chmod

参数

chmod (change mode) 命令是控制用户对文件的权限的命令。这个命令使用“用户组+/- 权限”的表达方式来增加或者删除权限。

chmod [-cfvR] [--help] [--version] mode file...
  • mode : 权限设定字串,格式如下 :

    [ugoa...][[+-=][rwxX]...][,...]
    
    • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
    • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限,即将用户类型的所有权限重新设置。
    • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行。
  • -c : 若该文件权限确实已经更改,才显示其更改动作

  • -f : 若该文件权限无法被更改也不要显示错误讯息

  • -v : 显示权限变更的详细资料

  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)

  • –help : 显示辅助说明

  • –version : 显示版本

示例

# 以下两行代码效果相同,将文件 file1.txt 设为所有人皆可读取
chmod ugo+r file1.txt
chmod a+r file1.txt

# 将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,
# 但其他以外的人则不可写入
chmod ug+w,o-w file1.txt file2.txt

# 为 ex1.py 文件拥有者增加可执行权限:
chmod u+x ex1.py

# 将目前目录下的所有文件与子目录皆设为任何人可读取
chmod -R a+r *

八进制

chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。

Alt

#权限rwx二进制
7读 + 写 + 执行rwx111
6读 + 写rw-110
5读 + 执行r-x101
4只读r–100
3写 + 执行-wx011
2只写-w-010
1只执行–x001
0000

例如765 :

  • 所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx,也就是 4+2+1,7。
  • 用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如 rw-,也就是 4+2+0,6。
  • 其它用户的权限数字表达:其它用户权限位的数字相加的总和。如 r-x,也就是 4+0+1,5。

chmod可以用数字来表示权限,语法为 chmod abc file

# 把文件的权限修改为 rwxr–r–
chmod 744 Desktop

# 以下两行代码效果相同
chmod 777 file
chmod a=rwx file

# 以下两行代码效果相同
chmod 771 file
chmod ug=rwx,o=x file

附加权限

linux除了设置正常的读写操作权限外,还有关于一类设置也是涉及到权限,叫做Linxu附加权限。包括 SET位权限(suid,sgid)和粘滞位权限(sticky)。

suid (set User ID, set UID) 的意思是进程执行一个文件时通常保持进程拥有者的UID。然而,如果设置了可执行文件的suid位,进程就获得了该文件拥有者的UID。
sgid (set Group ID, set GID) 意思也是一样,只是把上面的进程拥有者改成了文件拥有组(group)

-rwsr-xr-x   #表示设置了suid,且拥有者有可执行权限
-rwSr--r--   #表示suid被设置,但拥有者没有可执行权限
-rwxr-sr-x   #表示sgid被设置,且群组用户有可执行权限
-rw-r-Sr--   #表示sgid被设置,但群组用户没有可执行权限

SET位权限可以通过chmod命令设置,给文件加suid和sgid的命令如下(类似于上面chmod赋予一般权限的命令):

chmod u+s filename   #设置suid位
chmod u-s filename   #去掉suid设置
chmod g+s filename   #设置sgid位
chmod g-s filename   #去掉sgid设置

粘滞位权限即sticky。一般用于为目录设置特殊的附加权限,当目录被设置了粘滞位权限后,即便用户对该目录有写的权限,也不能删除该目录中其他用户的文件数据。设置了粘滞位权限的目录,是用 ls查看其属性时,其他用户权限处的x将变为t。 使用 chmod命令设置目录权限时,+t、-t权限模式可分别用于添加、移除粘滞位权限。

-rwsr-xr-t   #表示设置了粘滞位且其他用户组有可执行权限
-rwSr--r-T   #表示设置了粘滞位但其他用户组没有可执行权限

在八进制的基础上,可以进一步使用4位数字赋值正常权限和附加权限:chmod sabc file。因为SUID对应八进制数字是4,SGID对于八进制数字是2,则“4755”表示设置SUID权限,“6755”表示同时设置SUID、SGID权限。

-rw-r-Sr-- = 0 1 0 1 1 0 1 0 0 1 0 0 = 2644 
-rwsr-xr-x = 1 0 0 1 1 1 1 0 1 1 0 1 = 4755
-rwsr-sr-x = 1 1 0 1 1 1 1 0 1 1 0 1 = 6755
-rwsr-sr-t = 1 1 1 1 1 1 1 0 1 1 0 1 = 7755

如netlogin,假如netlogin执行时需要访问一些只有root用户才有权访问的文件,那么 chmod 755 netlogin会使得其他用户执行netlogin时因为权限不够还是不能上网。这种情况下,就可以用 chmod 4755 netlogin 设置其他用户在执行netlogin也有root用户的权限,从而顺利上网。

常用命令

命令说明
chmod a+r file给file的所有用户增加读权限
chmod a-x file删除file的所有用户的执行权限
chmod a+rw file给file的所有用户增加读写权限
chmod +rwx file给file的所有用户增加读写执行权限
chmod u=rw,go= file对file的所有者设置读写权限,清空该用户组和其他用户对file的所有权限(空格代表无权限
chmod -R u+r,go-r docs对目录docs和其子目录层次结构中的所有文件给用户增加读权限,而对用户组和其他用户删除读权限
chmod 664 file对file的所有者和用户组设置读写权限, 为其其他用户设置读权限
chmod 0755 file相当于u=rwx (4+2+1),go=rx (4+1 & 4+1)。0 没有特殊模式
chmod 4755 file4设置了设置用户ID位,剩下的相当于 u=rwx (4+2+1),go=rx (4+1 & 4+1)
find path/ -type d -exec chmod a-x {}\;删除可执行权限对path/以及其所有的目录(不包括文件)的所有用户,使用’-type f’匹配文件
find path/ -type d -exec chmod a+x {}\;允许所有用户浏览或通过目录path/

参考

1、Linux文件和目录权限管理:chown和chmod
2、chgrp命令用法举例
3、Linux chmod命令修改文件与文件夹权限方法
4、Linux权限详解(chmod、600、644、700、711、755、777、4755、6755、7755)
5、RUNOOB.COM: chown, chgrp, chmod.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CentOS 7.5 系统上设置自定义用户的全局用户权限,你可以执行以下步骤: 1. 创建一个包含自定义权限的 ClusterRole 对象: 创建一个 YAML 文件(例如 `custom-role.yaml`),并在其中定义 ClusterRole 对象,示例如下: ```yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: custom-role rules: - apiGroups: ["*"] resources: ["*"] verbs: ["*"] ``` 上述示例中的 ClusterRole 对象名为 `custom-role`,它具有对所有 API 组和资源的所有操作权限。 接下来,使用以下命令创建 ClusterRole 对象: ``` kubectl apply -f custom-role.yaml ``` 2. 创建一个绑定该 ClusterRole 的 ClusterRoleBinding 对象: 创建一个 YAML 文件(例如 `custom-role-binding.yaml`),并在其中定义 ClusterRoleBinding 对象,示例如下: ```yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: custom-role-binding subjects: - kind: User name: <username> roleRef: kind: ClusterRole name: custom-role apiGroup: rbac.authorization.k8s.io ``` 将 `<username>` 替换为你想要授予全局权限的用户名。 然后,使用以下命令创建 ClusterRoleBinding 对象: ``` kubectl apply -f custom-role-binding.yaml ``` 这将绑定 ClusterRole 和用户,授予该用户自定义的全局权限。 现在,指定的用户应该具有自定义的全局权限。请确保你具有足够的权限来创建 ClusterRole 和 ClusterRoleBinding 对象,并且你是具有适当权限的集群管理员。 请注意,给予全局权限是一个敏感的操作,请仔细评估风险并仅授予必要的权限。 希望以上信息对你有所帮助!如果有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值