Linux基础整理操作

编程入门 行业动态 更新时间:2024-10-18 18:17:07

Linux基础整理操作

这是红帽7.2下的操作

Linux里一切皆文件,有且只有一个根目录。
执行Linux命令运行时通常会打开三个文件,标准输入文件,标准输出文件,标准错误文件。
bin:存放常用指令
dev:存放设备管理文件
etc:存放配置文件
home:存放普通用户
lib:动态连接库
media:识别多媒体设备
sbin:高级用户可以使用的指令
var:日志
user:用于存放用户的应用和文件
mnt:临时挂载点
seLinux:安全系统
boot:存放系统启动相关文件

Xshell 使用需要linux启动ssd服务,ssd监听22号端口,一般默认就是启动的。
登录方式: ssh 用户名@地址 回车等待,然后输入密码

在使用vim编辑时如果ctrl + s 了会导致卡在当前不动,因为ctrl + s
表示停止向终端的输出流,按ctrl + q即可恢复。

上传下载文件可以用Xftp软件,建立连接时要选sftp协议,因为ftp协议端口号是21,sftp是22

帮助指令

man [命令或配置]
man -k 关键字 根据关键字查找指令,按回车显示下一行,按空格显示下一页,q键退出
help 命令
统计/home文件夹下文件的个数
ls -l /home | grep “^-” | wc -l
统计/home文件夹及其子文件夹下文件的个数
netstat -antp | grep 端口号 查看该指定端口号是否在监听
ip add 查看IP地址
dhclient 获取一个ip
kill -9 进程号 无条件终止进程
killall 进程名 结束进程名(包括其子进程)的所有进程。

切换用户 su - redhat su-----switch user 交换用户 logout 注销
切换用户后返回之前的用户 exit

打印当前目录 Pwd 绝对路径。
id 用户名 查询用户信息

修改主机名:

hostname 主机名
hostnamectl set-hostname haha

修改用户密码:

passwd 直接敲是修改当前用户的密码,passwd maomao
修改别的用户密码在后面加用户名。
在输入密码的时候不会显示,但是已经输进去了。
root用户可以修改所有用户的密码,普通用户只能修改自己的密码;
root用户切换其他用户不需要密码,普通用户切换root用户需要输入root密码。
passwd -d root 删除该用户的密码。
也可以通过 echo 密码 | passwd --stdin 用户名 来修改密码

破解root密码

1.重启 reboot 按 e 进入救援系统
2.在linux16这段末尾 输入 空格 rd.break ctrl+X继续进行操作。
3.mount -o remount,rw /sysroot 重新挂载根
给/sysroot读写权限给根系统一个读写权限(现在只有读权限)。
4.chroot /sysroot 切换到真实的根下面
5.passwd root 修改密码(可以直接修改密码也可以删除密码。)
两次输入密码
6.touch /.autorelabel
7.exit
8.exit 然后等待

如果是centOS

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vsiSPDXp-1597575364736)(media/b2af9939b0a7df248002d3b5aca71c91.png)]

切换目录

绝对路径:路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
相对路径:路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man
底下时,可以写成: cd …/man 这就是相对路径的写法啦!

/root —>/home/redhat
相对路径: cd / ls cd home ls cd redhat ls
绝对路径: cd /home/redhat ls

~ 当前用户的主目录(家目录)
root /root
非root /home/用户名
cd 回到当前用户的家目录
. 当前目录
… 当前的上层目录

pwd

打印当前工作目录
-P :显示出确实的路径,而非使用连结 (link) 路径。
[root@www ~]# cd /var/mail <==注意,/var/mail是一个链接文件
[root@www mail]# pwd
/var/mail <==列出目前的工作目录
[root@www mail]# pwd -P
/var/spool/mail <==怎么回事?有没有加 -P 差很多~

ls 列出目录里面的内容

ls -l 长列表列出,详细 —》 ll
ls -a 查看隐藏文件 . …(以点开头的隐藏文件,当前目录和父目录都会显示)
ls -A 查看隐藏文件 不包括 . …目录。
ls -r 逆序列出
ls -d 查看目录属性
主命令 选项 作用对象(操作对象)
ls -a /home

通配符

含义

* 代表任意个数个字符
? 代表任意一个字符,至少 1 个
[] 表示可以匹配字符组中的任意一个
[abc] 匹配 a、b、c 中的任意一个
[a-f] 匹配从 a 到 f 范围内的的任意一个字符

关机

Shutdown 立即关机
Shutdown -h 1 表示1分钟后关机
Shutdown -r now:表示立即重启
init 0 关机
poweroff 关机
halt 关机
sync 把内存的数据同步到磁盘,关机前最好执行一次。

date 查看时间

date 显示当前时间
date +%Y/%m/%d 显示当前年月日
date +%H:%M:%S 显示时分秒
更改日期的格式 月日时分年秒
date -s //设置当前时间,只有root权限才能设置,其他只能查看
date -s 20190813 //设置成20190813,这样会把具体时间设置成空00:00:00
date -s 01:01:01 //设置具体时间,不会对日期做更改
date -s “01:01:01 2016-08-13″ //这样可以设置全部时间
date -s “01:01:01 20160813″ //这样可以设置全部时间
date -s “2019-08-13 01:01:01″ //这样可以设置全部时间
date -s “20190813 01:01:01″ //这样可以设置全部时间

