美文网首页
【Linux命令】目录和文件的权限篇

【Linux命令】目录和文件的权限篇

作者: 今天Martin学习了吗 | 来源:发表于2020-04-12 09:45 被阅读0次

chown命令:修改文件的属主

chown 命令的功能是修改命令的属主与属组,即修改文件的所属对象和所属组别
语法格式:

基本格式:chown [选项] 用户 文件名或者目录名称
特殊格式:chown [选项] 用户:用户组 文件名或目录名称(这个命令在修改文件属主的同时也修改文件的属组)

常用的参数有两个 -v : 显示修改的过程;-R : 对该目录下的所有文件进行过修改(修改整个目录和其中文件属主)
案例:将company目录和其下所有文件的属主与属组都修改为admin2

[root@2017120008ls ~]# ll
总用量 16
-rw-------. 1 root root 1695 2月  16 17:40 anaconda-ks.cfg
drwxrwxrwx. 6 root root   46 4月   6 19:28 company
...
# 查看company文件的属主与属组(这里都是root)
[root@2017120008ls ~]# tail /etc/passwd
yf02:x:6006:6006::/home/yf02:/bin/bash
admin:x:6007:6007::/home/admin:/bin/bash
admin2:x:6008:6008::/home/admin2:/bin/bash
# 查看admin2账户是否存在并检查它的UID和组ID(都是6008)
[root@2017120008ls ~]# chown -vR 6008:6008 company/
# 修改company文件的属主与属组并显示修改过程||其中属主与属组既可以写名称(admin2)也可以写ID(6008)
changed ownership of "company/fw/fw_back.txt" from root:root to 6008:6008
changed ownership of "company/fw/fw_front.txt" from root:root to 6008:6008
changed ownership of "company/fw/fw01" from root:root to 6008:6008
...
[root@2017120008ls ~]# ll
总用量 16
-rw-------. 1 root   root   1695 2月  16 17:40 anaconda-ks.cfg
drwxrwxrwx. 6 admin2 admin2   46 4月   6 19:28 company
# 检查结果 company 文件夹的属主与属组已经有原来的root变成了admin2
提醒:修改的用户名和属组一定要是系统中存在的(此乃废话)

chgrp命令:修改文件的属组

chgrp命令;功能是修改对应文件的属组
语法格式:

chgrp [选项] 用户组 文件名或者目录名

常用的参数 -v:显示修改的过程;-R:对该目录下的文件进行迭代修改(修改这个目录下所有文件的属组)
案例:修改company文件夹下所有文件的属组

[root@2017120008ls ~]# ll
总用量 16
-rw-------. 1 root   root   1695 2月  16 17:40 anaconda-ks.cfg
drwxrwxrwx. 6 admin2 admin2   46 4月   6 19:28 company
# 查看对应文件的属组
[root@2017120008ls ~]# ll company/
总用量 0
drwxr-x---. 4 admin2 admin2 69 4月   6 19:27 fw
drwxr-x---. 5 admin2 admin2 42 4月   6 21:21 js
drwxr-xr-x. 2 admin2 admin2  6 3月   4 20:44 sc
drwxr-x---. 4 admin2 admin2 30 4月   6 19:28 yf
# 检查对应目录内部文件的属组(发现都需要改)
[root@2017120008ls ~]# chgrp root -vR company
changed group of "company/fw/fw_back.txt" from admin2 to root
changed group of "company/fw/fw_front.txt" from admin2 to root
changed group of "company/fw/fw01" from admin2 to root
...
# 用迭代的方法(-R)修改文件的属组,并显示修改过程
[root@2017120008ls ~]# ll company/
总用量 0
drwxr-x---. 4 admin2 root 69 4月   6 19:27 fw
drwxr-x---. 5 admin2 root 42 4月   6 21:21 js
drwxr-xr-x. 2 admin2 root  6 3月   4 20:44 sc
drwxr-x---. 4 admin2 root 30 4月   6 19:28 yf
# 查看文件的修改结果
[root@2017120008ls ~]# ll
# 查看是否修改对应目录的属组

