Linux文件/目录权限管理

系列文章目录

` 提示:仅用于个人学习,进行查漏补缺使用。
1.Linux介绍、目录结构、文件基本属性、Shell
2.Linux常用命令
3.Linux文件管理
4.Linux 命令安装 (rpm、install)
5.Linux账号管理


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

本章大概内容有:

             chmod chown 相关示例实验等

提示:以下是本篇文章正文内容,下面案例可供参考

一.chmod

1.概述

  • Linux中的chmod(Change Mode)命令用于改变文件或目录的访问权限。这个命令对于文件系统的安全和管理非常重要。
  • 在Linux系统中,每个文件或目录都有与之关联的权限设置,这些权限决定了谁可以读取、写入或执行文件。

2.权限分类

  • 文件所有者(User):拥有文件的用户。
  • 所属组(Group):文件所属的用户组。
  • 其他用户(Others):除文件所有者和所属组用户外的所有用户。

3.权限表示

  • 权限可以用数字或符号来表示。
    • 数字表示法
      • 读(r)= 4
      • 写(w)= 2
      • 执行(x)= 1
      • 权限值范围在0-7之间,其中0表示无权限,7表示所有权限(读、写、执行)。
    • 符号表示法
      • u:文件所有者
      • g:所属组
      • o:其他用户
      • a:所有用户(所有者、所属组和其他用户)

4.命令格式

  • chmod u+w file:给文件所有者添加写权限。
  • chmod g+r file:给所属组添加读权限。
  • chmod o-x file:移除其他用户的执行权限。
  • chmod 644 file:设置文件所有者为读写(6),所属组和其他用户为只读(4)。
  • chmod ugo+r file:给所有用户添加读权限。

5.递归修改权限

  • 如果要递归地修改目录及其所有子目录和文件的权限,可以使用-R选项。
  • chmod -R 755 directory:递归地给directory及其所有子目录和文件的所有者设置读写执行权限(7),所属组和其他用户设置读权限

6.设置默认权限

  • Linux系统在创建新文件或目录时,会根据umask值来设置默认权限。
  • umask是一个掩码,用来限制文件创建时的默认权限。
  • 可以通过修改/etc/profile或其他用户的.bashrc文件来改变默认的umask值。

7.注意事项

  • 只有文件所有者或超级用户(root)可以更改文件权限。
  • 权限设置应该基于最小权限原则,以确保系统安全。
  • 使用chmod命令时,应谨慎操作,避免不小心更改了不必要的权限,导致安全问题。

二、设置目录和文件的归属(chown)

1.概念

  • 在Linux中,chown(Change Owner)命令用于更改文件或目录的所有者和所属组。
  • 这个命令对于文件系统的管理和安全至关重要,因为它涉及到文件的归属和权限控制。

2.命令格式

chown [选项] [所有者][:[所属组]] 文件或目录...
  • 所有者:新的文件或目录所有者。可以是用户名或用户ID。
  • 所属组:新的文件或目录所属组。可以是组名或组ID。
  • 选项:
    • -h:递归地修改符号链接本身的所有者,而不是链接指向的文件。
    • -R:递归地更改所有子目录和文件的所有者。
    • -f:在文件不存在时,不输出错误信息。
    • -v:显示详细的操作过程。
    • --dereference:影响符号链接本身的所有者,而不是链接指向的文件。
    • --no-dereference:只改变符号链接指向的文件的所有者。
    • --from=OLDOWNER:OLDGROUP:只更改那些当前所有者匹配OLDOWNER和所属组匹配OLDGROUP的文件或目录。

3.示例

  1. chown user1:group1 file.txt 给文件file.txt的所有者改为user1,所属组改为group1
  2. chown -R user2:group2 directory 递归地为directory及其所有子目录和文件的所有者改为user2
  3. chown user3 file.txt 给file.txt的所有者改为user3,保留所属组不变
  4. chown --from=file.txt file.txt 只更改那些当前所有者和所属组与file.txt相同的文件或目录的所有者

4.实验

  • 要求:创建一个1.txt文件,创建有四个用户,用户名分别为:zhangsan、lisi、wangwu、zhaoliu,四个人同属一个组,设置1.txt文件归属于这个组
步骤 1: 创建用户组
  1. 打开终端。
    2. 使用sudo命令以超级用户身份运行groupadd命令来创建一个新的用户组,例如名为mygroup
sudo groupadd mygroup
步骤 2: 创建用户 1. 使用useradd命令创建四个用户,这里以zhangsan为例:
sudo useradd zhangsan -g mygroup

重复这个过程为lisiwangwuzhaoliu创建用户,并为每个用户添加到mygroup组中。

sudo useradd lisi -g mygroup
   sudo useradd wangwu -g mygroup
   sudo useradd zhaoliu -g mygroup
步骤 3: 创建文件 1. 使用touch命令创建一个名为1.txt的新文件:
touch 1.txt
步骤 4: 设置文件所有权 1. 使用chown命令将1.txt文件的所有者和所属组设置为mygroup组。这里的:mygroup表示保持文件的所有者不变,而将文件所属组更改为mygroup。如果您想同时改变文件的所有者,可以指定新的所有者,例如:
sudo chown :mygroup 1.txt

或者,如果您想将文件的所有者也设置为zhangsan,可以这样做:

sudo chown zhangsan:mygroup 1.txt
步骤 5: 验证文件所有权和所属组 1. 使用ls命令查看文件1.txt的详细信息,确认其所属组已经更改为mygroup
ls -l 1.txt

5.注意事项

  • 只有文件所有者或超级用户(root)可以更改文件的所有者。
  • 在更改所有者时,如果目标用户不存在,chown命令会失败。
  • 更改文件或目录的所有者可能会影响到其他用户的权限和文件归属感。
  • 使用chown命令时,应谨慎操作,确保只有合适的用户才能访问和修改文件。

6.补充:

1.设置文件权限默认和最安全权限是什么

  • 在Linux中,设置文件和目录的权限时,应该遵循最小权限原则,即文件和目录应该只具有执行其功能所必需的权限。 最安全的权限设置通常是为文件和目录提供最基本的访问权限,同时限制不必要的权限以防止未授权的访问。
  • 文件的最安全权限 对于普通文件,最安全的权限通常是644(读权限给所有用户,写权限只给所有者,执行权限对所有用户都禁用)。这种设置允许所有用户读取文件内容,但只有文件所有者可以修改文件内容。
  • 目录的最安全权限 对于目录,最安全的权限通常是755(读权限和执行权限给所有用户,写权限只给所有者)。这种设置允许所有用户列出目录内容,但只有文件所有者可以创建、修改或删除目录中的文件。
  • 在Linux中,文件的安全性可以通过合理设置文件权限来提高。最安全的文件权限通常是只允许文件的所有者读取和写入,同时禁止其他用户访问。这通常表示为600的权限设置。 具体来说,600权限设置如下:
    • 文件所有者(Owner): 读取(r)和写入(w)权限,共4+2=6。 -
    • 文件所属组(Group): 无权限(-),即0。
    • 其他用户(Others): 无权限(-),即0。

2.lsoflsof命令是list open files的缩写,它是Linux和Unix系统中的一个强大工具,用于列出系统中打开的文件。这个命令非常有用,因为lsof不仅仅显示常规文件,还可以显示网络连接、设备文件、管道、套接字以及内核中的文件等。

lsof命令的基本用法

lsof [选项] [参数]
选项:
  • -a:显示过滤后的结果。
  • -c:显示指定进程名的文件描述符。
  • -d:显示指定文件描述符的文件。
  • -i:显示关于指定类型的网络文件。
  • -n:不将数字转换为名称。
  • -p:显示指定进程ID的文件描述符。
  • -u:显示指定用户名的文件描述符。
  • -v:显示版本信息。
参数:
  • 文件名:指定要查询的文件。
  • 进程名:指定要查询的进程名。
  • 用户名:指定要查询的用户名。

示例

列出所有打开的文件
lsof
根据进程ID列出打开的文件
lsof -p <PID>
根据用户名列出打开的文件
lsof -u <username>
根据文件名列出打开的文件
lsof <filename>
根据网络端口列出打开的文件
lsof -i :<port>
列出网络文件
lsof -i
列出所有正在监听的套接字
lsof -i -sTCP:LISTEN

lsof输出详解

lsof命令的输出通常包含以下列:

  • COMMAND:进程名称。
  • PID:进程ID。
  • USER:进程所有者。
  • FD:文件描述符。
  • TYPE:文件类型。
  • DEVICE:文件所在的设备。
  • SIZE:文件的大小。
  • NODE:文件的inode编号。
  • NAME:打开的文件名。

使用lsof进行故障排除

  • 检查进程是否意外地打开了某个文件。
  • 查找占用了过多文件描述符的进程。
  • 解决文件系统空间不足问题,因为某些文件可能还在使用中。
  • 解决文件无法删除问题,因为可能某个进程正在访问该文件。

lsof是一个功能丰富的工具,可以帮助系统管理员和用户深入了解系统的文件使用情况。在处理文件和进程时,lsof是一个非常有用的诊断工具。

  • 28
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值