clock 查看硬件时间 从bios系统里取时间
hwclock 查看硬件时间 CST 时间格式 中国标准时间 China Standard Time
-w 系统时间付给硬件时间
-s 硬件时间付给系统
ntpdate time.windows 同步网络时间

任务计划:

crontab [选项]
-e 编辑定时任务
-l 列出目前的日程表
-r 删除当前的日程表
-u 指定用户
时间格式:分时天月周 同一单位间用逗号隔,开也可以用-来表示范围x/n表示每隔n分之x执行一次。

cal 查看日历

基本上cal这个指令可以接的语法为: cal [month] [year]
所以,如果我想要知道2015年10月的月历,可以直接下达:
cal 10 2015
cal 2019 一个参数显示整年的日历

创建别名

alias haha=‘ls’ 给ls命令创建别名 haha
unalias haha 删除别名

保存别名到配置文件
~/.bashrc
nano .bashrc
alias haha=‘ls’
crtl+o 写入
enter 确定
crtl+x 离开
source .bashrc 让文件生效
exit

重新登录

haha 测试别名是否生效

文件类型:

1.-,普通文件。
2.d,目录文件,d是directory的简写。
3.l,软连接文件,亦称符号链接文件。
4.b,块文件,是设备文件的一种,b是block的简写。
5.c,字符文件,也是设备文件的一种,c是character的文件。

区块(block)设备文件:就是一些储存数据,以提供系统随机存取的周边设备,举例来说,硬盘与软盘等就是,你可以随机的在硬盘的不同区块读写,这种设备就是区块设备。

字符(character)设备文件:即是一些序列性的周边设备,例如键盘、鼠标等等!这些设备的特色就是“一次性读取”的,不能够截断输出。

l link 链接文件

1.符号链接文件 - >

符号链接文件是一个实实在在的文件,它指向存放在目录中的某个地方的另一个文件(原文件),这两个通过符号链接在一起的文件,彼此的内容不相同。(相当于Windows下的快捷方式)。

ln -s [源文件或目录] [ 软链接名] 查看文件的inode 号
删除软链接时文件名最后不要带/ 不然可能提示资源忙

2.硬链接
Linux文件系统中,多个文件名执行同一个索引节点(inode)是正常允许的(文件的多个有效的入口),这种情况的文件称为硬链接。

硬链接会创建独立的虚拟文件。其中包含原始文件的位置和信息,但是从根本上它们是同一个文件。

例: 源文件:haha创建硬链接

ln haha wahaha
通过大小和inode号判断是否是同一个文件

fhs 文件系统层级标准

boot 开机引导的文件
dev 设备目录
etc 配置文件目录
root root 的主目录
home 普通用户的主目录
mnt 挂载点目录
media 挂载点目录 多用于挂载多媒体文件
tmp 临时目录
var 存放可变文件的目录
bin 命令
sbin 与服务有关的命令

设备文件不能直接使用,如果要使用,那么设备和系统必须建立节点之后才能使用。节点就叫做挂载点目录,建立节点的过程叫做挂载。

查看历史指令

history 查看已经执行过的历史指令。
history n 查看后n个指令。
!n 表示执行历史编号为第n个的指令(感叹号与n之间没有空格)。

vi和vim文本编辑:

vim是vi的增强版
vim 也有创建文件的作用
命令模式:执行命令,不能写东西
按 i 或 a 进入插入模式 进行编辑
dd 删除当前行
yy 2yy nyy 复制 从光标算起,复制n行
p 粘贴 默认粘贴在光标的下一行
u 撤销
^r 恢复
gg跳转到文档首部
G跳转到文档尾部
dgg删除到文档首
dG删除到文档末
x删除光标所在位置的内容
cc剪切

末行模式:(Esc键退出插入模式,按 :进入末行模式)

:wq 保存退出
:w 保存
:q 退出
:wq! 强制保存退出
:q! 强制退出
:set nu 显示行号
:set nonu 取消行号
:4,7 d 删除指定的行
/ 字符串 查找指定的字符串
:%s/zs/lucy 替换(先删除指定内容,再补充。)
:r /root/haha 读取指定的文件内容

touch创建文件

创建一个普通的空文件 改变文件的时间(touch已存在文件会改变文件修改时间)
命名只要不写特殊的名字都可以创建(/,已存在的)不超过255字符
touch haha 在当前目录下创建haha
touch /home/redhat/haha 在指定目录下创建文件
touch 文件1 文件2 同时创建多个文件

编辑文件

将屏幕内容重定向到文件。
> 重定向 将内容写入文件,并覆盖已有内容
echo 112124 >haha
>> 追加重定向 将内容添加写入文件,不覆盖已有内容
echo 1221 >>haha

查看文件内容

cat [参数] 文件名   查看文件中的内容,以只读的方式。

cat haha
cat haha >jack 将haha内容写入到jack中
cat -n haha 显示行号-b显示行号不给空白行标号
/dev/null 黑洞机制