特殊权限值SUID

设置特殊权限值 SUID 可以让普通用户以 root 用户的身份执行特定的程序或者命令
语法格式:

chmod [选项] 文件名

常用的选项参数:
u+s : 给二进制文件设定特殊权限值(只对二进制文件起作用);4xxx:(xxx是数字)与 u+s 功能相同,对特定的二进制文件设置特殊权限;u-s:取消特定二进制文件的特殊权限值
原理是给予普通用户 root 用户的特殊权限
案例:开放touch 命令(文件)的特殊权限给普通用户

[root@2017120008ls ~]# su admin
# 切换到普通用户
[admin@2017120008ls root]$ touch /tmp/mnt/file1
[admin@2017120008ls root]$ ll /tmp/mnt/
总用量 0
-rw-rw-r--. 1 admin admin 0 4月   7 16:23 file1
# 创建并查看文件:此时的文件属主和属组都是 admin
exit   # 退回到 root
[root@2017120008ls ~]# chmod 4755 /usr/bin/touch 
[root@2017120008ls ~]# ll /usr/bin/touch 
-rwsr-xr-x. 1 root root 62480 8月  20 2019 /usr/bin/touch
# 退回到 root 用户;将touch文件的权限赋予普通用户(普通用户也可以用 root 的身份创建文件)
# 当出现-rwsr-xr-x(这个s是小写)的时候,意味着权限开放成功
[root@2017120008ls ~]# su admin 
[admin@2017120008ls root]$ touch /tmp/mnt/file2
[admin@2017120008ls root]$ ll /tmp/mnt
总用量 0
-rwsrw-r--. 1 admin admin 0 4月   7 16:23 file1
-rw-rw-r--. 1 root  admin 0 4月   7 16:27 file2
# 再次使用 admin 用户创建文件 file2 观察 file2文件的属主;(通过root身份创建的文件)

特殊权限值SGID

作用:让普通用户以其他用户组角色执行程序或者命令(以另一用户组角色运行只有另一用户组才能执行的文件或者命令)

语法结构:

chmod [选项] 文件名或者目录名称

常用选项:g+s : 增加用户组 SGID权限;2xxx(xxx:数字):与g+s用法相同,增加用户组SGID权限;g-s:除去用户组SGID权限

创建一个用户 user1要求其在对应位置下的目录和文件都具有admin用户组的属性

[root@2017120008ls mnt]# su admin
[admin@2017120008ls mnt]$ mkdir power1
# 在指定目录下(一般普通用户在/tmp目录下创建目录;不能在 /root 目录下创建)
[admin@2017120008ls mnt]$ chmod 777 power1
# 开放给所有用户读写权限
[admin@2017120008ls mnt]$ exit
exit   
[root@2017120008ls mnt]# useradd -u 6002 user1
# 退出到 root 用户并添加一个用户user1
[root@2017120008ls mnt]# su user1
[user1@2017120008ls mnt]$ cd /tmp/mnt/
[user1@2017120008ls mnt]$ cd power1/
# 使用user1 用户进入指定的 目录
[user1@2017120008ls power1]$ mkdir pw02
[user1@2017120008ls power1]$ ll
总用量 0
drwxrwxr-x. 2 user1 user1 6 4月   7 17:13 pw02
# 创建一个文件夹并查看(发现这里的文件夹属组是 user1:因为没有创建属组为admin 文件夹的权限)
[user1@2017120008ls power1]$ exit
exit
[root@2017120008ls mnt]# su admin
# 退出当前用户并切换到 admin 用户
[admin@2017120008ls mnt]$ cd /tmp/mnt/
# 给目标目录设置特殊用户组权限 SGID 
[admin@2017120008ls mnt]$ chmod g+s power1/
# 查看目标目录(确认设定了特殊用户组权限)
[admin@2017120008ls mnt]$ ll
总用量 0
-rwsrw-r--. 1 admin admin  0 4月   7 16:23 file1
-rw-rw-r--. 1 root  admin  0 4月   7 16:27 file2
drwxrwsrwx. 3 admin admin 18 4月   7 17:13 power1
---------------------------分割线---------------------------------------------------------
[admin@2017120008ls mnt]$ exit
exit
[root@2017120008ls mnt]# su user1
# 切换回 user1 用户
[user1@2017120008ls mnt]$ cd power1/
[user1@2017120008ls power1]$ mkdir pw03
[user1@2017120008ls power1]$ ll
总用量 0
drwxrwxr-x. 2 user1 user1 6 4月   7 17:13 pw02
drwxrwsr-x. 2 user1 admin 6 4月   7 17:14 pw03
# 在目标目录下新建一个目录并查看
# 新建的目录 pw03 的用户组是admin (因为admin开放了特殊用户组权限,其他用户访问这个文件的时候会获得admin用户组权限)

