本文主要是介绍近两个月整理的保姆级Linux常用命令(详略得当版),耗费近亿根头发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
成功不必在我,而功力必不唐捐!
路漫漫其修远兮,吾将上下而求索.
系列文章目录
文章目录
- 系列文章目录
- 一、目录及文件处理命令
- 二.权限管理命令
- 2.1 基本管理权限
- 三.文件搜索命令
- 3.1 find搜索(实时,查询速度慢)
- 3.2 locate搜索(查询速度快,延时)
- 3.3 witch搜索
- 3.4 grep搜索
- 3.5其他搜索帮助命令
- 四.用户管理命令
- 五.压缩解压命令
- 六.网络命令
- 七.关机重启常用命令
- 高阶操作命令
- 八.vim常用操作
- 九.软件包管理命令
- 9.1 RPM包命名原则
- 9.2 rpm包的依赖性树形依赖:
- 9.3 源码包相关
- 9.4 脚本安装包相关
- 十.用户配和用户组管理
- 10.1.1 用户配置文件
- 10.1.2 影子文件
- 10.1.3 组信息,组密码文件
- 10.2.1 用户管理相关文件
- 10.2.2 用户模板目录
- 十一. 其他权限管理
- 11.1.1 ACL权限
- 11.2.1 文件特殊权限(慎重操作!)
- 11.2.2 -SetUID
- 11.2.3 -SetGID
- 11.2.4 -Sticky BIT
- 11.3.1 文件系统属性chattr权限
- 11.4.1 sudo权限
- 十二. 文件系统和分区操作
- 12.1.1 分区和文件系统
- 12.1.2 文件系统常用命令df,du,lsblk
- 12.2.1 文件系统修复命令fsck
- 12.3.1 光驱,移动硬盘等的挂载命令
- 12.4.1 支持NTFS文件系统
- 12.5.1 fdisk分区
- 十三.防火墙相关操作
提示:以下是本篇文章正文内容,下面案例可供参考
💜要想永久生效某些设置,都需要修改linux下的相关配置文件! 命令行的更改都是临时生效的。
💚 Linux严格区分大小写!
💗 操作系统centos7 VMware16
永久修改主机名
使用hostnamectl命令
#hostnamectl set-hostname 新主机名
一、目录及文件处理命令
/**ls列表展示相关*/
# ls //显示当前目录所在文件
# ls -a //显示当前目录所有文件会多出.xxx的隐藏文件 .xxx点前缀就被linux识别为隐藏文件
# ls 目录名 //查看指定目录下文件
# ls -l //显示文件多出的相关属性(简写 # ll)
# ls -ld 目录名 //显示目录本身,而不显示该目录下的文件数据
# ls -lh //人性化显示
# ls -i //查询i节点/**进入文件,退出文件相关*/
# . //表示当前目录
# cd .. //回到上一级的目录
# cd 目录路径 //切换到指定目录
# pwd //显示当前目录所在的绝对路径/**目录操作相关*/
# mkdir 目录路径/目录名 //创建指定路径下的子目录
# mkdir -p 目录路径/目录名1/目录名2 //同时创建目录1和其子目录2
# mkdir 目录路径0/目录名1 目录路径0/目录名2 //在 同一路径创建 并列的两个文件 目录# cp -r 被复制的目录 将复制到的目录路径/目录名 //将目录复制到目标目录
# cp -r 被复制的目录 将复制到的目录路径/目录名/重新命名 //将目录复制到目标目录 并 重新命名
# cp 被复制文件 将复制到的目录路径/目录名 //将文件复制 到 目标目录
# cp 被复制文件1 被复制文件2 将复制到的目录路径/目录名 //将 两个不同文件 复制到 目标目录
# cp -p 被复制文件 将复制到的目录路径/目录名 //复制的时候 保留文件属性# mv 被剪贴文件 将剪贴到的目录路径/目录名 //将文件剪贴到 目标目录
# mv 被剪贴的目录 重命名 //将 被剪贴的目录 在当前目录下 改名/**删除操作相关*/
# rm 文件名 //删除 指定文件
# rm -f 文件名 //强制删除
# rmdir 目录路径/目录名 //删除指定 !空目录!
# rm -rf 目标目录 //强制删除 指定目录/**创建操作相关*/
# touch 文件名 //在 当前目录下 创建 一个 空文件
# touch 绝对路径/文件名 //在 指定路径下 创建 一个 空文件
# touch 文件名1 文件名2 //创建 两 个文件
# touch "文件 名" //创建 带空格名称 的 一个 文件/**浏览操作相关*/
# cat -n 文件名 //浏览文件内容 并 前置每行行号
# tac -n 文件名 //倒着浏览文件内容 并 前置每行行号
# more 文件名 //分页浏览内容 空格下一页 回车下一行 q退出
# less 文件名 //比more多了向上翻页 pgUp 或上箭头 在less模式下 输入 /关键词 可以搜索到 关键词所在位置 按n查找下一个关键词
# head -n 6 文件名 //显示文件前6行
# tail -n 文件名 //默认显示文件后10行
# tail -f 文件名 //动态显示文件后10行/**快捷方式相关*/
# ln -s 绝对路径/文件名 将要放到的路径 //生成一个软连接(相当于快捷方式 将要放到的路径—>绝对路径/文件名) u g o 具有rwx权限
# ln 绝对路径/文件名 将要放到的路径 //生成一个硬连接(相当于拷贝)相比cp -p 最主要的特点是可以同步更新 不能夸分区
二.权限管理命令
2.1 基本管理权限
# ls -l //显示文件多出的相关属性(可以查看权限)
# chmod u+x 文件名//给 user 添加一个 执行 权限
# chmod g+w,o-r 文件名//给 所属组 添加一个 写 权限,其他用户 减少一个 读 权限。
# chmod g=rwx 文件名 //让其现在 具有 rwx 权限
# chmod 640 文件名 //让其现在 具有 -rw-r----- 的权限
# chomd -R 777 目录名 //改变一个目录权限的同时,改变其子目录的所有文件权限.# chown root 文件名 //将该文件的所有者转交给root
# chgrp lampbrother 文件名 //将该文件的所属组转交给lampbrother
# umask -S //查看默认缺省权限
# su -user //切换用户
三.文件搜索命令
用途:搜索文件
3.1 find搜索(实时,查询速度慢)
不要在服务器使用高峰期使用find查询
# find 搜索路径 -name 文件名 //精准搜索在指定路径下的文件
# find 搜索路径 -name *文件名* //模糊搜索在指定路径下的文件
# find 搜索路径 -name init* //搜索在指定路径下的以init开头的文件
# find 搜索路径 -name init??? //搜索在指定路径下的以init开头,再匹配三个字符的文件# find 搜索路径 -iname init??? //搜索在指定路径下的以init开头,再匹配三个字符的文件(不区分大小写)# find / -size +204800 //在根目录下查找大于100mb的文件 [详情](https://www.bilibili.com/video/BV1mW411i7Qf?p=18)1数据块=512字节=0.5k 100mb=102400kb# find / -size +163840 -a -size +204800 //在根目录下查找大于80mb小于100mb的文件
# find /home -user root //在home目录下查找所有root用户的文件
# find /home -group root //在home目录下查找所有root所属组的文件
# find /etc -mmin -5 //在etc目录下查找5分钟之内修改过的文件 (-amin 访问时间)(-cmin 文件属性)(-mmin 文件内容)
# find / -name init* -a -type d //在根目录下查找以init开头的目录
# find / -name init* -a -type f //在根目录下查找以init开头的文件
# find /etc -name inittab -exec ls -l {} \; //在/etc下查找inittab文件并显示其详细信息 //-exec 命令 {} \; 对搜索结果执行操作(execute)
# ls -i //展示文件的i节点
# find . -inum 31531 -exec rm {} \; //查询当前目录的i节点,通过i节点删除文件
3.2 locate搜索(查询速度快,延时)
用途:搜索文件
命令名称: locate
命令所在路径:/usr/bin/locate
执行权限:所有用户
语法: locate 文件名
功能描述:在文件资料库中查找文件
范例:# locate inittab
# locate locate //搜索locate资料库.(这是比find快的原因,速度远快于find搜索,但新创建的文件不会立即存入locate资料库)
# updatedb //更新文件资料库
# locate 文件名 //区分大小写查找
# locate -i 文件名 //不区分大小写查找
3.3 witch搜索
用途:搜索命令
命令名称: which
命令所在路径:/usr/bin/which
执行权限:所有用户
语法: which命令
功能描述:搜索命令所在目录及别名信息
范例:# which ls
快速查询命令所在绝对路径和别名
3.4 grep搜索
用途:搜索文件中的内容
命令名称: grep
命令所在路径:/bin/grep
执行权限:所有用户
语法: grep -iv [指定字串] [文件]
功能描述:在文件中搜寻字串匹配的行并输出
-i 不区分大小写
-v排除指定字串
3.5其他搜索帮助命令
/**若命令与配置文件名称相同,优先展示命令的帮助*/
# man ls //查看ls命令的帮助信息
# man 文件名 //查看配置文件的帮助信息# whatis ls //查看一个命令简短的介绍
# apropos 配置文件 //查看一个配置文件简短的介绍
# help umask //查看umask命令的帮助信息(获得shell内置命令的帮助信息,man无法得到)
四.用户管理命令
格式: # useradd [选项] 用户名
选项 | |
---|---|
-u | UID:手工指定用户的UID号 |
-d | 家目录:手工指定用户的家目录 |
-c | 用户说明:手工指定用户的说明 |
-g | 组名:手工指定用户的初始组 |
-G | 组名:指定用户的附加组 |
-s | shell:手工指定用户的登陆shell.默认是 /bin/bash |
格式: # usermod [选项] 用户名
选项 | |
---|---|
-u | UID:修改用户的UID号 |
-c | 用户说明:修改用户的说明 |
-G | 组名:修改的附加组 |
-L: | 临时锁定用户(Lock) |
-U: | 解锁用户锁定(Unlock) |
格式:# passwd [选项] 用户名
选项 | |
---|---|
-S | 查询用户密码的密码状态.仅root用户可用 |
-l | 暂时锁定用户.仅root用户可用 |
-u | 解锁用户.仅root用户可用 |
–stdin | 可以通过管道符输出的数据作为用户的密码 |
格式:# chage [选项] 用户名
选项 | |
---|---|
-l: | 列出用户的详细密码状态 |
-d 日期: | 修改密码最后一次更改日期(shadow3字段) |
-m 天数: | 两次密码修改间隔(4字段) |
-M 天数: | 密码有效期(5字段) |
-W 天数: | 密码过期前警告天数(6字段) |
-I 天数: | 密码过后宽限天数(7字段) |
-E 日期: | 账号失效时间(8字段) |
//创建用户
# useradd 用户名 //添加一个用户
# passwd 用户名 //设置用户密码
# w //详细查看远程登录用户信息的命令 (tty本地终端登录 pts远程终端登录) (# who)简略查看
# passwd -l 用户名 //锁定用户.(操作shadow文件的感叹号,令密码解析失效)
# passwd -u 用户名 //解锁用户
# echo "123" | passwd --stdin lamp // | 管道符,将前面的输出结果作为后面的输入 --stdin接收前面的输出结果//修改已存在用户信息
# usermod -c "test user" -G root -u 550 lamp //-c 描述该用户是测试用户 -G 附加到root组 UID修改为550
# usermod -L 用户名//锁定用户信息
# usermod -U 用户名//解锁用户信息//删除/切换用户
# userdel [-r] 用户名 //-r删除用户的同时删除用户家目录
# su [选项] 用户名 /*** - : 选项只使用"-"代表连带用户的环境变量一起切换.(不要省!!)* -c 命令: 仅执行一次命令,而不切换用户身份*/
$ su -root -c "useradd user3" //$ 普通用户. 不切换成root用户,但是执行useradd命令添加user3用户.//用户组管理
# groupadd 组名 //添加组
# groupmod -n 新组名 旧组名 //将旧组名修改成新组名
# groupdel 组名 //删除组
# gpasswd -a 用户名 组名 //把用户加入组
# gpasswd -d 用户名 组名 //把用户从组中删除
五.压缩解压命令
命令名称: tar
命令所在路径:/bin/tar
执行权限:所有用户
语法: tar选项[-zcf][压缩后文件名][目录]
-c 打包
-v 显示详细信息
-f 指定文件名
-z 打包时压缩(有x时解压缩)
-x 解包
功能描述:打包目录
压缩后文件格式: .tar.gz
gzip只能压缩文件,不能压缩目录 不保留源文件
/** .gz格式压缩解压*/
# gzip 文件名 //将该文件压缩成.gz格式
# gunzip 文件名 //解压该文件# tar -zcf 压缩后的目录名.tar.gz 要压缩的目录 //将目录打包并压缩到指定目录(c创建一个打包文件 f指定文件名 z在打包时压缩文件)
# tar -zxf 要解包的文件名.tar.gz //解包.gz格式/** .zip格式压缩解压
* 1.比.gz的好处是 压缩时保留原文件
* 2.加个 -r命令 可以压缩目录
* 3.压缩比率不如.gz格式
*/
# zip 命名压缩文件名.zip 要压缩的文件 //压缩文件(请在压缩文件名后面加上 .zip便于区分)
# zip -r 压缩的目录.zip 将要压缩到的目录 //压缩目录
# unzip 文件名.zip //解压zip格式/** bzip2格式压缩解压
* 1..zp的升级版,多了 -k指令 产生压缩文件后保留源文件
* 2.压缩比惊人.
*/
# bzip2 -k 文件名 //产生压缩文件并保留源文件
# bunzip2 -k 压缩包名//解压缩.bz2格式并保留压缩包(-k是否保留压缩包)# tar -cjf 命名压缩文件名.tar.bz2 将要压缩到的目录 //生成打包并压缩的目录
# tar -xjf 压缩包名称.tar.bz2 //解压 .tar.bz2 格式的压缩包
六.网络命令
/**ping命令 所有用户可用*/
# ping ip地址
# ping -c 3 ip地址//发送3次数据/**ifconfig命令 所有用户可用*/
# ifconfig //查看网卡配置信息# mail 用户名 内容信息 //向指定用户发送邮件(ctrl+d保存并发送)
# mail //查看邮件列表(之后输邮件相应编号即可阅读信封内容 -h回到邮件列表)(-d 编号 删除对应邮件)# last //统计所有用户登陆时间,计算机重启时间
# lastlog //统计所有用户最后登录时间
# lastlog -u id //查看某一用户的最后登录时间# traceroute 网址//跟踪网络数据包的路由路径# netstat 选项 /** -t 查询TCP协议网络信息 * -u 查询UDP协议网络信息* -l 监听* -r 路由* -n 显示ip地址和端口号*/
# netstat -tlun //查看本机监听的端口
# netstat -an //查看本机所有的网络连接
# netstat -rn //查看本机路由表# service network restart //重启网络服务# mount -t /dev/sr0 /mnt/cdrom/ //挂载外界设备
# umount /dev/sr0 //必须退出挂载文件,才能卸载挂在文件
七.关机重启常用命令
1)centos5:SysV init、
2)centos6:Upstart
3)centos7:Systemd
# shutdown -h now //立即关机(-c取消前一个关机命令 -r重启 在服务器上关机和重启都要谨慎)
# shutdown -r now //重启# init 数字
/**
* 0关机
* 1单用户 (启动最小核心程序,相当于windows安全模式)
* 2不完全多用户,不含nfs服务 (nfs文件共享服务-->有风险不建议使用,有可替代方式)
* 3完全多用户
* 4未分配
* 5图形界面
* 6重启 */
# cat /etc/inittab //查看init配置文件
# runlevel //查看当前运行级别# logout //退出登录
高阶操作命令
八.vim常用操作
vi <=> vim
vim中每个按键都是指令
vim三种模式:命令模式,插入模式,编辑模式
vi命令模式下操作指令:
vi 文件名 //进入vi命令模式
/**
* 任何操作都要在vi命令模式下才使用
* gg //到第一行
* G //到最后一行
*
* 10G //到第10行
* $ //移至行尾
* 0 //移至行首
*
* a 在光标所在字符后插入
* A 在光标所在行尾插入
* i 在光标所在字符前插入
* I 在光标所在在行行首插入
* o 在光标下插入新行
* O 在光标上插入新行
* x //删除光标所在处字符
* nx //删除光标所在处后n个字符
* dd //删除光标所在行,ndd删除n行
* dG //删除光标所在行到文件末尾内容
* D //删除光标所在处到行尾内容
*
* yy //复制当前行
* nyy //复制当前行以下n行
* dd //剪切当前行
* ndd //剪切当前行以下n行
* p,P //粘贴在当前光标所在行下或行上
*
* r //取代光标所在处字符
* R //从光标所在处开始替换字符,按Esc结束
* u //取消上一步操作
* 任何操作都要在vi命令模式下才使用
* /字符串 //输入字符串,查找相应关键词
*/
以上任意命令进入到vi插入模式(相当于进入记事本,按下esc会回退到命令模式): //命令模式下进入编辑模式(命令执行完毕自动回退到命令模式)
:set nu //给文本加上行号
:set nonu //取消行号
:set ic //不区分大小写
:wq //保存退出
:1000 //到第1000行
:n1,n2d //删除指定范围的行
:%s /要替换的字符串/替换新的字符串/g //全文替换
:n1,n2,s /要替换的字符串/替换新的字符串/g //在一定范围内替换指定的字符串:w保存修改
:w 文件名 //另存为指定文件
:wq //保存修改并退出
ZZ //快捷键,保存修改并退出
:q! //不保存修改退出
:wq! //保存修改并退出(强行保存,只有文件所有者和root可以)/** r !命令 */ //将命令结果导入
:r 要导入的文件名 //将文件内容导入到 光标的位置
:!which 命令 //可以在不退出vim的情况下查找命令的位置
:r !date //导入时间
九.软件包管理命令
9.1 RPM包命名原则
httpd-2.2.15-15.el6.centos.1.i686.rpm
httpd | 软件包名 |
2.2.15 | 软件版本 |
15 | 软件发布的次数 |
el6.centos | 适合的Linux平台 |
i686 | 适合的硬件平台 |
rpm | rpm包扩展名 |
rpm | 包管理 |
9.2 rpm包的依赖性树形依赖:
树形依赖:a→b→c
环形依赖:a→b→c→a,
模块依赖:模块依赖查询网站:(文件名以 so.数字结尾的是模块,需要到以下网站查询安装地址)
www.rpmfind.net
详情
rpm包安装位置 | |
---|---|
/etc/ | 配置文件的安装目录 |
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 程序所使用的函数库保存位置 |
/usr/share/doc | 基本的软件使用手册保存位置 |
/usr/share/man/ | 帮助文件保存位置 |
rpm包验证内容中的8个信息 | |
---|---|
S | 文件大小是否改变 |
M | 文件的类型或文件的权限(rwx)是否被改变 |
5 | 文件MD5校验和是否改变(可以看成文件内容是否改变) |
D | 代码是否被改变 |
L | 文件路径是否改变 |
U | 文件的所有者是否改变 |
G | 文件的所属组是否改变 |
T | 文件的修改时间是否改变 |
/** rpm命令管理 (查询使用. 安装,升级,卸载请选择yum在线管理)*/
//安装,升级,卸载
# rpm -ivh 包全名 //-i(install)安装 -v(verbose)显示详细信息 -h(hash)显示进度
# rpm -Uvh 包全名 //RPM包升级
# rpm -e 包名 //e 卸载//查询
# rpm -q 包名 //查询包是否安装
# rpm -qa //查询所有安全包
# rpm -qi 包名 //-i查询软件信息 -p 查询未安装包信息
# rpm -ql 包名 //查询包中文件安装位置
# rpm -qlp 包全名 //查询包中文件将要安装的位置
# rpm -qf 系统文件名 //查询系统文件属于哪一个软件包
# rpm -qR 包名//-R查询软件包的依赖性 -p查询未安装包信息\//rpm校验,判断文件是否被修改
# rpm -V 已安装的包名 //-V校验指定RPM包中的文件
//rpm包中文件提取
# rpm2cpio 包全名 | \ cpio -idv .文件绝对路径 // \换行 .将文件提取到当前目录/** yum在线管理 (解决 rpm命令管理 的模块依赖性,需要联网) */
//yum源相关内容 https://www.bilibili.com/video/BV1mW411i7Qf?p=32&share_source=copy_web
# yum list //查询所有可用软件包列表
# yum search 关键字 //搜索服务器上所有和关键字相关的包
# yum -y install 包名//-y自动回答yes install安装
# yum -y update 包名 //升级该包名
# yum -y update //升级所有软件包,包括Linux内核(慎用)# yum -y remove 包名 //卸载及依赖包 慎用!!!!!!# yum grouplist //列出所有可用的软件组列表
# yum groupinstall 软件组名 //安装指定软件组
# yum groupremove 软件组名 //卸载指定软件组# service 软件组名 start //软件启动管理
# yum --disablerepo=base update 升级yum
# yum clean all 清除yum缓存
# yum info 软件名 //查询软件详细信息
rpm -qi 软件名 //查询安装文件的个数
# rpm -ql 软件名 //查询软件路径
9.3 源码包相关
软件安装在指定位置当中,一般是 /usr/local/软件名/
源代码保存位置: /usr/local/src/
# ./configure --prefix=/usr/local/软件名/ //指定安装路径
# make //把源码包编译成二进制文件
//如果前两条命令报错 执行 # make clean
# make install //编译安装
# rm -rf 软件路径 //卸载软件
9.4 脚本安装包相关
脚本安装包并不是独立的软件包类型,常见安装的是源码包。
是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装。
非常类似于Windows下软件的安装方式。 ----兄弟连
主要安装驱动使用
十.用户配和用户组管理
10.1.1 用户配置文件
用户基本信息文件路径: /etc/passwd
第1字段: | 用户名称 |
第2字段: | 密码标识 |
第3字段: | UID(用户ID) |
(1)0: | 超级用户 |
(2)1-499: | 系统用户 |
(3)500-65535: | 普通用户 |
第4字段: | GID(用户初始组ID) |
第5字段: | 用户说明 |
第6字段: | 家目录 |
(1)普通用户: | /home/用户名/ |
(2)超级用户: | /boot/ |
第7字段: | 登录之后的Shell |
# man 5 配置文件名 //获得 配置文件的帮助信息
10.1.2 影子文件
位置: /etc/shadow
第1字段: | 用户名 |
第2字段: | 加密密码 |
(1)加密算法升级为SHA512散列加密算法 | |
(2)如果密码位是"!!" 或 “*” 代表没有密码,不能登录 | |
第3字段: | 密码最后一次修改日期(使用1970.1.1作为标准时间) |
第4字段: | 两次密码修改时间间隔 |
第5字段: | 密码有效期 |
第6字段: | 密码修改到期前的警告天数 |
第7字段: | 密码过期后的宽限时间 |
第8字段: | 账号有效期(时间戳表示) |
第9字段: | 保留 |
# date -d "1970-01-01 当前时间戳 days" //将时间戳格式修改为公元纪年
# echo $(($(date --date="years/month/day"+%s)/86400+1)) //将公元纪年修改为时间戳格式
10.1.3 组信息,组密码文件
(1) 组信息文件位置: /etc/group
第一字段: | 组名 |
第二字段: | 组密码标志 |
第三字段: | GID |
第四字段: | 组中附加用户 |
(2)组密码文件位置: /etc/gshadow
第一字段: | 组名 |
第二字段: | 组密码 |
第三字段: | 组管理用户名 |
第四字段: | 组中附加用户 |
10.2.1 用户管理相关文件
1.用户的家目录
普通用户 | /home/用户名/,所有者和所属组都是此用户,权限是700 |
超级用户 | /root/,所有者和所属组都是root用户,权限是550 |
2.用户的邮箱
/var/spool/mail/用户名/
10.2.2 用户模板目录
位置: /etc/skel/
在此处创建的文件它会随着用户创建,立即在用户的家目录生成此文件
用途:可以写个警告信息.
十一. 其他权限管理
11.1.1 ACL权限
解决身份权限不够用问题.
发现dumpe2fs命令为ext文件系统家族的命令,我的系统为CentOS7,文件系统为XFS,XFS默认支持ACL:
# df -h //查看当前系统分区
# xfs_info /dev/xxx //查看xfs文件
# setfacl [选项] 文件名
/**-m设定ACL权限
* -x删除指定acl权限
* -b删除所有acl权限
* -d设定默认acl权限
* -k删除默认acl权限
* -R递归设定acl权限
*/
# setfacl -m m:rx 文件名 //修改最大权限.当用户权限与mask权限 与 为真,才是用户的真正权限
# setfacl -m g:tgroup2:rx 文件名 //让tgroup2组拥有读,执行的权限
# setfacl -m u:tgroup2:rx 文件名 //让tgroup2用户拥有读,执行的权限# getfacl 文件名 //查看文件acl权限
11.2.1 文件特殊权限(慎重操作!)
11.2.2 -SetUID
只有可以执行的二进制程序才能设定SUID权限
命令执行者要对该程序拥有x(执行)权限
命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
passwd命令拥有SetUID权限,所以普通可以修改自己的密码
详情
//设定SUID的方法
//4代表SUID
# chmod 4755 文件名
# chmod u+s 文件名//取消SetUID方法
# chmod 755 文件名
# chmod u-s 文件名
危险的SetUID
关键目录应严格控制写权限。比如“/”、“/usr”等
用户的密码设置要严格遵守密码三原则
对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限
11.2.3 -SetGID
只有可执行的二进制程序才能设置SGID权限
命令执行者要对该程序拥有x(执行)权限命令执行在执行程序的时候,组身份升级为该程序文件的属组
SetGID权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效
2/s代表SetGID
将所属组g权限临时提升
命令方式如11.2.2
11.2.4 -Sticky BIT
粘着位目前只对目录有效
普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限
如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一但赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件
1/t 代表Sticky BIT
将其他人o权限临时提升
命令方式如11.2.2
11.3.1 文件系统属性chattr权限
chattr - change file attributes on a Linux file system
# chattr [+-=] [选项] 文件或目录名 //+: 增加权限 -:删除权限 =: 等于某权限
/**
* 选项 (对root也生效)
* i:如果对文件设置i属性,那么不允许对文件进行删除、改名,
* 也不能添加和修改数据;
* 如果对目录设置i属性,那么只能修改目录下文件的数据,
* 但不允许建立和删除文件。
*
* a:如果对文件设置a属性,那么只能在文件中增加数据,
* 但是不能删除也不能修改数据;
* 如果对目录设置a属性,那么只允许在目录中建立和修改文件,
* 但是不允许删除.
*/# lsattr [选项] 文件名 //用于查看被chattr命令锁起来的文件属性
/**
* 选项:
* -a 显示所有文件和目录
* -d 若目标是目录,仅列出目录2本身的属性,而不是子文件的
*/
11.4.1 sudo权限
root把本来只能超级用户执行的命令赋予普通用户执行
sudo的操作对象是系统命令
如图指明 root用户允许在被管理的主机地址上 执行某条命令 .
虽然普通用户本身有vim执行权限,但绝不允许把vim命令赋予普通用户!
绝不允许把vim命令赋予普通用户!
绝不允许把vim命令赋予普通用户!
# visudo sc ALL=/sbin/shutdown -r now
//实际修改的是/etclsudoers文件
//管理员使用visudo给 sc用户赋予在任何一个ip(ALL)执行/sbin/目录下的shutdown -r now 命令
# su - sc //切换为sc用户,并修改成相应的环境
$ sudo -l //查看超级用户赋予的sudo命令
$ sudo /sbin/shutdown -r now //普通用户执行sudo赋予的命令
十二. 文件系统和分区操作
12.1.1 分区和文件系统
💜windows中可以识别的为: FAT16,FAT32,NTFS。
💜在Linux中可以识别的为: EXT2,EXT3,EXT4。
💜在centOS7 以后 选择XFS
💗主分区:总共最多只能分四个
💗扩展分区:只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多有四个。但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用。
💗逻辑分区:逻辑分区是在扩展分区中划分的,如果是IDE硬盘,Linux最多支持59个逻辑分区,如果是SCSI硬盘Linux最多支持11个逻辑分区
为什么CENTOS 7.0开始选择XFS作为默认的文件系统?XFS相比ext有什么优点?
12.1.2 文件系统常用命令df,du,lsblk
高访问量的服务器应当周期重启.减少未被释放的文件占用空间
选项 | # df [选项][挂载点] //文件系统查看命令 |
---|---|
-a | 显示所有的文件系统信息,包括特殊文件系统,如/proc、/sysfs |
-h | 使用习惯单位显示容量,如KB,MB或GB等 |
-T | 显示文件系统类型 |
-m | 以MB为单位显示容量 |
-k | 以KB为单位显示容量。默认就是以KB为单位 |
选项 | # du [选项][目录或文件名] //统计目录或文件大小 |
---|---|
-a | 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量 |
-h | 使用习惯单位显示磁盘占用量,如KB,MB或GB等 |
-s | 统计总占用量,而不列出子目录和子文件的占用量 |
# lsblk //查看磁盘分区
# df -h //查看进程,数据,文件使用情况总和
# fdisk -l //分区工具查看分区信息
# cfdisk /dev/sda //查看分区
# blkid //查看硬盘label(别名)
# du -sh ./* //统计当前目录各文件夹大小
# free -h //查看内存大小
12.2.1 文件系统修复命令fsck
选项 | # fsck [选项] 分区设备文件名 |
---|---|
-a | 不用显示用户提示,自动修复文件系统 |
-y | 自动修复。和-a作用一致,不过有些文件系统只支持-y |
12.3.1 光驱,移动硬盘等的挂载命令
🧡**(1)查询与自动挂载**
# mount -l //查询系统中己经挂载的设备,-l会显示卷标名称
# mount -a //依据配置文件letclfstab的内容,自动挂载
💛**(2)挂载命令格式**
选项 | # mount [-t 文件系统] [-L 卷标名] \ [-o 特殊选项] 设备文件名 挂载点 |
---|---|
-t 文件系统 | 加入文件系统类型来指定挂载的类型 |
-L 卷标名 | 挂载指定卷标的分区,而不是安装设备文件名挂载 |
-o 特殊选项 | 可以指定挂载的额外选项 |
特殊选项参数:
挂载u盘(自动识别)
64分区识别为fat
32分区识别为vfat
# fdisk -l //查看U盘设备文件名
# mkdir /mnt/usb //创建挂载点
# mount -t vfat /dev/sdb1 /mnt/usb/ //将设备文件sdb1挂载到/mnt/usb/
# umount /dev/sdb1 //卸载u盘
12.4.1 支持NTFS文件系统
下载并安装NTFS-3G插件
详情
12.5.1 fdisk分区
fdisk分区详情
fdisk自动挂载与fstab文件修复
1.查看硬盘分区情况
fdisk -l //查看硬盘分区情况
2.进入fdisk分区界面
fdisk /dev/sdb #对/dev/sdb下磁盘进行分区
给该盘分了一个512g的主分区
3.保存分区操作并退出
4.格式化文件系统
fdisk -l #查看磁盘分区情况
mkfs.ext4 /dev/sdb1 #格式化sdb1文件为ext4磁盘格式
5.创建挂载点,完成挂载
mkdir /mnt/wyj_p1 #创建挂载点目录
mount /dev/sdb1 /mnt/wyj_p1 #将sdb1设备挂载到wyj_p1目录下
lsblk -f #查看分区情况
6.设置永久自动挂载
vi /etc/fstab
十三.防火墙相关操作
firewall-cmd --state # 查看防火墙当前状态
systemctl start firewalld.service # 开启防火墙服务
firewall-cmd --zone=public --add-port=端口号/tcp --permanent #放行指定端口
systemctl restart firewalld.service # 重启防火墙
firewall-cmd --reload # 重新载入防火墙配置
firewall-cmd --list-ports # 查看所有开放的端口
firewall-cmd --query-port=端口号/tcp # 查看某个开放的端口
这篇关于近两个月整理的保姆级Linux常用命令(详略得当版),耗费近亿根头发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!