​ 如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到/dev/null cat haha >/dev/null

tac haha 逆序显示
分页显示:按空格翻页,q退出,less会根据需只加载要显示的内容,适合查看大文件。
more /var/log/messages 逐行显示文件内容(查看日志文件 支持向后翻阅 enter)
less /var/log/messages 支持前后翻阅 上下键
man手册默认调用less命令打开

echo [选项] [内容] 将内容输出到控制台。

head /etc/passwd 打开文件的头几行,默认是前10行
head -n 表示可以指定行数 前n行
tail 打开文件的后几行,默认是后10行
tail -n 后n行。
tail -f 实时追踪该文档的所有更新,工作中常用。

普通文件的删除

rm (移除文件或目录) ,删除非空目录时需要递归删除。
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!
rm 文件名 删除该文件
rm -f haha 强制删除haha文件

操作目录

mkdir xixi 在当前目录下创键xixi目录
mkdir /home/test 创建指定目录
mkdir -p 同时创建多级目录
mkdir -pv a/b/c/d
rmdir (删除空的目录)
rmdir -p /a/b/c 即可删除目录a,rmdir只能用来删除目录。
-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。

复制

cp (复制文件或目录)
cp[参数] 源文件 目标文件
cp haha /test
复制当前目录里面的haha文件到/test下,/test为一个目录,复制后/test目录下会有一个haha文件。
cp haha /test/hehe 复制当前目录里面的haha文件到/test下并重命名为hehe
cp /test/hehe /home/redhat 复制普通文件
cp -r /test /home 复制目录文件,递归复制
cp -p haha /test 保留源文件的属性,包括所属主、所属组、权限、时间

如果目标文件下已经存在要复制的文件系统会提示你是否覆盖,也可以直接在开头写 \cp
源文件 目标文件 强制复制,不提问。

cp指令用在复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息。

MV(移动文件与目录,或修改名称。): 和Windows下的剪切差不多。
mv hehe /test 把hehe文件移动到/test目录下
mv aa bb 文件aa重命名为bb

文本切割

cut 截取文件内容
-d 指定分隔符 分隔符为空格" "时需要用引号,其他符号不需要。
-f 截取的列数 1(第一列) 1,4(一和四列) 3-7(三到七列)
–output-delimiter= 改变输出的分隔符
cut -d : -f 1,6 - -output-delimiter=@ /etc/passwd

文本排序

sort
sort haha 排序 按照数值排序 一位一位
sort -n haha 按照大小排序
sort -n -u haha 大小 排序并 去重
sort - r 逆序排序
uniq haha 去重
默认隔行重复的不算重复 挨着重复的算真正的重复
/etc/passwd 文件的第三列 是用户的uid号。
按照用户的uid号从小到大排列
sort -t : -k 3 -n /etc/passwd

文本统计

wc—word count统计指定文件中的字节数、字数、行数,并将统计结果显示输出
wc /haha
4 12 37 s 每一行末尾默认有一个换行符 \n
行数 单词数 字节数 文件名
-l -w -c
-L 最长的一行有多少字符,不算换行符
在utf-8编码格式里面,(显示时)一个英文字符占一个字节,一个中文的字占用3个字节。

| 管道符

A | B
B命令的作用参数为A命令的执行结果

tee

读取标准输入的数据,并将其内容输出成文件
补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
cat haha >hehe hehe文件有haha文件的内容
cat haha | tee hehe hehe 文件和 屏幕 都有haha 文件的内容

文件或目录查找