特殊权限值SBIT

防止其他用户修改本用户目录文件
语法格式:

chmod [选项] 文件名或者目录名

参数:o+t : 增加SBIT权限,1xxx : 增加SBIT权限的另一种写法,o-t:取消SBIT权限
案例:实现user1用户和admin用户无法删除对方在/tmp目录下创建的文件

[root@2017120008ls mnt]# su user1
[user1@2017120008ls mnt]$ touch /opt/file1
[user1@2017120008ls mnt]$ exit
exit
# 登录 user1用户创建一个演示文件 并退出
[root@2017120008ls mnt]# chmod 1777 -R /opt/
[root@2017120008ls mnt]# ls -ld /opt/
# 给对应的目录和它子目录下的文件设置(其他用户不可删除;参数:-R)权限
[root@2017120008ls mnt]# ls -ld /opt/
drwxrwxrwt. 3 root root 29 4月   8 08:42 /opt/
# 检查目录情况,当权限字符串的末尾出现小写 t 的时候,我们的权限就已经设定完成了
[root@2017120008ls mnt]# su admin 
[admin@2017120008ls mnt]$ rm -rf /opt/
rm: 无法删除"/opt/rh": 不允许的操作
# 登录admin用户,检查是否可以删除对应的目录或者目录下的文件
[admin@2017120008ls mnt]$ rm -rf /opt/file1 
rm: 无法删除"/opt/file1": 不允许的操作
# 不能删除目录下的文件(注意要设置 -R 参数)

我们转换用户再次进行类似的操作

[root@2017120008ls mnt]# su admin
[admin@2017120008ls mnt]$ mkdir /opt/ottest
[admin@2017120008ls mnt]$ touch /opt/ottest/file1
[admin@2017120008ls mnt]$ exit
# 使用 admin 用户创建文件之后退出到root用户
[root@2017120008ls mnt]# chmod o+t -R /opt/ottest/
[root@2017120008ls mnt]# ls -ld /opt/ottest/
drwxrwxrwt. 2 admin admin 19 4月   8 08:56 /opt/ottest/
# 通过 root 用户的 o+t 选项给对应的文件(和文件下的目录)设置其他用户不可删除的权限
# 用户目录权限字符串的末尾出现 t 的时候,说明我们的权限已经设置成功了
[root@2017120008ls mnt]# su user1
[user1@2017120008ls mnt]$ rm -rf /opt/ottest/
rm: 无法删除"/opt/ottest/file1": 不允许的操作
# 切换到其他用户尝试对文件进行删除(结果权限不够)

特殊权限值ACL

针对某一用户或某一用户组的特定目录文件进行特定的权限设置
语法结构:

setfacl [选项] 对应的用户(组)权限 目录名称

案例:创建一个目录,使得admin用户不能修改该目录

