前言
目前正在出一个Linux命令
系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~
作为服务端开发,linux
命令还是要掌握一下的,可以做做基础性的运维。好了, 废话不多说直接开整吧~
本节是该系列的最后一节,这节给大家介绍一些权限相关的命令,这些命令谨慎操作~
chmod
在Linux
系统中使用chmod
命令时,可以修改文件或目录的权限。权限控制谁可以读取、写入和执行特定文件或目录。chmod
命令允许更改这些权限,以便适应不同的安全需求
语法:
shell
chmod [options] mode filename
options
: 可选参数,用于指定一些特定选项,例如递归修改权限、静默模式等。mode
: 权限模式,可以是文字模式或数字模式。文字模式更容易理解,数字模式更为紧凑。filename
: 要修改权限的文件或目录名称。
权限模式
在mode
部分,可以使用以下字符来表示不同的权限:
u
: 所有者(user)权限-g
: 组权限-o
: 其他用户权限-a
: 所有用户权限(等同于ugo
)
每个权限部分可以使用以下字符来表示权限:
r
: 读取权限-w
: 写入权限-x
: 执行权限
使用示例
-
使用文字模式设置权限:
- 设置所有者读、写、执行权限:
chmod u=rwx filename
- 设置组用户只读权限:
chmod g=r filename
- 设置其他用户执行权限:
chmod o=x filename
- 设置所有用户读权限:
chmod a=r filename
- 设置所有者读、写、执行权限:
-
使用数字模式设置权限:
- 设置所有者可读写执行,组和其他用户可读:
chmod 744 filename
- 所有者可读写执行,组可读执行,其他用户无权限:
chmod 750 filename
- 设置所有者可读写执行,组和其他用户可读:
-
递归修改目录及其内容的权限:
如果要递归地修改目录及其内容的权限,可以使用
-R
选项。- 递归地给目录及其内容赋予所有者读写执行权限:
chmod -R u=rwx directory
- 递归地给目录及其内容赋予所有者读写执行权限:
-
静默模式:
使用
-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
: 要更改所有者和/或组的文件或目录名称。
使用示例
- 更改所有者:
- 将文件的所有者更改为新用户:
chown newuser filename
- 将目录的所有者更改为新用户:chown newuser directory
- 更改组:
- 将文件的组更改为新组:
chown :newgroup filename
- 将目录的组更改为新组:chown :newgroup directory
- 同时更改所有者和组:
- 将文件的所有者和组同时更改:
chown newuser:newgroup filename
- 将目录的所有者和组同时更改:chown newuser:newgroup directory
- 递归更改目录及其内容的所有者和组:
如果要递归地更改目录及其内容的所有者和组,可以使用-R
选项。
- 递归地将目录及其内容的所有者和组都更改为新用户和新组:
chown -R newuser:newgroup directory
- 保留文件的组,只更改所有者:
使用-c
选项来仅在所有者或组发生变化时显示修改的文件。
- 仅更改文件的所有者,保留组:
chown -c newuser filename
这些示例展示了如何使用chown
命令来更改文件和目录的所有者和组。在实际使用时,请确保具有足够的权限来更改所有者和组。更改所有者和组可能会影响文件的访问和权限设置,因此务必小心操作。
chgrp
语法:
shell
chgrp [options] new_group filename
options
: 可选参数,用于指定一些特定选项,如递归更改等。new_group
: 新的组的组名或组ID。filename
: 要更改所属组的文件或目录名称。
使用示例
- 更改组:
- 将文件的组更改为新组:
chgrp newgroup filename
- 将目录的组更改为新组:chgrp newgroup directory
- 递归更改目录及其内容的组:
如果要递归地更改目录及其内容的组,可以使用-R
选项。
- 递归地将目录及其内容的组都更改为新组:
chgrp -R newgroup directory
- 保留所有者,只更改组:
使用-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--
(所有者可读写,其他用户只可读)。
示例
- 查看当前
umask
值:
要查看当前系统的 umask
值,只需运行 umask
命令,它将返回当前的 umask
值:
bash
umask
- 设置新的
umask
值:
要设置新的 umask
值,只需将所需的权限位值传递给 umask
命令。例如,要将 umask
设置为 027
:
bash
umask 027
- 永久修改
umask
值:
若要永久修改 umask
值,可以在用户的 shell 配置文件中添加 umask
命令。例如,将 umask
设置为 027
并永久保存:
在 ~/.bashrc
或 ~/.bash_profile
文件中添加以下行:
bash
umask 027
这将确保在每次用户登录时都会应用指定的 umask
值。
注意事项
umask
的值通常以八进制表示,因此请确保使用正确的格式来设置它。umask
设置的值影响新文件和目录的默认权限,但不会影响已经存在的文件和目录的权限。- 默认的
umask
值通常设置为022
或002
,这样新文件会具有相对安全的默认权限,但可以根据需求进行调整。 - 注意,在设置
umask
值时,要确保不要过于放宽文件和目录的默认权限,以保护系统的安全性。
su
su
(switch user)是一个在Unix
和类Unix
操作系统中用于切换用户的命令。它允许已登录的用户切换到另一个用户账户,通常是超级用户(root)
,以便执行需要特殊权限的任务。
语法:
bash
su [options] [username]
options
:可选参数,用于指定一些特定选项,例如保持环境变量、使用登录 shell 等。username
:可选参数,要切换到的目标用户账户。如果未提供该参数,默认会切换到超级用户账户(root)。
示例
- 切换到超级用户(root):
如果不提供任何用户名,su
命令会默认将用户切换到超级用户(root):
bash
su
需要输入超级用户的密码才能切换到 root 用户。
- 切换到其他用户:
要切换到特定的用户账户,只需将目标用户名作为参数传递给 su
命令:
bash
su username
在这里,将 username
替换为要切换到的实际用户名。
- 保持环境变量:
默认情况下,使用 su
命令切换到其他用户时,环境变量会被重置为目标用户的默认值。如果希望保留当前用户的环境变量,可以使用 -
选项:
bash
su - username
或者可以使用 --login
选项,效果相同:
bash
su --login username
- 使用登录 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)
:要更改所有者和/或所属组的文件或目录。
示例
- 更改文件所有者:
要更改文件的所有者,只需提供新的用户名或用户ID,以及要更改的文件的路径:
bash
chown newuser file.txt
- 更改文件的所有者和所属组:
要同时更改文件的所有者和所属组,可以在 owner
后面加上 :
,然后指定新的组名或组ID:
bash
chown newuser:newgroup file.txt
- 只更改所属组:
如果只想更改文件的所属组,而不改变所有者,可以使用 :
,但省略 owner
:
bash
chown :newgroup file.txt
- 递归更改目录及其内容:
使用 -R
选项可以递归地更改目录及其所有内容的所有者和/或所属组:
bash
chown -R newuser:newgroup directory/
注意事项
- 在使用
chown
命令时,确保提供正确的用户名、用户ID、组名或组ID。否则,可能会导致文件所有权混乱,甚至可能导致访问问题。 - 使用
chown
命令需要足够的权限。通常,只有文件的所有者或超级用户(root)可以更改所有者和所属组。 - 谨慎使用
chown
命令,特别是在系统范围内递归更改所有者和所属组。不正确的使用可能会影响系统的正常运行和安全性。 - 如果是普通用户,可能需要超级用户权限(通过
sudo
命令)来执行某些chown
操作。 - 在执行递归操作时,请特别小心。确认要更改的文件和目录,以及更改后的所有者和所属组。
结束语
本系列就到此为止了,这些命令不用全记住 用到的时候想不起来查一下就好,其实用多了 自然而然就记住了~
本着把自己知道的都告诉大家,如果本文对有所帮助,点赞+关注
鼓励一下呗~
Linux相关文章
- 一起来学Linux命令(一)
- 一起来学Linux命令(二)
- 一起来学Linux命令(三)
- 一起来学Linux命令(四)
- 一起来学Linux命令(五)
- 一起来学Linux命令(六)
- 一起来学Linux命令(七)
- 一起来学Linux命令(八)
- 一起来学Linux命令(九)
往期面试题相关文章
- 查漏补缺第一期(Redis相关)
- 查漏补缺第二期(synchronized & 锁升级)
- 查漏补缺第三期(分布式事务相关)
- 查漏补缺第四期(Mysql相关)
- 查漏补缺第五期(HashMap & ConcurrentHashMap)
- 查漏补缺第六期(京东一面)
- 查漏补缺第七期(美团到店一面)
- 查漏补缺第八期(阿里一面)
- 查漏补缺第九期(阿里二面)
- 查漏补缺第十期(网易实习一面)
- 查漏补缺第十一期(网易实习二面)
- 查漏补缺第十二期(网易实习三面)
- 查漏补缺第十三期(滴滴实习一面)
- 查漏补缺第十四期(滴滴实习二面)
- 查漏补缺第十五期(华为一面)
- 查漏补缺第十六期(华为二面)
- 查漏补缺第十七期(华为三面)
- 查漏补缺第十八期(你了解class文件吗)
项目源码(源码已更新 欢迎star⭐️)
往期设计模式相关文章
- 一起来学设计模式之认识设计模式
- 一起来学设计模式之单例模式
- 一起来学设计模式之工厂模式
- 一起来学设计模式之建造者模式
- 一起来学设计模式之原型模式
- 一起来学设计模式之适配器模式
- 一起来学设计模式之桥接模式
- 一起来学设计模式之组合模式
- 一起来学设计模式之装饰器模式
- 一起来学设计模式之外观模式
- 一起来学设计模式之享元模式
- 一起来学设计模式之代理模式
- 一起来学设计模式之责任链模式
- 一起来学设计模式之命令模式
- 一起来学设计模式之解释器模式
- 一起来学设计模式之迭代器模式
- 一起来学设计模式之中介者模式
- 一起来学设计模式之备忘录模式
- 一起来学设计模式之观察者模式
- 一起来学设计模式之状态模式
- 一起来学设计模式之策略模式
- 一起来学设计模式之模板方法模式
- 一起来学设计模式之访问者模式
- 一起来学设计模式之依赖注入模式
设计模式项目源码(源码已更新 欢迎star⭐️)
Kafka 专题学习
- 一起来学kafka之Kafka集群搭建
- 一起来学kafka之整合SpringBoot基本使用
- 一起来学kafka之整合SpringBoot深入使用(一)
- 一起来学kafka之整合SpringBoot深入使用(二)
- 一起来学kafka之整合SpringBoot深入使用(三)
项目源码(源码已更新 欢迎star⭐️)
ElasticSearch 专题学习
项目源码(源码已更新 欢迎star⭐️)
往期并发编程内容推荐
- Java多线程专题之线程与进程概述
- Java多线程专题之线程类和接口入门
- Java多线程专题之进阶学习Thread(含源码分析)
- Java多线程专题之Callable、Future与FutureTask(含源码分析)
- 面试官: 有了解过线程组和线程优先级吗
- 面试官: 说一下线程的生命周期过程
- 面试官: 说一下线程间的通信
- 面试官: 说一下Java的共享内存模型
- 面试官: 有了解过指令重排吗,什么是happens-before
- 面试官: 有了解过volatile关键字吗 说说看
- 面试官: 有了解过Synchronized吗 说说看
- Java多线程专题之Lock锁的使用
- 面试官: 有了解过ReentrantLock的底层实现吗?说说看
- 面试官: 有了解过CAS和原子操作吗?说说看
- Java多线程专题之线程池的基本使用
- 面试官: 有了解过线程池的工作原理吗?说说看
- 面试官: 线程池是如何做到线程复用的?有了解过吗,说说看
- 面试官: 阻塞队列有了解过吗?说说看
- 面试官: 阻塞队列的底层实现有了解过吗? 说说看
- 面试官: 同步容器和并发容器有用过吗? 说说看
- 面试官: CopyOnWrite容器有了解过吗? 说说看
- 面试官: Semaphore在项目中有使用过吗?说说看(源码剖析)
- 面试官: Exchanger在项目中有使用过吗?说说看(源码剖析)
- 面试官: CountDownLatch有了解过吗?说说看(源码剖析)
- 面试官: CyclicBarrier有了解过吗?说说看(源码剖析)
- 面试官: Phaser有了解过吗?说说看
- 面试官: Fork/Join 有了解过吗?说说看(含源码分析)
- 面试官: Stream并行流有了解过吗?说说看