find [搜索范围] [选项]
选项: -name根据文件名查找 -user查找属于指定用户的文件 -size查找指定大小
find / -name passwd 在根目录下查找文件passwd,也可以用通配符
find / -size +20M 表示在/下查找大于20M的文件,-表示小于,不写表示等于。
利用find命令来删除文件,有时候会出现文件名乱码,或者有特殊符号,导致无法使用文件名对其进行删除。
这时我们利用find命令加文件lnode号进行删除。
find ./* -inum 1049741 -delete
可以用locat 文件名
来快速定位文件位置,但需要先执行updatedb表示创建或更新locate数据库。

过滤文件内容

grep 查找文件里符合条件的字符串–>行匹配器
grep h haha 查找haha文件里面带h的字符串
grep h ./*
过滤当前目录下的所有文件是否包含h,,,默认滤过目录文件,但是会有提示。
grep -r h ./* 明确要求搜索字目录,不忽略目录文件
grep -d skip h ./* 明确略过目录,忽略子目录。
grep -w hehe haha 只匹配完整的单词,而不是字符串的一部分。
grep ^[h] haha 匹配haha文件以h开头的行
grep h$ haha 匹配haha文件以h结束的行
grep ^[0-9] haha 匹配haha文件以0-9某个数字开头的行
grep ^[13as] haha 匹配haha文件以1,3,a,s某个字符开头的行。

​ -i 表示忽略大小写。

文本压缩:

压缩 解压 归档
压缩格式:gz bz2 xz zip z

Linux上最流行的压缩工具 gzip GNU的产物 .gz
gzip 用来压缩文件,源文件消失。
-d 等同于gunzip
-# 压缩比1-9 默认为6
gunzip 用来解压文件 .gz
zcat 用来查看压缩过的文本文件的内容。

bzip2 .bz2
-d 解压缩
-# 压缩比1-9 默认为6
bcat 查看压缩的.bz2的文件内容
xz .xz

-d 解压缩
-# 1-9 压缩比 默认为6
-k 压缩时保留源文件

xzcat 不解压直接查看压缩格式的文本文件

zip 默认不删除源文件

zip mm.zip file1将file1压缩成mm.zip
-r 递归压缩
-d 指定将文件压缩到哪个目录。

unzip -d /home/ mm.zip 将mm.zip解压到/home下

tar

语法: tar [主选项+辅选项] 文件名
主选项:
c— create 创建一个新的归档文件(压缩)
x— 解压 把文件提取出来
t—不提取文件,查看归档文件
辅选项:
v— 过程中显示文件
f— 输出结果到文件或设备上
j— 压缩内容 (.bz2)
J----压缩内容 (.xz)
z— 压缩内容 (.gz)
p— 保留源文件的属性
-zcf 调用gzip归档并压缩
-zxf 调用gzip解压缩并还原归档
-jcf 调用bzip2归档并压缩
-jzf 调用bzip2解压缩并还原归档
-Jcf 调用xz归档并压缩
-jxf 调用xz解压缩并还原归档
该命令会自动判断归档文件的压缩格式,自动调用相关程序进行压缩

tar cvf 归档的目标文件 要归档的源文件1
要归档的源文件2。。。或者直接跟一个目录表示目录下的所有文件的压缩。
tar -zcvf a.tar.zip a1.txt a2.txt
tar -tf ceshi.tar 查看文件
查看压缩文件
tf
tar -zxvf a.tar.zip -c /home/
将a.tar.zip解压到/home/指定的解压目录必须是存在的。

文本传输:
scp
scp root@172.16.20.209:/root/haha /maomao 下载
scp /root/s root@172.16.20.209:/test 上传

进程管理

ps
-e显示后台进程
-f显示详细信息
pstree
-p 以树状形式显示进程的PID
-u 以树状形式显示进程的所属用户

  1. 运行(正在运行或在运行队列中等待)

  2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)

  3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)

  4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)

  5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
    ps工具标识进程的5种状态码:
    D 不可中断 uninterruptible sleep (usually IO)
    R 运行 runnable (on run queue)
    S 中断 sleeping
    T 停止 traced or stopped
    Z 僵死 a defunct (”zombie”) process
    < 高优先级
    N 低优先级
    L 有些页被锁进内存
    s 包含子进程

    位于后台的进程组
    l 多线程,克隆线程
    最常用的方法是ps-aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。

1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有程序。
3)ps c列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u 以用户为主的格式来显示程序状况。
13)ps x 显示所有程序,不以终端机来区分。

服务管理

服务的本质就是进程,但是运行在后台,通常会监听某个端口,等待其他程序的请求。
service 服务名 start|stop|restart|reload|status 此处 |
表示或,整个命令表示对服务名进行某个操作在centOS7.0后将service写成systemctl,该命令立即生效且在重启后失效。

centOS7后如果不能使用则用 systemctl list – unit -files

动态监控进程

top [选项]

与ps很像,不过显示出来的内容会动态更新(间隔3s),按q退出,按u来输入用户选择查看,按k选择要kill的进程。

-d 以cpu使用率排序,默认(即不写参数)就是此项
-M 以内存使用排序
-p 以PID排序

查看系统网络服务情况
netstat -anp查看所有的网络服务

用户和组的管理

用户:
/etc/passwd 存放用户信息
redhat: x: 1000: 1000: redhat: /home/redhat: /bin/bash 交互工具
用户名 密码 uid gid 备注 用户的主目录 shell交互时用的shell
-u -g -c -d -s
用户:密码:uid:gid:备注(可以不写):用户家目录:shell工具(用户和系统交互时用的工具)-G用户的附加组
root -------超级用户
系统用户 --------用来管理和运行服务,默认不让登录 /sbin/nologin
普通用户 -------自己创建的用户,如:Redhat,maomao
添加(创建)用户:
useradd (adduser) 用户名 (如果不指定组,会分配一个同名(同uid)的私有组。)
useradd zhang -u 6666 -g redhat -G csa -c maomao
-u uid
-g gid 基本组id
-G 指定附加组
-c 备注
-s 修改shell
-r 系统用户
不允许登录:useradd -s /sbin/nologin 用户名
-c comment 给新用户添加备注
-d home_dir 为主目录指定一个名字(如果不想用登录名作为主目录名的话)
-e expire_date 用YYYYY-MM-DD格式指定一个账户过期的日期
-f inactive_days
指定这个帐户密码过期后多少天这个账户被禁用;0表示密码一过期就立即禁用,-1表示禁用这个功能
-g initial_group 指定用户登录组的GID或组名
-G group … 指定用户除登录组之外所属的一个或多个附加组
-k 必须和-m一起使用,将/etc/skel目录的内容复制到用户的HOME目录
-m 创建用户的HOME目录
-M 不创建用户的HOME目录(当默认设置里指定创建时,才用到)
-n 创建一个同用户登录名同名的新组
-r 创建系统账户
-p passwd 为用户账户指定默认密码
-s shell 指定默认登录shell
-u uid 为账户指定一个唯一的UID

同样,你可以用-D参数后面跟一个要修改的值的参数,来修改系统默认的新用户值。这些参数如下表: 参数 描 述

-b default_home 更改默认的创建用户HOME目录的位置
-e expiration_date 更改默认的新账户的过期日期
-f inactive_days 更改默认的新用户从密码过期到账户被禁用的天数
-g group 更改默认的组名称或GID
-s shell 更改默认的登录shell
修改用户信息:usermod
usermod -a -G haha maomao 修改并追加附加组
-a 将用户追加至上边
-G 中提到的附加组中,并不从其它组中删除此用户。
usermod -c bieming maomao 给maomao用户添加别名

修改用户家目录:
useradd -d /maomao maomao 在创建用户的时候直接修改
useradd maomao 创建maomao用户
usermod -d /maomao maomao 修改maomoa的家目录
此时切换maomao用户时无法正常进行,根下没有maomao目录和隐藏文件隐藏目录。
mkdir /maomao 创建根下的maomao目录如果要创建多层目录可以跟 -p
cp /etc/skel/.bash* /maomao 复制用户隐藏文件到根下的maomao。
cp /etc/skel/.mozilla/ /maomao -r 复制用户隐藏目录到根下的maomao
可以正常切换至maomao用户。

删除用户:
userdel 用户名
userdel -r doudou
-r代表同时删除创建用户时分配的主目录和邮箱(家目录/home,邮箱/var/mail)
在实际生活中一般不用,因为他的家目录里可能有给公司写的代码和文档

组:

/etc/group
maomao: x: 1000: maomao 当前组里的用户
组名 密码 gid(唯一标示组)

私有组:当创建一个用户时,如果没有为这个用户指定基本组,那么用户会自动为自己分配一个同uid的私有组。

基本组:
附加组:除基本组之外,用户还可以被分配到其他组。
工号—uid 工位 —私有组 进项目组 gid 管理层 附加组
创建组:
groupadd -g 6666 csa
登录组:
newgrp 组名
修改:
groupmod aa
删除:
groupdel

groupdel只能删除以groupadd添加的组。私有组只能通过移除用户来实现。

id haha 查看haha用户的分组情况

用户加组:

gpasswd 组名 给组设置密码

gpasswd -a maomao zu1(组名) 给用户添加组

gpasswd -M xixi,haha,maomao zu2 指定列表的形式将多个用户添加到组

usermod -G zu1 maomao 给maomao用户添加附加组

vim /etc/group 修改配置文件,将用户名添加到组的配置文件中。

gpasswd -A maomao 指定组长

gpasswd -d haha zu1 将haha用户从zu1中移除

gpasswd -R zu1 锁定指定组,只有组内成员才能进入本组

用户的密码文件

useradd haha

/etc/shadow

redhat:$6$zPxteXgQiyxOKCSZ$Ny::0:99999:7:::

用户名

password 加密后的密码,格式为$1$???$* !!或者* 账户锁定 salt

最后一次修改时间 从1970年1月1日到最后一次密码改变的时间所经过的天数

密码最短使用期限 为0表示不限制
密码最长使用期限 密码使用多长时间之后必须要改密码,99999表示可不更改
密码过期警告时间 密码过期前多少天进行警告,提示用户改密码,但是不锁定用户
密码过期宽限期限 密码过期后必须改密码的时间,如果还没改,锁定用户,就只能找网管了
账号过期精确时间 如果为99999,意味着永不过期

不让使用保留字段

passwd :给用户修改密码

echo 1234 | passwd - -stdin haha

-n 指定密码的最短使用期限

-x 指定密码的最长使用期限

-w 警告时间,在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)

-i 宽限时间,当密码过期后经过多少天该帐号会被禁

给组修改密码gpasswd

用户的属主和属组:

rw-r–r--. 1 root root 34 1月 19 10:30 haha

文件类型 硬链接次数 属主 属组 文件大小 时间 文件名

更改文件的所属关系

chown maomao(用户名) /test/a 修改a文件的属主为maomao

chown 既能修改所属主也能修改所属组

chown redhat:dd haha 修改haha文件的所属用户为redhat和所属组为dd

chown :maomao b 修改b文件的所属组为maomao

chown -R tom a/ 将a目录下的所有文件和目录的所属者改为tom

chgrp csa haha 修改属组

chgrp 只能修改所属组

chgrp -R dirname/filename

-R :
进行递归(recursive)的持续变更,亦即连同子目录下的所有文件、目录都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。

chown -R 帐号名称:群组名称文件或目录 选项与参数:

​ -R:进行递回(recursive)的持续变更,亦即连同次目录下的所有文件都变更

例:将initial-setup-ks.cfg 的拥有者改为bin这个帐号:

chown bin initial-setup-ks.cfg

-rw-r–r--. 1 bin users 1864 May 4 18:01 initial-setup-ks.cfg

例:将 initial-setup-ks.cfg的拥有者与群组改回为root:

chown root:root initial-setup-ks.cfg

-rw-r–r--. 1 root root 1864 May 4 18:01 initial-setup-ks.cfg

运行级别在/etc/inittab下

0.关机

1.单用户

2.多用户无网络服务

3.多用户有网络服务

4.保留

5.图形界面

6.重启

init 级别 切换级别也可以通过vim编辑/etc/inittab中的default id值

权限:

接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r
]代表可读(read)、[ w ]代表可写(write)、[ x ] 代表可执行(execute)。
要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

每个文件的属性由左边第一部分的10个字符来确定(如下图)。

从左至右用0-9这些数字来表示。

第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。

第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。

其中,第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;

第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-“字符表示没有写权限;第3、6、9位表示可执行权限,如果
用"x"字符表示,则有执行权限,如果用”-"字符表示,则没有执行权限。

rw- (自己) r-- (同组的人) r-- 644

user 所属者 group 所属组 others 其他人

文件 -

r:读权限read cat head ls 4

w:写权限write vim nano echo >> > 2

x:执行 1

目录文件:d

权限支持相加减:

权限掩码 umask 控制创建文件的权限

普通文件权限属性666(文件只需要读写,不需要执行。)

目录文件权限属性777

修改文件的权限:

chmod:

chmod 644 haha 数字后面直接跟文件名

chmod u-w haha

chmod u+w haha

chmod o=rwx haha

chmod o=— haha

** 特殊权限**:

** 强制位**

1、 set uid ## suid 使进程属主不再属于发起者,而是属于程序本身。

which (passwd) 查看命令程序包文件位置

passwd是一条命令,也是一个软件包,fhs里面说过,所有的命令存放在bin里面,即/usr/bin

查看passwd文件详细信息,会发现有一个特殊权限s。

删除passwd特殊权限s,切换到普通用户进行修改密码,循环输入新的密码,已经无法对
passwd的文件进行修改。

passwd程序文件属主为root,当root用户运行时进程属主为root,当其他用户运行时属主属
于用户自己(maomao)。

运行后需要调用/etc/shadow文件,/etc/shadow文件属主为root,当其他用户(maomao)运行
passwd时属主为maomao 无 法调用/etc/shadow,所以会出现程序无法正常运行。

特殊权限s,会让其他用户在运行时,进程的属主伪装成root。(进程的属主变为程序文件
本身)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3sWbtHjM-1597575364774)(media/63c8057e909eafc93b8ebc21c72113fe.png)]

冒险位

sticky(o的x位置上使用一个t)只能对目录设置

对目录作用:

默认情况下,如果一个目录o上有w和x权限,则任何人可以在此目录中建立与删除文件。一旦目录上设置了冒险位,则表示
在此目录中,只有文件的拥有者、目录的拥有者与系统管理员可以删除文件。其他用户则不能。

注意:直接在文件上面设置冒险位是没有作用的,冒险位要创建在目录上面

强制位和冒险位的表现方式:

强制位与冒险位添加在执行权限的位置上,强制位使用S和s来表示,冒险位使用T和t来表示。如果该位置上原已有执行权限,则强制位与冒险位以小写字母的方式表示。否则,以大写字母表示。即:

S:表示该位没有x位 s: 表示该位有x位

T:表示该位没有x位 t: 表示该位有x位

Ps:如果在强制位中S为大写,则表示相应的执行权限位并未被设置,这是一种没有用处的suid设置可以忽略它的存在。

设置强制位和冒险位

1:通过+,-设置强制位和冒险位

对于用户: # chmod u+s filename

​ # chmod u-s filename 对文件取消强制位

对于组: # chmod g+s filename

冒险位: # chmod o+t dir

网卡配置:

1.进到网卡的配置文件 静态写ip

vim /etc/sysconfig/network-scripts/ifcfg-eno16777736

TYPE=Ethernet 以太网

BOOTPROTO=static
地址获取方式配置参数(DHCP:动态方式获取地址;static:静态方式;none:不指定)

ONBOOT=yes 是否开机自启网卡

IPADDR=1.1.1.1        静态地址
IPADDR1=1.1.1.2        备份静态地址
NETMASK=255.255.255.0     网络掩码netmask
GATEWAY=1.1.1.254      网关gateway
	DNS=网关					与网关一致

重启网络服务: systemctl restart network

重启网络服务,会发现xshell连接断开,大家想想这是为什么,就是因为我们刚写的新地址生效了,前面我们用ssh连接的时候用
的是DHCP自动获取的动态地址,现在使用的是刚写进去的静态地址,所以用新地址重新连一下就好了。

这个方法就是进入配置文件直接编写网卡配置。

2.nmcli 进入nmcli 模式然后进行网络配置

nmcli connection edit 网络配置之链接编辑模式

输入链接类型

e ( ethernet 选项以太网类型)

go ipv4 去到ipv4

set addresses /24 设置ip地址及掩码

set gateway 设置网关

save 保存

activate eno-1 激活网卡

IP地址发生改变,当前ssh断开,用新的地址链接就好了。

磁盘管理:

标准分区(mbr):
一块磁盘我们总共可以分为4个分区,可以是4个主分区,也可以把某个分区作为扩展分区,在扩展分区上可以创建多个逻辑分区。

gtp分区:支持无限多个主分区。

df [参数] [目录或文件名] :列出文件系统的整体磁盘使用情况 df -h

du [参数] [文件或目录] :查询指定目录的磁盘占用情况 du -h

fdisk:用于磁盘分区

lsblk -f 查看磁盘挂载情况

fdisk -l

fdisk /dev/sda 创建分区

n 新建分区

p /e 选择分区类型 主分区/扩展分区

选择分区大小

e 新建扩展分区

选择分区的开始点和结束点 sda5

p 查看分区情况
n 新建逻辑分区 n sda6

选择开始点 选择结束点(+2G)

w 保存

p 查看分区

fdisk -l 打印分区列表

partprobe 重新加载磁盘分区

mkfs ext4 /dev/sda5 添加文件系统 格式化磁盘 ext4文件系统格式

mount /dev/sda5 /test 挂载到test

touch /test/haha 新建haha文件,文件在sda5中,

umount /test umount /dev/sda5 卸载

mount /dev/sda5 /aa 重新挂载到别的目录下

ll /aa 查看,haha文件存在

文件是写在磁盘上的,跟目录无关,挂载在哪里,就能在哪里看见。

reboot 重启

ll /aa haha文件不存在 ,未永久挂载

永久挂载:

vim /etc/fstab 编辑 /etc/fstab

uuid 挂载目录 文件系统格式 default(参数) 备份0 检查0

UUID=7441d9eb-4255-42ca-8192-07c1f78a959d /maomao ext4 defaults 0 0

reboot ll /maomao

查看分区的uuid

blkid

ll /dev/disk/by-uuid

LVM: 逻辑卷管理。

由于传统的磁盘管理不能对磁盘进行磁盘管理,因此诞生了LVM技术,LVM技术最大的特点就是对磁盘进行动态管理。由于LVM的逻辑卷的大小更改可以进行动态调整,且不会出现丢失数据的情况。

LVM管理的方式非常简单,就是通过将底层的物理磁盘抽象并封装起来,然后以逻辑的方式呈现给上次应用。

逻辑卷管理的三个概念:

PV(physical volume)物理卷

VG(Volume Group)卷组

LV(Logitech volume)逻辑卷

过程:

1、挂载物理磁盘。

2、将物理磁盘初始化为物理卷PV。

3、将一个或多个物理卷PV转变为一个卷组VG。

4、从VG中创建逻辑卷。

5、根据实际需要将逻辑卷挂载使用。

6、根据需要对磁盘or逻辑卷进行扩展和缩减。

PE(physical extend)物理扩展

其实格式化物理卷的过程就是LVM将底层的磁盘划分为一个一个PE的过程,

PE 默认大小为4M,可以说是LVM管理的基本单位。

添加一块磁盘

进行分区

更改分区类型

fdisk /dev/sdb

t 选择分区号更改分区类型

1/2…. 选择分区1或2

8e 将分区号改为8e(Linux LVM)类型

p 打印分区查看

w 保存退出

partprobe 加载磁盘

fdisk -l 查看分区 sdb1/2 LVM格式

接下来创建物理卷:

pvcreate /dev/sdb1 将/dev/sdb1创建为物理卷

创建卷组:

vgcreate mingzi /dev/sdb1将物理卷/dev/sdb1 创建成叫mingzi的卷组

vgdisplay 查看卷组信息。

vgextend 添加PV到vg

创建逻辑卷:

lvcreate -L 2G -n 逻辑卷名 卷组名 将卷组名中的2G添加到逻辑卷,-L 指定大小,-n
逻辑卷名字。

给逻辑卷安装文件系统:

mkfs.xfs /dev/mingzi/lv0 将/dev/mingzi/lv0 逻辑卷格式化成xfs格式。

创建挂载目录: mkdir /目录名

挂载: mount /dev/mingzi/lv0 /xixi 将/dev/mingzi/lv0 挂载到/xixi

未永久挂载。

扩充:

xfs格式扩充:

1、卷组空间充足,直接扩充lv逻辑卷:

lvextend -L 3G /dev/mingzi/lv0 将逻辑卷lv0 扩充到3G大小。

在这之后需要重新安装文件系统和挂载,在这里有个文件包,可以直接完成这一步。

xfs_growfs /dev/mingzi/lv0 同步文件系统。相当于重新格式化文件系统。

前面我们文件系统格式是xfs,所以这里使用xfs文件包直接完成。

2、卷组空间不足,先将物理卷添加到卷组

pvcreate /dev/sdb2 创建物理卷

vgextend mingzi /dev/sdb2 将新创建的物理卷添加到mingzi卷组里面。

lvextend -L 6G(+3G) /dev/mingzi/lv0 将逻辑卷lv0扩充到6G大小。

xfs_growfs /dev/mingzi/lv0 同步文件系统。相当于重新格式化文件系统。

删除:

pvremove 删除pv

vgremove 删除vg

lvremove 删除lv

ext4格式扩充:

扩充过程不支持挂载,必须先先卸载再扩充。

umount /xixi 卸载

mkfs.ext4 /dev/mingzi/lv0 修改格式)

lvextend -L 6G /dev/mingzi/lv0 扩充lv0逻辑卷

同步文件系统。

​ resize2fs /dev/vg0/lv0

安装:

就是给Linux里面安装软件,这里有三种方法,rpm,yum和源码安装。

1.rpm方式安装

rpm命令是RPM软件包的管理工具。

在我们安装的Linux光盘镜像里面,一般常用的软件包都有,我们直接拿过来安装就可以了,这里在安装的时候我们首先要挂载,把光盘挂载在目录下面,这样我们才能看见里面的东西。

1、 挂载: mount /dev/sr0 /mnt
光盘设备叫sr0,我们给他挂载在/mnt,这个目录是fhs层级里面标准的,也可以挂载当然也可以挂载其他位置。

cd /mnt/Packages packages 里面存放的就是安装包,我们可以cd进去看一下。

rpm软件包的全路径在/mnt/Packages/下,所以安装时,如果不在该目录下,需要写全路径。

rpm -ivh 包名.rpm 安装 i表示安装,v表示列出安装过程,h表示安装时列出标记。

rpm -e (–nodeps) 包名 卸载,只需要写包名就可以了,加–nodeps是有依赖也强制删除。

rpm -qa 查看系统上安装了哪些rpm包

rpm -qa | grep tree 查看是否安装了tree包

rpm -ql 包名 装包时装了什么文件

rpm -qf 文件名 查看文件由哪个安装包产生

用rpm安装包的时候可能会出现依赖检测失败,提醒需要另外一个包,这时多个包同时安装就可以了。

2.yum方式安装 自动检测依赖关系,自动找到包的路径(解决rpm
中无法解决的依赖关系问题)

首先我们要有一个仓库,来存放这些依赖关系,在需要的时候直接调用。

1.挂载 mount /dev/sr0 /mnt

2.创建源配置文件

仓库目录 /etc/yum.repos.d 源配置文件目录;创建本地源文件 网络源配置文件

vim base.repo 创建一个本地源配置文件(解决本地光盘镜像依赖关系),以.repo结尾
,表示是个源。

[base] 源标识(这里就是起个名字,可以随便写),起一个标识性作用。

name=base 源名称(这里名字也是随便起,我们这里统一写成base)

baseurl=file:///mnt
包的路径,我们这一堆包要去哪里才能找到。光盘协议file://,路径/mnt。

enabled=1 表示启用该源,7.2版本默认启用。

gpgcheck=0 不校验

因为在源配置文件里已经写明了软件包的路径,所以在安装时只需要写包名就可以了,不需要再写绝对路径。这是rpm和yum在安装过程很大的一个区别,需要注意一下。

上述为本地源配置文件,网络源和本地源写法一样,只是更改路径,写成网络源地址链接。

3.常用命令

yum install 包名 -y 安装,安装时如果不指定版本则默认安装最新版。

yum remove 包名 -y 卸载

yum list | grep 软件名 查询yum服务器是否有需要安装的软件

列出所有可更新的软件清单命令:yum check-update

更新所有软件命令:yum update

仅安装指定的软件命令:yum install <package_name>

仅更新指定的软件命令:yum update <package_name>

列出所有可安裝的软件清单命令:yum list

删除软件包命令:yum remove <package_name>

查找软件包 命令:yum search <keyword>

清除缓存命令:

yum clean packages: 清除缓存目录下的软件包

yum clean headers: 清除缓存目录下的 headers

yum clean oldheaders: 清除缓存目录下旧的 headersyum clean, yum clean all (= yum
clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers

.源码安装

mkdir /ruanjian

mv tar-1.29.tar.gz /ruanjian/

tar xvf tar-1.29.tar.gz 用系统原有的tar工具解压

yum remove tar 把系统原有的tar工具移除

cd tar-1.29/ 去到解压后的目录里面

./configure 检测需要什么编译环境

yum install gcc* -y 安装c的编译环境

./configure 再次检查

make 在解压后的目录里面 编译

make install 安装

which tar 查看tar命令文件包位置。

tar xvf tree-1.7.0.gz 这里无法解压,因为缓存里有系统的tar的路径

hash / usr/bin/tar

hash -r 清空哈希表

tar xvf tree-1.7.0.gz 再次验证,用/usr/local/bin/tar

也就是源代码的tar,随意验证一个压缩包,看是否可以解压.

CentOS7防火墙常用配置

firewall-cmd --permanent --add-port=1234/tcp
永久添加1234端口到防火墙
systemctl start firewalld 启动防火墙
systemctl enable firewalld 防火墙开机自启
systemctl stop firewalld 关闭防火墙
systemctl disable firewalld 取消开机启动
service firewalld restart 重启防火墙

更多推荐

Linux基础整理操作

本文发布于:2023-06-14 09:57:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1463074.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:操作   基础   Linux

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!