[root@2017120008ls ~]# mkdir /tmp/mnt
[root@2017120008ls ~]# mkdir /tmp/mnt/testacl
# 使用 root 用户创建一个目录
[root@2017120008ls ~]# setfacl -m u:admin:rx /tmp/mnt/testacl
[root@2017120008ls ~]# ls -ld /tmp/mnt/testacl
drwxr-xr-x+ 2 root root 6 4月   8 19:16 /tmp/mnt/testacl
# 给这个目录添加特殊权限并查看特殊权限
[admin@2017120008ls tmp]$ getfacl /tmp/mnt/testacl/
getfacl: Removing leading '/' from absolute path names
# file: tmp/mnt/testacl/
# owner: root
# group: root
user::rwx
user:admin:r-x   # 我们可以发现 admin 用户此时对于这个目录只有读取和执行权限,没有写入权限
group::r-x
mask::r-x
other::r-x
# 也可以通过 :getfacl + 目录名称的方式查看各个用户对于这个目录的权限
[root@2017120008ls ~]# su admin
[admin@2017120008ls root]$ cd /tmp/mnt/testacl/
[admin@2017120008ls testacl]$ touch file1
# 进入 admin 用户,在当前目录下尝试创建文件
touch: 无法创建"file1": 权限不够
# 因为权限不够无法创建

对某个目录及其子目录设置权限需要在参数 -m 之前加上参数 -R ;例如给manager用户设定整个company目录的所有权限 (rwx)

[root@2017120008ls /]# setfacl -m u:manager:rwx company/
# 如果我们仅仅设置对该目录的用户权限(没有加上参数 -R)则会发现
[root@2017120008ls /]# su manager
[manager@2017120008ls /]$ cd company/yf
bash: cd: company/yf: 权限不够
# 当我们在进入该目录的时候系统仍然会提示我们权限不够
[root@2017120008ls /]# setfacl -R -m u:manager:rwx /company/
[root@2017120008ls /]# su manager
[manager@2017120008ls /]$ cd company/yf
# 放我们加入了参数 -R 也就是这个目录和他的子目录都给了manager用户 (rwx)权限,这个时候后我们使用manager用户对其子目录进行操作就不会有权限不足的问题了

相关文章

  • 【目录】Linux命令集合

    1、Linux常用20个命令(for me)2、Linux 文件权限含义解析3、Linux 文件/目录权限命令:c...

  • 记录日常工作中常用的一些Linux命令,以后用的可以速查

    Linux常用命令收集 文件和目录 操作命令 文件搜索 命令 文件权限 操作命令 查看文件内容 命令 文本处理 命...

  • 实验二【2021OS】

    实验二:Linux文件管理及目录与权限控制 创建/复制/移动/删除/查看文件和目录命令。文件压缩,解压。软连接和硬...

  • Linux 基础

    了解 Linux 的常用命令 远程登录 上传下载 系统目录 文件和目录操作 Linux 下的权限体系 压缩和打包 ...

  • Linux 文件权限

    1、在CLI命令端输入 ls -l 可查看Linux的文件、目录、设备的权限 其中第一字段是文件和目录权限的编码:...

  • linux文件访问权限

    参考 Linux 简单修改权限命令 Linux权限详解 命令之 chmod:修改权限 Linux命令:修改文件权限...

  • CentOS(Linux) 常用命令

    查杀进程 目录相关命令ls 命令是 list 的缩写,可以查看 linux 文件夹包含的文件和文件权限(包括目录、...

  • chmod

    chmod命令用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包...

  • chmod

    chmod命令用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包...

  • [LN_15] Linux权限管理:基本权限 & 特殊权

    目录结构 一、文件基本权限 1. Linux文件权限的设定 通过命令ls -l可查看当前目录下文件的详细信息,其中...

网友评论

      本文标题:【Linux命令】目录和文件的权限篇

      本文链接:https://www.haomeiwen.com/subject/kkqvmhtx.html