一起来学Linux命令(十)

前言

目前正在出一个Linux命令系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~

作为服务端开发,linux命令还是要掌握一下的,可以做做基础性的运维。好了, 废话不多说直接开整吧~

本节是该系列的最后一节,这节给大家介绍一些权限相关的命令,这些命令谨慎操作~

chmod

Linux系统中使用chmod命令时,可以修改文件或目录的权限。权限控制谁可以读取、写入和执行特定文件或目录。chmod命令允许更改这些权限,以便适应不同的安全需求

语法:

shell 复制代码
chmod [options] mode filename
  • options: 可选参数,用于指定一些特定选项,例如递归修改权限、静默模式等。
  • mode: 权限模式,可以是文字模式或数字模式。文字模式更容易理解,数字模式更为紧凑。
  • filename: 要修改权限的文件或目录名称。

权限模式

mode部分,可以使用以下字符来表示不同的权限:

  • u: 所有者(user)权限- g: 组权限- o: 其他用户权限- a: 所有用户权限(等同于ugo

每个权限部分可以使用以下字符来表示权限:

  • r: 读取权限- w: 写入权限- x: 执行权限

使用示例

  1. 使用文字模式设置权限

    • 设置所有者读、写、执行权限:chmod u=rwx filename
    • 设置组用户只读权限:chmod g=r filename
    • 设置其他用户执行权限:chmod o=x filename
    • 设置所有用户读权限:chmod a=r filename
  2. 使用数字模式设置权限

    • 设置所有者可读写执行,组和其他用户可读:chmod 744 filename
    • 所有者可读写执行,组可读执行,其他用户无权限:chmod 750 filename
  3. 递归修改目录及其内容的权限

    如果要递归地修改目录及其内容的权限,可以使用-R选项。

    • 递归地给目录及其内容赋予所有者读写执行权限:chmod -R u=rwx directory
  4. 静默模式

    使用-v选项可显示修改的文件。

    • 设置所有者可读写执行权限,并显示修改的文件:chmod -v u=rwx filename

chown

chown(change owner)命令用于更改文件或目录的所有者。在Linux系统中,每个文件和目录都有一个所有者,指定了谁有权访问和管理它。通过使用chown命令,可以将文件或目录的所有权转移给其他用户或组。

语法:

shell 复制代码
chown [options] new_owner: new_group filename
  • options: 可选参数,用于指定一些特定选项,如递归更改、保留设置等。
  • new_owner: 新的所有者的用户名或用户ID。
  • new_group: 新的组的组名或组ID。
  • filename: 要更改所有者和/或组的文件或目录名称。

使用示例

  1. 更改所有者
  • 将文件的所有者更改为新用户:chown newuser filename - 将目录的所有者更改为新用户:chown newuser directory
  1. 更改组
  • 将文件的组更改为新组:chown :newgroup filename - 将目录的组更改为新组:chown :newgroup directory
  1. 同时更改所有者和组
  • 将文件的所有者和组同时更改:chown newuser:newgroup filename - 将目录的所有者和组同时更改:chown newuser:newgroup directory
  1. 递归更改目录及其内容的所有者和组

如果要递归地更改目录及其内容的所有者和组,可以使用-R选项。

  • 递归地将目录及其内容的所有者和组都更改为新用户和新组:chown -R newuser:newgroup directory
  1. 保留文件的组,只更改所有者

使用-c选项来仅在所有者或组发生变化时显示修改的文件。

  • 仅更改文件的所有者,保留组:chown -c newuser filename

这些示例展示了如何使用chown命令来更改文件和目录的所有者和组。在实际使用时,请确保具有足够的权限来更改所有者和组。更改所有者和组可能会影响文件的访问和权限设置,因此务必小心操作。

chgrp

语法:

shell 复制代码
chgrp [options] new_group filename
  • options: 可选参数,用于指定一些特定选项,如递归更改等。
  • new_group: 新的组的组名或组ID。
  • filename: 要更改所属组的文件或目录名称。

使用示例

  1. 更改组
  • 将文件的组更改为新组:chgrp newgroup filename - 将目录的组更改为新组:chgrp newgroup directory
  1. 递归更改目录及其内容的组

如果要递归地更改目录及其内容的组,可以使用-R选项。

  • 递归地将目录及其内容的组都更改为新组:chgrp -R newgroup directory
  1. 保留所有者,只更改组

使用-c选项来仅在组发生变化时显示修改的文件。

  • 仅更改文件的组,保留所有者:chgrp -c newgroup filename

umask

umask 是一个重要的系统命令,用于设置新文件和目录默认权限的掩码。在Linux和类Unix操作系统中,每个文件和目录都有一组权限位,用于控制谁可以访问文件或目录以及在何种方式下可以访问。umask 通过掩码的方式影响这些权限,用于限制默认的权限。

语法:

shell 复制代码
umask [options] [mode]
  • options: 可选参数,用于指定一些特定选项,例如显示当前 umask 值。
  • mode: 可选参数,用于设置新的 umask 值。mode 通常由三位数字表示,如 022。这三位数字分别表示文件权限的 rwx 位,其中每一位的值分别为 r(读取权限),w(写入权限),x(执行权限)。

作用

umask 的作用是屏蔽掉新创建文件和目录的默认权限位。更具体地说,umask 的值会从新文件或目录的默认权限中减去,以确定它们的最终权限。这是通过按位取反 umask 值然后与默认权限进行按位与操作来实现的。例如,如果 umask 设置为 022,则新文件的默认权限会被修改为 rw-r--r--(所有者可读写,其他用户只可读)。

示例

  1. 查看当前 umask

要查看当前系统的 umask 值,只需运行 umask 命令,它将返回当前的 umask 值:

bash 复制代码
umask
  1. 设置新的 umask

要设置新的 umask 值,只需将所需的权限位值传递给 umask 命令。例如,要将 umask 设置为 027

bash 复制代码
umask 027
  1. 永久修改 umask

若要永久修改 umask 值,可以在用户的 shell 配置文件中添加 umask 命令。例如,将 umask 设置为 027 并永久保存:

~/.bashrc~/.bash_profile 文件中添加以下行:

bash 复制代码
umask 027   

这将确保在每次用户登录时都会应用指定的 umask 值。

注意事项

  • umask 的值通常以八进制表示,因此请确保使用正确的格式来设置它。
  • umask 设置的值影响新文件和目录的默认权限,但不会影响已经存在的文件和目录的权限。
  • 默认的 umask 值通常设置为 022002,这样新文件会具有相对安全的默认权限,但可以根据需求进行调整。
  • 注意,在设置 umask 值时,要确保不要过于放宽文件和目录的默认权限,以保护系统的安全性。

su

su(switch user)是一个在Unix和类Unix操作系统中用于切换用户的命令。它允许已登录的用户切换到另一个用户账户,通常是超级用户(root),以便执行需要特殊权限的任务。

语法:

bash 复制代码
su [options] [username]
  • options:可选参数,用于指定一些特定选项,例如保持环境变量、使用登录 shell 等。
  • username:可选参数,要切换到的目标用户账户。如果未提供该参数,默认会切换到超级用户账户(root)。

示例

  1. 切换到超级用户(root)

如果不提供任何用户名,su 命令会默认将用户切换到超级用户(root):

bash 复制代码
su 

需要输入超级用户的密码才能切换到 root 用户。

  1. 切换到其他用户

要切换到特定的用户账户,只需将目标用户名作为参数传递给 su 命令:

bash 复制代码
su username

在这里,将 username 替换为要切换到的实际用户名。

  1. 保持环境变量

默认情况下,使用 su 命令切换到其他用户时,环境变量会被重置为目标用户的默认值。如果希望保留当前用户的环境变量,可以使用 - 选项:

bash 复制代码
su - username   

或者可以使用 --login 选项,效果相同:

bash 复制代码
su --login username
  1. 使用登录 shell

使用 -l 选项,也可以使用 --login 选项,可以强制切换到目标用户的登录 shell:

bash 复制代码
su -l username   

注意事项

  • 当切换到其他用户账户时,需要输入目标用户的密码,除非是超级用户(root)。
  • 使用 su 命令时,请小心不要意外地执行系统中的敏感操作,尤其是当切换到超级用户时。因为超级用户具有系统的最高权限,可以对系统进行任何更改。
  • 请谨慎使用超级用户(root)权限,仅在必要时切换到超级用户账户来执行需要特殊权限的任务。
  • 在许多系统中,为了安全起见,su 命令可能需要在特定的用户组中或具有特定权限的用户才能使用。

chown

chown 是一个用于更改文件或目录的所有者(owner)和所属组(group)的命令。在Unix和类Unix操作系统中,每个文件和目录都有一个所有者和一个所属组,这些属性决定了谁可以访问文件以及如何访问。chown 命令允许系统管理员或文件所有者更改这些属性,以便更好地管理文件系统。

语法:

bash 复制代码
chown [options] owner[:group] file(s)
  • options:可选参数,用于指定一些特定选项,例如递归操作、改变文件类型等。
  • owner:新的所有者的用户名或用户ID。
  • group:可选参数,新的所属组的组名或组ID。如果省略,将保持原始所属组不变。
  • file(s):要更改所有者和/或所属组的文件或目录。

示例

  1. 更改文件所有者

要更改文件的所有者,只需提供新的用户名或用户ID,以及要更改的文件的路径:

bash 复制代码
chown newuser file.txt   
  1. 更改文件的所有者和所属组

要同时更改文件的所有者和所属组,可以在 owner 后面加上 :,然后指定新的组名或组ID:

bash 复制代码
chown newuser:newgroup file.txt
  1. 只更改所属组

如果只想更改文件的所属组,而不改变所有者,可以使用 :,但省略 owner

bash 复制代码
chown :newgroup file.txt  
  1. 递归更改目录及其内容

使用 -R 选项可以递归地更改目录及其所有内容的所有者和/或所属组:

bash 复制代码
chown -R newuser:newgroup directory/

注意事项

  • 在使用 chown 命令时,确保提供正确的用户名、用户ID、组名或组ID。否则,可能会导致文件所有权混乱,甚至可能导致访问问题。
  • 使用 chown 命令需要足够的权限。通常,只有文件的所有者或超级用户(root)可以更改所有者和所属组。
  • 谨慎使用 chown 命令,特别是在系统范围内递归更改所有者和所属组。不正确的使用可能会影响系统的正常运行和安全性。
  • 如果是普通用户,可能需要超级用户权限(通过 sudo 命令)来执行某些 chown 操作。
  • 在执行递归操作时,请特别小心。确认要更改的文件和目录,以及更改后的所有者和所属组。

结束语

本系列就到此为止了,这些命令不用全记住 用到的时候想不起来查一下就好,其实用多了 自然而然就记住了~

本着把自己知道的都告诉大家,如果本文对有所帮助,点赞+关注鼓励一下呗~

Linux相关文章

往期面试题相关文章

项目源码(源码已更新 欢迎star⭐️)

往期设计模式相关文章

设计模式项目源码(源码已更新 欢迎star⭐️)

Kafka 专题学习

项目源码(源码已更新 欢迎star⭐️)

ElasticSearch 专题学习

项目源码(源码已更新 欢迎star⭐️)

往期并发编程内容推荐

推荐 SpringBoot & SpringCloud (源码已更新 欢迎star⭐️)

博客(阅读体验较佳)

相关推荐
这孩子叫逆几秒前
Spring Boot项目的创建与使用
java·spring boot·后端
C++忠实粉丝24 分钟前
Linux环境基础开发工具使用(2)
linux·运维·服务器
康熙38bdc1 小时前
Linux 环境变量
linux·运维·服务器
coderWangbuer1 小时前
基于springboot的高校招生系统(含源码+sql+视频导入教程+文档+PPT)
spring boot·后端·sql
攸攸太上1 小时前
JMeter学习
java·后端·学习·jmeter·微服务
Kenny.志1 小时前
2、Spring Boot 3.x 集成 Feign
java·spring boot·后端
sky丶Mamba2 小时前
Spring Boot中获取application.yml中属性的几种方式
java·spring boot·后端
hakesashou2 小时前
python如何比较字符串
linux·开发语言·python
Ljubim.te2 小时前
Linux基于CentOS学习【进程状态】【进程优先级】【调度与切换】【进程挂起】【进程饥饿】
linux·学习·centos
cooldream20092 小时前
Linux性能调优技巧
linux