当前位置: 首页 > news >正文

RHCSA知识点汇总

1.操作系统是什么:操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是配置在计算机硬件上的第一层软件,任何其它软件都必须在操作系统的支持下才能运行。
2.操作系统的主要功能:是为管理硬件资源和为应用程序开发人员提供良好的环境来使应用程序具有更好的兼容性,为了达到这个目的,操作系统内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用的接口(应用编程接口API,由操作系统实现提供的所有系统调用所构成的集合,是应用程序和系统之间的接口)呈现给用户。系统调用把应用程序的请求传给内核,调用相应的内核函数完成所需的处理,将处理的结果返回给应用程序。
3.操作系统内核的功能: 系统调用接口
程序管理
内存管理,虚拟内存—内存交换
文件系统管理
设备驱动
4.Linux的安装准备工作:windows是64位操作系统
确认电脑开启虚拟化功能bios
内存最少2G
退出或者卸载一系列安全软件
需要的环境:虚拟化软件(虚拟工具),用于创建虚拟机
安装远程连接工具
创建虚拟机
5.在虚拟机上安装Linux操作系统: 软件选择按钮为安装带GUI的服务器—KDE
安装位置按钮为我要配置分区,分区方式如下:
/boot为200MB
/为20000MB
swap为2000MB
设置root用户(管理员)的密码并且创建普通用户
安装完操作系统之后,做快照
6.终端:称为终端设备,是计算机网络中处于网络 最外围的设备,主要用于用户信息的输入及处理结果的输出
7.虚拟终端:是同一台终端(物理设备)上虚拟出多个终端,这些终端就是虚拟终端,它们之间互相不影响,默认有6个,可通过ctrl + alt +f[1/2/3/4/5/6]来进行切换
8.在终端窗口输入命令,命令格式:主命令+选项+参数(操作对象)
9.使用命令重启和关闭Linux操作系统:重启,reboot,shutdown -r now; 关机,shutdown -h now,poweroff
10.查看当前Linux的发行版本:cat /etc/redhat-release
11.查看内核版本:uname -r
12.查看Linux系统的时间:date(软件,系统时间)
13.更改日期的格式: date -s 只有root才能设置,其它只能查看
date -s 20160813 日期为20160813,时间为00:00:00
date -s 01:01:01 设置具体时间,不会对日期做更改
date -s “01:01:01 2016-08-13″ 设置全部时间
date -s “01:01:01 20160813″ 设置全部时间
date -s “2016-08-13 01:01:01″ 设置全部时间
date -s “20160813 01:01:01″ 设置全部时间
14.查看硬件时间: clock
hwclock -w 系统时间给硬件时间
hwclock -s 硬件时间给系统时间
15.查看日历: cal
cal 查看当年当月的日历
cal 年份 查看一年日历
cal 月份 年份 查看当年当月的日历
cal -1 查看该月的日历
cal -3 查看前一个月,本月,下月的日历
16.使用dhcp获取ip地址:dhclient
17.查看ip地址:ip a
18.强制终止进程:kill -9 进程号
19.使用远程连接工具连接服务器:ssh ip地址,ssh 用户名@ip地址
20.命令提示符[root@localhost ~]#的含义:[用户名@主机名 工作目录],#代表root用户的提示符,$代表普通用户的提示符
21.切换用户更改命令提示符的用户名(switch user):su - 用户名
22.修改主机名:hostname或者hostnamectl set-hostname 主机名
23.查看当前的工作目录(print work directory):pwd
24.更改当前的工作目录,即切换目录(change directory):cd
绝对路径(以/开始的路径):cd /home/redhat
相对路径(不是以/开始的路径):cd /;cd home;cd redhat
25.直接回到当前用户的主目录:cd ~
回到当前目录的上一级目录:cd …
回到当前目录:cd .
切换到之前的目录:cd -
26.修改密码:password,passwd
27.删除密码:passwd -d 用户名
28.密码忘记后,破解密码: 1.Reboot the system.
2.Interrupt the boot loader count down by pressing anykey.
3.Move the cursor to the entry that needs to be booted.
4.Press “e” to edit the select edentry.
5.Move the cursor to the kernel command line(the line that start swith linux16.
6.Append rd.break
7.Press Ctrl+x to start.
8.Remount /sysroot as read-write.
switch_root:/# mount -o remount,rw /sysroot
9.Switch into a chroot jail, where /sysroot is treated as the root of the filesystem tree
switch_root:/# chroot /sysroot
10.Set a new root password:
sh-4.2# passwd [root] (change the root password)
or
sh-4.2# passwd -d root (delete the root password)
11.Make sure that all unlabeled files (including/etc/shadow at this point)get relabeled during boot.
sh-4.2# touch /.autorelabel
12. sh-4.2# exit
13. switch_root:/# exit
29.破解root密码精简版:
1、重启虚拟机
2、在linux16末尾加上 rd.break,ctrl+x执行
3、mount -o remount,rw /sysroot
4、chroot /sysroot
5、passwd root
6、输入新密码:
7、确认密码
8、touch /.autorelabel
9、exit
10、exit
30.查看目录下的文件: ls(list)
ls -l 以长列表方式列出 =ll
ls -r 逆序列出
ls -d 查看当前目录.
ls -ld 长列表列出当前目录的详细信息
ls -lh 显示目录或文件大小
ls -a 列出隐藏文件,包括.和…
ls -A 列出隐藏文件,不包括.和…
ls -i 显示文件索引节点号(inode)。一个索引节点代表一个文件,在linux中保存在磁盘分区中的文件都给它分配一个编号,称为索引节点号inode。
31.linux的文件类型:
- 普通文件,类似于Windows的记事本
d 目录文件,类似于文件夹
c 字符设备文件,串行端口设备,顺序读写,键盘
b 块设备文件,可供存储的接口设备,随机读写,硬盘
p 管道文件,用于进程间的通信
s 套接字文件,通常用于网络上的通信。可以启动一个程序来监听客户端的要求,客户端可以通过套接字来进行数据通信
32.link 连接文件: 在linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号inode。
(1)符号链接又叫软链接,和原文件不是一个文件。例如Windows的快捷方式,如果原始文件被删除,所有指向它的符号链接也就都被破坏了。符号链接记录的是目标的path。符号链接可以跨越文件系统,也可以为目录建立。软链接有自己的node,是linux特殊文件的一种,作为一个文件,它的数据是它所连接的文件的路径。
创建链接文件:ln -s 原文件 链接文件
(2)硬链接,只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为inode)。当移动或者删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接记录的是目标的inode。
创建硬链接: ln 原文件 新文件
33.FHS:filesystem hierarchy standard文件系统层级标准,定义了在类Unix系统中的目录结构和目录内容,即让用户了解到已安装软件通常放置于哪个目录下。可执行文件:指的是可以由操作系统进行加载执行的文件 FHS采用树形结构组织文件。FHS文件系统层级图
34.linux里面有哪些目录:
/ 根目录,通常不在这里存储文件
/bin 可执行文件,ls,cd
/sbin 可执行文件
/boot 开机启动的文件,包括linux内核以及开机菜单与开机所需配置文件等
/dev 设备文件,任何设备与接口设备都是以文件形式存在于这个目录的
/root root用户的主目录
/home 普通用户的主目录
/mnt 挂载点目录
光盘必须和/下的某个目录节点建立联系才能使用,把光盘和指定的挂载点目录建立联系的过程叫做挂载。mount /dev/sr0 /mnt
/media 媒体目录,也是挂载点目录
/opt 可选目录。存放第三方软件包和数据文件
/var 可变目录,用以存放经常变化的文件,如日志文件
/etc 配置文件
/lib 系统的函数库
/proc 该目录是一个虚拟文件系统,它放置的数据都在内存当中(是linux内核在内存中所建立的系统内核映象),proc文件系统被用于从内存读取进程的信息。
/run 系统运行时所需文件
/usr unix software resource放置的数据为可分享的与不可变动的,unix操作系统软件资源所放置的目录,而不是用户数据
/srv service的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录
/tmp 让一般用户或者是正在执行的程序暂时放置文件的地方
/sys 这个目录其实跟/proc非常类似,也是一个虚拟的文件系统,主要是记录与内核相关的信息
35.文件命名规则:不能使用/来当文件名,/是用来做根的,也是用来做路径分隔符的;文件名不能超过255个字符;区分大小写;目录也是文件,在同一路径下,两个文件名不能同名
36.创建普通文件:touch
格式:touch【option】…file…
两种用法:1、如果文件已存在,更新文件的三个时间,stat可以查看文件的详细信息
atime access time 看了一下内容 cat
mtime modify time 文件内容被改变了,ctime也会发生改变
ctime change time 元数据被改变,重命名
2、如果文件不存在,则表示创建文件
创建多个普通文件:
方法1:touch 文件名1 文件名2 文件名3
方法2:touch {文件名1,文件 名2,文件名3}
touch {1,2}{3,4}
touch abc{1…100}
37.删除普通文件:rm [-f] 文件名
38.将输出重定向到文件:将输入接到标准输出(从键盘输入,从显示器输出):echo
重定向:>
追加重定向:>>
39.读取标准输入的数据,并将其内容输出到文件的同时输出到屏幕(即想把输出保存到文件中,又想在屏幕上看到内容):tee 文件
管道符|:管道符左边命令的输出作为管道符右边命令的输入
40.从shell提示符编辑文本文件:vim文本编辑器特点,所有的Unix系统都会内置文本编辑器,其他的文本编辑器则不一定会存在;很多软件的编辑接口都会主动调用vi(例如crontab);
vim具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性,方便程序设计;vim会根据文件的扩展名或者是文件内的开头信息判断该文件的内容而自动调用该程序的语法判断式,再以颜色来显示程序代码与一般信息;程序简单,编辑速度相当快速
41.VIM
一般模式:按esc键可回到命令模式:
dw 按单词删除
u 撤销当前操作
dd 删除当前行,=剪切
ctrl+r 重做上一个操作
yy 复制光标所在行
2 yy 复制光标所在行和光标下一行
p 粘贴到光标下一行
P 粘贴到光标上一行
cc 剪切
行数cc 剪切当前行开始的几行
X 删除光标所在位置的内容,即向后删除一个字符
X 向前删除一个单词
w,b 按单词进行移动光标
gg 跳转到文档首部行首
dgg 删除光标至文档首部
G 跳转到文档尾部行首
$ 行尾
^ 行首
n[enter] n为数字,光标向下移动n行
h 往左按字符移动光标
j 往下(后)按行移动光标
k 往上(前)按行移动光标
l 往右按字符移动光标
H 跳转到当前屏幕输出的最上面一行
L 跳转到当前屏幕输出的最下面一行
M 跳转到当前屏幕输出的中间那一行

插入模式:
i 在光标前插入
I在光标所在行第一个非空格符前插入
a 在光标后插入
A 在光标所在行末尾插入
s 删除光标所在位置字符并插入
S 删除光标所在行并插入
o 在光标所在行下一行插入
O 在光标所在行上一行插入

命令行模式(末行模式):
:wq 保存退出
:q 退出(未修改文件内容才可以退出)
:wq! 强制保存退出
:q! 强制退出,不保存
:set nu 显示行号
:set nonu 不显示行号
:行号 跳转到指定行号
:3,5 d 删除3-5行
:r 文件名1 读出文件1的内容到当前文件里
:%s/字符串2/字符串3 字符串3替换字符串2
:%s/1/2/g 将1替换为2,全局修改
:w 文件名1 另存为文件名1
/word 向下寻找一个字符串为word的字符串
n重复前一个查找的操作
N反向进行前一个查找的操作
?word 向上寻找一个字符串名称为word的字符串
ZZ 若文件没有改动,则离开,,若文件已经被改动过,则保存后离开
拓展*
块选择(Visual Block)
v 字符选择,会将光标经过的地方反白选择
V 行选择,会将光标经过的地方反白选择
[ctrl]+v 块选择,可以用长方形的方式选择数据
y 将反白的地方复制
d 将反白的地方删除

多文件编辑:
vim 文件1 文件2 文件3
:files显示多个文件文件名
:n查看下一个文件内容
:N查看上一个文件内容
多窗口功能:
vim 文件1
:sp 文件名 在同一个窗口启动另一个文件
:sp 同一个文件出现在两个窗口间
[ctrl]+w+w [ctrl]+w+w
42.查看普通文件的内容: 文本统计:wc——word count
显示文件行数、单词数、字节数和文件名:wc 文件名
###在UTF-8编码格式里面,显示是一个字符占一个字节,一个中文字占用3个字节
只显示单词数:wc -w 文件名
只显示字节数:wc -c 文件名
只显示行数:wc -l 文件名
只显示字符数:wc -m 文件名
显示最长的一行的字符数(不包括断行符):wc -L 文件名
42.直接查看文件内容: cat连接并显示文件内容到标准输出
显示文件内容并显示行号: cat -n 文件名
黑洞机制(shell脚本里面经常用)
将文件内容重定向到/dev/null:cat 文件 >/dev/null
不带任何选项时,从标准输入接收输出到标准输出
逆序显示文件:tac
从头开始逐行查看:more /var/log/messages
在没有翻到最后一屏时支持向前翻
前后查看文件内容:less /var/log/messages
man手册查看命令用法默认用less打开
默认查看文件前10行:head /etc/passwd
指定查看前5行:head -5 /etc/passwd
默认查看后10行:tail /etc/passwd
查看后5行:tail  -5/etc/passwd
43.对文本数据内容进行处理之后显示:文本切割显示:
cut -d 指定分隔符 -f 指定第几列 被切割文件
-f 1,3第一列和第三列
-f 1-3第一列到第三列
-c 1-4 指定第一到第四个字符
指定分隔符的时候空格需要用单引号或双引号引起来
cut -d : -f 1-3 --output-delimiter=@ /etc/passwd
文本排序显示:
排序显示(默认根据字符在ASCII码中的升序排序):sort 文件名
按照数值大小排序:sort -n 文件名
排序并去掉重复的:sort -u 文件名
逆序排序:sort -r 文件名
按照用户uid数字大小排序显示:
sort -t 指定分隔符 -k 指定第几列 -n /etc/passwd
   -f 排序时忽略字符大小写65 97
显示时去掉重复的行,重复的行必须相邻:uniq 文件名
-d 只显示重复的行
-D 显示所有重复的行
-c 显示重复行重复的次数
文本过滤显示:
grep可以根据特定的字符串,对指定文件的每一行进行搜索,如果找到了这个字符串,就将含有这些内容的行输出。
查找文件里有字符h的字符串:grep h 文件名
匹配整个单词:grep -w 单词 文件名
匹配以q开始的行:grep 1 文件名
匹配以q结束的行:grep q$ 文件名
匹配以数字开头的行:grep 2 文件名
匹配以q或者f开头的行:grep 3 文件名
不匹配以q或者f开头的行:grep [qf] 文件名
匹配oo前面不是f或者g的字符串:grep [^gf]oo 文件名
匹配以#号开头的行:grep ^#
过滤空白行:grep ^$
如果要明确搜索子目录:grep -r h ./*
忽略子目录:grep -d skip h ./*
-l:查询多文件时只输出包含匹配字符的文件名
搜索时忽略大小写:grep -i
搜索时显示没有匹配到的行:grep -v
搜索时显示匹配到的那一行以及下2行:grep -A 2
搜索时显示匹配到的那一行以及上2行:grep -B 2
搜索时显示匹配到的那一行以及上下2行:grep -C 2
44.创建、删除目录文件
创建目录文件:mkdir
格式:mkdir [OPTION]… DIRECTORY…
-p 如果需要的话创建父目录
-v显示创建目录的详细过程
删除文件:rm(rm是rm -i的命令别名,该选项用来提示用户进行交互)
格式: rm [OPTION]… FILE…
删除普通文件:rm [-f] 文件名
删除目录文件:rm -r [-f] 目录文件名
45.复制、移动文件
复制文件:cp
格式:cp [OPTION]… [-T] SOURCE DEST
cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…
移动文件:mv
格式:mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
46.查找文件的路径:
文件名的查找:
whereis和locate都是利用数据库查找数据(Linux系统会将系统内的所有文件都记录在数据库文件里面,当使用whereis和locate进行查找时,都会以此数据库的内容为准)
数据库文件/var/lib/mlocate/mlocate.db
数据库的创建默认是每天执行一次,不同的发行版不一样
手动更新数据库:直接输入updatedb命令,该命令会去读取/etc/updatedb.conf这个配置文件的设置,然后再去硬盘里面进行查找文件名的操作,最后就更新整个数据库文件。
locate会将有文件名及其所在路径包含关键字段的文件与目录都显示。
find [path] [options] [expression]
1.与时间有关的参数:共有-atime,-ctime,-mtime。ll --time=atime
-mtime n:意义为在n天之前的一天之内被更改过的文件;-mtime 4,前4~5那一天的文件名
-mtime -n:列出在n天之内(包含n天本身)被更改过的文件名;-mtime -4,小于等于4天内的文件名
-mtime +n:列出在n天之前(不包含n天本身)被更改过的文件名;-mtime +4,大于等于5天前的文件名
find /-mtime 0 #0代表目前的时间,所以从现在开始到24小时前有改动过内容的文件都会被列出来
find /etc/ -newer /etc/passwd寻找/etc/下面的文件,如果文件日期比/etc/passwd新就列出
2.与用户或者用户组名有关的参数
-uid n:n为数字,这个数字是用户的账号ID,即UID
-gid n:GID
-user name:根据文件拥有者寻找文件
-group name:根据文件所属组寻找文件
-nouser:寻找文件的所有者不存在/etc/passwd的人
-nogroup:寻找文件的所有用户组不存在于/etc/group(当你自行安装软件时,很可能该软件的属性当中并没有文件所有者)
3.与文件权限及名称有关的参数
-name filename:查找文件名为filename的文件,支持通配符和?(由于find命令自己能解析通配符的含义,所以加引号不会让和?这两个符号失效)
-size [±]SIZE:查找比SIZE还要大(+)或者小(-)的文件。这个SIZE的规格有:c代表字节,k代表1024字节。-size +50k表示要找比50kB还要大的文件。
-type TYPE:根据文件类型查找文件,一般正规文件f,设备文件c、b,目录d,链接文件l,socket(s),FIFO(p)
-perm -mode:根据文件权限寻找文件。-perm -0744,当一个文件权限为4755时,也会被列出来。
-perm +mode:查找文件权限“包含任一mode的权限”的文件。-perm +755,当一个文件权限为-rw-------时也会被列出来,因为它有rw的属性存在
find /bin /sbin -perm +6000找出在/bin和/sbin这两个目录下具有SUID或SGID的文件
4.其他可执行的操作
-exec command:command为其他命令,-exec后面可再接其他的命令来处理查找到的结果
-print:将结果打印到屏幕上,这个操作是默认操作
find / -perm +700 -exec ls -l {} ;
{}表示“由find找到的内容”,find的结果会被放置到{}位置中。
-exec一直到“;”是关键字,代表额外命令的开始(-exec)到结束(;),在这中间的就是find命令内的额外命令。额外的命令不支持命令别名。
47. 对文档进行归档和压缩处理: 文件的压缩与解压缩:
常见的压缩文件扩展名:
.gz gzip程序压缩的文件
.bz2 bzip2程序压缩的文件
.tar tar程序打包的数据,并没有经过压缩
.tar.gz tar程序打包的文件,其中经过gzip的压缩
.tar.bz2 tar程序打包的文件,其中经过bzip2的压缩
linux上常见的压缩命令就是gzip与bzip2
压缩文件gzip: gzip 文件名(原文件不存在)
gzip -c 文件名1 >文件名1.gz (保留原文件)
-c表示将压缩过程中产生的数据输出到屏幕上
解压文件: gzip -d 文件名.gz(不保留)
gunzip 文件名.gz
gzip -cd 文件名2.gz >文件名2(保留原文件)
查看压缩过的文本文件内容:zcat 文件名.gz
压缩文件bzip2(用法同gzip):bzip2 文件名
bzip2 -c 文件名1 >文件名1.bz2(保留原文件)
解压文件: bzip2 -d 文件名.bz2(不保留原文件)
bunzip2 文件名.bz2
bzip2 -cd 文件名2.bz2 > 文件名2(保留原文件)
查看压缩过的文件内容:bzcat 文件名.bz2
文件的归档即打包文件:tar [主选项+辅选项] 文件或目录
主选项:只能出现一个主选项
c— create 创建一个新归档文件
x— 从归档文件中提取文件出来
t— 列出归档文件的内容,查看已经打包了哪些文件,重点在查看文件名
辅选项:
z—通过gzip的支持进行压缩/解压缩,一般格式为
.tar.gz
j— 通过bzip2的支持进行压缩/解压缩,一般格式为
.tar.bz2
J—通过xz的支持进行压缩/解压缩,一般格式为
.tar.xz
v— 归档或解包过程中显示被打包的文件
C—这个参数用在解压缩时,若要在特定目录解压缩,可以使用这个参数
f— 输出结果到文件,必须写该选项
–exclude=FILE在打包的过程中,不要将 FILE 打包! --排除某个文件打包
常见的两种压缩方式:jcvf zcvf
打包、压缩文件1和2并重命名:tar zcvf 新文件名 文件名1 文件名2 文件名3 文件名4
解压:tar xvf 文件名 该命令会自动判断归档文件的压缩格式,自动调用相关程序进行解压缩
解压到指定路径:tar xvf 文件名 -C 目标路径
tar -xjv -f filename.tar.bz2 -C 欲解压缩的目录
查看已压缩文件:tar tf 文件名
48.如何从linux服务器上传/下载文件:
1、客户端是linux的操作系统
从服务器下载普通文件:
scp 用户名@目标IP地址:文件名 目录名
向服务器上传文件:
scp 要上传文件的全路径 用户名@目标IP地址:文件名
2、客户端是windows的操作系统
从windows向linux上传:rz或者xftp工具
从linux下载文件:sz 文件路径或者xftp工具
49. 什么是shell以及bash shell的优点:
shell:壳,命令解释器,负责解析用户输入的命令
type 查看命令是file、alias还是builtin
内置命令 (shell内置)。
外置命令,在文件系统的某个目录下,有个与命令名称相同的文件。
区别:shell为了完成自我管理和基本的管理,不同的shell内置不同的命令,但是大部分都差不多。
type -t 仅列出命令执行时的依据
type -a 列出当前命令可以如何执行
那命令怎么知道是那个路径下的命令呢?系统为了让用户在命令行快速方便地执行命令,用一种机制来实现,这种机制就叫做环境变量。
shell的变量功能:变量简单说就是让某一个特定字符串代表不固定的内容。
设置变量(用“=”连接;等号两边不能有空格符;变量名的规则:只能使用数字、字母和下划线,且不能用数字开头;)
myname=redhat(变量声明的过程就是申请内存使用的过程)
环境变量
定义当前用户工作环境属性的变量
PATH:从哪些路径中查找用户键入的命令字符串所对应的的命令文件:echo KaTeX parse error: Undefined control sequence: \” at position 1630: …理。 转义字符“\̲”̲:如果将\放到特殊字符前面,s…“和“\”以及“ ` ”
ll -d 1"
"
myname=redhat
echo “$myname”
echo “$ m y n a m e ” e c h o " ‘ d a t e ‘ " 51. 命令帮助:内部命令 : c d , t y p e h e l p C O M M A N D 外部命令 : l s , m k d i r , C O M M A N D − − h e l p 命令手册 m a n u a l 用法: m a n C O M M A N D m a n 手册分段 N A M E 命令名称及功能简要说明 S Y N O P S I S 格式说明,用法说明,包括可用的选项 D E S C R I P T I O N 命令功能的详尽说明,可能包括每一个选项的意义 O P T I O N s 选项 , 说明每一个选项的意义 E X A M P L E 示例,举例说明 F I L E S 此命令相关的配置文件 A U T H O R 作者 R E P O R T I N G B U G S b u g 反馈 C O P Y R I G H T 版权 S E E A L S O 参见 m a n 手册章节一般从 1 到 9 哪个章节先出现就显示哪个,如 m a n m o u n t 就显示第 8 章节,那如何知道命令有哪些章节呢?用 w h a t i s r e a d 去查看如 m a n r e a d , m a n 2 r e a d 1 可执行程序或用户命令 , / b i n , / u s r / b i n , / u s r / l o c a l / b i n 2 系统内核可调用的函数与工具 3 c库调用 4 特殊文件,如设备文件,系统上的设备文件只是设备的访问入口,文件中不存储任何内容 5 文件格式,配置文件的格式说明,举例 p a s s w d 6 g a m e s ,游戏,休闲益智类的游戏使用帮助 7 杂项,不便归类的杂项, M i s c e l l a n e o u s 8 系统管理员可用的管理命令 , / s b i n , / u s r / s b i n , / u s r / l o c a l / s b i n 9 跟 k e r n e l 有关的文件 m a n 手册符号说明: [ ] 表示可选内容 < > 必须提供的内容 a ∣ b ∣ c 多选一 … 同类内容可出现多个 分组翻屏下翻一页空格上翻一页 b 下翻一行回车上翻一行 k 查找关键字 / K E Y W O R D 向后 n 下一个 N 前一个 ? K E Y W O R D N 下一个 n 上一个退出 q 52. 用户管理:用户的配置文件: − r w − r − − r − − . 1 r o o t r o o t 2416 A u g 2510 : 11 / e t c / p a s s w d 用户名:密码:用户 u i d 号: g i d :备注:用户的家目录:和根交互使用的 s h e l l 用户:超级用户: r o o t , u i d 为 0 系统用户:用来管理和运行服务,系统用户的 s h e l l 为 / s b i n / n o l o g i n ,不让该用户登录, u i d 为 201 − 999 一般用户 : 1000 − 60000 ,添加一般用户时,系统默认为该用户创建主目录和邮箱( / h o m e / 用户名)( / v a r / m a i l / 用户名)添加用户添加普通用户: u s e r a d d 用户名 = a d d u s e r 用户名添加系统用户: u s e r a d d − r 用户名,添加系统用户,不创建主目录和邮箱添加用户并用选项指定参数: u s e r a d d 用户名 − u u i d 号 − g g i d 号 / 组名 − G 附加组 / 组名 − c 备注 − s 指定 s h e l l − d 指定家目录添加用户时会创建的相关信息设置:参数含义 G R 0 U P = 100 这个选项用于建立用户的默认组,也就是说,在添加每个用户时,用户的初始组就是 G I D 为 100 的这个用户组。但 C e n t O S 并不是这样的,而是在添加用户时会自动建立和用户名相同的组作为此用户的初始组。也就是说这个选项并不会生效。 L i n u x 中默认用户组有两种机制:一种是私有用户组机制,系统会创建一个和用户名相同的用户组作为用户的初始组;另一种是公共用户组机制,系统用 G I D 是 100 的用户组作为所有新建用户的初始组。目前我们采用的是私有用户组机制。 H O M E = / h o m e 指的是用户主目录的默认位置,所有新建用户的主目录默认都在 / h o m e / 下。 I N A C T I V E = − 1 指的是密码过期后的宽限天数,也就是 / e t c / s h a d o w 文件的第七个字段。这里默认值是 − 1 ,代表所有新建立的用户密码永远不会失效。 E X P I R E = 表示账号过期时间,也就是 / e t c / s h a d o w 文件的第八个字段。默认值是空,代表所有新建用户没有失效时间,永久有效。 S H E L L = / b i n / b a s h 表示所有新建立的用户默认 S h e l l 都是 / b i n / b a s h 。 S K E L = / e t c / s k e l 在创建一个新用户后,你会发现,该用户主目录并不是空目录,而是有 . b a s h p r o f i l e 、 . b a s h r c 等文件,这些文件都是从 / e t c / s k e l 目录中自动复制过来的。因此,更改 / e t c / s k e l 目录下的内容就可以改变新建用户默认主目录中的配置文件信息。 C R E A T E M A I L S P O O L = y e s 指的是给新建用户建立邮箱,默认是创建。也就是说,对于所有的新建用户,系统都会新建一个邮箱,放在 / v a r / s p o o l / m a i l / 目录下,和用户名相同。修改 / e t c / d e f a u l t / u s e r a d d 文件的方法,第一种可以直接用 v i m 修改,第二种可以用 u s e r a d d − D 命令修改选项 + 参数含义 − b H O M E 设置所创建的主目录所在的默认目录,只需用目录名替换 H O M E 即可,例如 u s e r a d d − D − b / m u l u 1 。 − e E X P I R E 设置密码失效时间, E X P I R E 参数应使用 Y Y Y Y − M M − D D 格式,例如 u s e r a d d − D − e 2019 − 10 − 17 。 − f I N A C T I V E 设置密码过期的宽限天数,例如 u s e r a d d − D − f 7 。 − g G R O U P 设置新用户所在的初始组,例如 u s e r a d d − D − g g r o u p 1 。 − s S H E L L 设置新用户的默认 s h e l l , S H E L L 必须是完整路径,例如 u s e r a d d − D − s / u s r / b i n / c s h 。 / e t c / l o g i n . d e f s 定义了与 / e t c / p a s s w d 和 / e t c / s h a d o w 配套的用户限制设定 / e t c / s k e l 用户家目录下相关隐藏文件查看用户: i d 查看用户的 u i d 、 g i d 以及组删除用户: u s e r d e l − r 用户名删除用户时 u s e r d e l 加参数 − r 和不加参数 − r 的区别修改用户信息: u s e r m o d − c 改变用户的全名或者说描述名称 − d 改变用户的家目录 − e 设置用户账号的过期时间 − f 密码的过期宽限时间 − g 改变用户的 g i d − G 将用户添加入一个新组 − s 改变用户的默认 s h e l l − l 改变用户用户名 − u 改变用户的 u i d − L 锁住密码,使账号不能用 − U 为用户密码解锁给用户追加附加组: u s e r m o d − a − G 组名用户名管理用户密码用户的密码文件: − − − − − − − − − − . 1 r o o t r o o t 1434 A u g 2510 : 10 / e t c / s h a d o w 用户名密码( myname” echo "`date` " 51.命令帮助 : 内部命令 :cd ,type help COMMAND 外部命令:ls,mkdir, COMMAND --help 命令手册 manual 用法:man COMMAND man手册分段 NAME 命令名称及功能简要说明 SYNOPSIS 格式说明,用法说明,包括可用的选项DESCRIPTION 命令功能的详尽说明,可能包括每一个选项的意义 OPTIONs 选项,说明每一个选项的意义 EXAMPLE 示例,举例说明 FILES 此命令相关的配置文件 AUTHOR 作者 REPORTING BUGS bug反馈 COPYRIGHT 版权 SEE ALSO 参见 man手册章节 一般从1到9哪个章节先出现就显示哪个,如man mount就显示第8章节,那如何知道命令有哪些章节呢?用whatis read去查看 如man read,man 2 read 1 可执行程序或用户命令,/bin,/usr/bin,/usr/local/bin 2 系统内核可调用的函数与工具 3 c库调用 4 特殊文件,如设备文件,系统上的设备文件只是设备的访问入口,文件中不存储任何内容 5 文件格式,配置文件的格式说明,举例passwd 6 games,游戏,休闲益智类的游戏使用帮助 7 杂项,不便归类的杂项,Miscellaneous 8 系统管理员可用的管理命令,/sbin,/usr/sbin,/usr/local/sbin 9 跟kernel有关的文件 man手册符号说明: []表示可选内容 <>必须提供的内容 a|b|c多选一 …同类内容可出现多个 {} 分组 翻屏 下翻一页 空格 上翻一页 b 下翻一行 回车 上翻一行 k 查找关键字 /KEYWORD 向后 n 下一个 N 前一个 ?KEYWORD N 下一个 n 上一个 退出 q 52. 用户管理: 用户的配置文件:-rw-r--r--. 1 root root 2416 Aug 25 10:11 /etc/passwd 用户名:密码:用户uid号:gid:备注:用户的家目录:和根交互使用的shell 用户: 超级用户:root,uid为0 系统用户:用来管理和运行服务,系统用户的shell为/sbin/nologin,不让该用户登录,uid为201-999 一般用户:1000-60000,添加一般用户时,系统默认为该用户创建主目录和邮箱(/home/用户名)(/var/mail/用户名) 添加用户 添加普通用户:useradd 用户名=adduser 用户名 添加系统用户:useradd -r 用户名,添加系统用户,不创建主目录和邮箱 添加用户并用选项指定参数:useradd 用户名 -u uid号 -g gid号/组名 -G 附加组/组名 -c 备注 -s 指定shell -d 指定家目录 添加用户时会创建的相关信息设置: 参数 含义 GR0UP=100 这个选项用于建立用户的默认组,也就是说,在添加每个用户时,用户的初始组就是 GID 为 100 的这个用户组。但 CentOS 并不是这样的,而是在添加用户时会自动建立和用户名相同的组作为此用户的初始组。也就是说这个选项并不会生效。 Linux 中默认用户组有两种机制:一种是私有用户组机制,系统会创建一个和用户名相同的用户组作为用户的初始组;另一种是公共用户组机制,系统用 GID 是 100 的用户组作为所有新建用户的初始组。目前我们采用的是私有用户组机制。 HOME=/home 指的是用户主目录的默认位置,所有新建用户的主目录默认都在 /home/下。 INACTIVE=-1 指的是密码过期后的宽限天数,也就是 /etc/shadow 文件的第七个字段。这里默认值是 -1,代表所有新建立的用户密码永远不会失效。 EXPIRE= 表示账号过期时间,也就是 /etc/shadow 文件的第八个字段。默认值是空,代表所有新建用户没有失效时间,永久有效。 SHELL=/bin/bash 表示所有新建立的用户默认 Shell 都是 /bin/bash。 SKEL=/etc/skel 在创建一个新用户后,你会发现,该用户主目录并不是空目录,而是有 .bash_profile、.bashrc 等文件,这些文件都是从 /etc/skel 目录中自动复制过来的。因此,更改 /etc/skel 目录下的内容就可以改变新建用户默认主目录中的配置文件信息。 CREATE_MAIL_SPOOL=yes 指的是给新建用户建立邮箱,默认是创建。也就是说,对于所有的新建用户,系统都会新建一个邮箱,放在 /var/spool/mail/ 目录下,和用户名相同。 修改/etc/default/useradd文件的方法,第一种可以直接用vim修改,第二种可以用useradd -D命令修改 选项+参数 含义 -b HOME 设置所创建的主目录所在的默认目录,只需用目录名替换 HOME 即可,例如 useradd -D -b /mulu1。 -e EXPIRE 设置密码失效时间,EXPIRE 参数应使用 YYYY-MM-DD 格式,例如 useradd -D -e 2019-10-17。 -f INACTIVE 设置密码过期的宽限天数,例如 useradd -D -f 7。 -g GROUP 设置新用户所在的初始组,例如 useradd -D -g group1。 -s SHELL 设置新用户的默认 shell,SHELL 必须是完整路径,例如 useradd -D -s /usr/bin/csh。 /etc/login.defs定义了与/etc/passwd和/etc/shadow配套的用户限制设定 /etc/skel 用户家目录下相关隐藏文件 查看用户: id 查看用户的uid、gid以及组 删除用户:userdel -r 用户名 删除用户时userdel加参数-r和不加参数-r的区别 修改用户信息:usermod -c 改变用户的全名或者说描述名称 -d 改变用户的家目录 -e 设置用户账号的过期时间 -f 密码的过期宽限时间 -g 改变用户的gid -G 将用户添加入一个新组 -s 改变用户的默认shell -l 改变用户用户名 -u 改变用户的uid -L 锁住密码,使账号不能用 -U 为用户密码解锁 给用户追加附加组:usermod -a -G 组名 用户名 管理用户密码 用户的密码文件:----------. 1 root root 1434 Aug 25 10:10 /etc/shadow 用户名 密码( mynameecho"‘date‘"51.命令帮助:内部命令:cd,typehelpCOMMAND外部命令:ls,mkdir,COMMANDhelp命令手册manual用法:manCOMMANDman手册分段NAME命令名称及功能简要说明SYNOPSIS格式说明,用法说明,包括可用的选项DESCRIPTION命令功能的详尽说明,可能包括每一个选项的意义OPTIONs选项,说明每一个选项的意义EXAMPLE示例,举例说明FILES此命令相关的配置文件AUTHOR作者REPORTINGBUGSbug反馈COPYRIGHT版权SEEALSO参见man手册章节一般从19哪个章节先出现就显示哪个,如manmount就显示第8章节,那如何知道命令有哪些章节呢?用whatisread去查看如manreadman2read1可执行程序或用户命令,/bin,/usr/bin,/usr/local/bin2系统内核可调用的函数与工具3c库调用4特殊文件,如设备文件,系统上的设备文件只是设备的访问入口,文件中不存储任何内容5文件格式,配置文件的格式说明,举例passwd6games,游戏,休闲益智类的游戏使用帮助7杂项,不便归类的杂项,Miscellaneous8系统管理员可用的管理命令,/sbin,/usr/sbin,/usr/local/sbin9kernel有关的文件man手册符号说明:[]表示可选内容<>必须提供的内容abc多选一同类内容可出现多个分组翻屏下翻一页空格上翻一页b下翻一行回车上翻一行k查找关键字/KEYWORD向后n下一个N前一个?KEYWORDN下一个n上一个退出q52.用户管理:用户的配置文件:rwrr.1rootroot2416Aug2510:11/etc/passwd用户名:密码:用户uid号:gid:备注:用户的家目录:和根交互使用的shell用户:超级用户:rootuid0系统用户:用来管理和运行服务,系统用户的shell/sbin/nologin,不让该用户登录,uid201999一般用户:100060000,添加一般用户时,系统默认为该用户创建主目录和邮箱(/home/用户名)(/var/mail/用户名)添加用户添加普通用户:useradd用户名=adduser用户名添加系统用户:useraddr用户名,添加系统用户,不创建主目录和邮箱添加用户并用选项指定参数:useradd用户名uuidggid/组名G附加组/组名c备注s指定shelld指定家目录添加用户时会创建的相关信息设置:参数含义GR0UP=100这个选项用于建立用户的默认组,也就是说,在添加每个用户时,用户的初始组就是GID100的这个用户组。但CentOS并不是这样的,而是在添加用户时会自动建立和用户名相同的组作为此用户的初始组。也就是说这个选项并不会生效。Linux中默认用户组有两种机制:一种是私有用户组机制,系统会创建一个和用户名相同的用户组作为用户的初始组;另一种是公共用户组机制,系统用GID100的用户组作为所有新建用户的初始组。目前我们采用的是私有用户组机制。HOME=/home指的是用户主目录的默认位置,所有新建用户的主目录默认都在/home/下。INACTIVE=1指的是密码过期后的宽限天数,也就是/etc/shadow文件的第七个字段。这里默认值是1,代表所有新建立的用户密码永远不会失效。EXPIRE=表示账号过期时间,也就是/etc/shadow文件的第八个字段。默认值是空,代表所有新建用户没有失效时间,永久有效。SHELL=/bin/bash表示所有新建立的用户默认Shell都是/bin/bashSKEL=/etc/skel在创建一个新用户后,你会发现,该用户主目录并不是空目录,而是有.bashprofile.bashrc等文件,这些文件都是从/etc/skel目录中自动复制过来的。因此,更改/etc/skel目录下的内容就可以改变新建用户默认主目录中的配置文件信息。CREATEMAILSPOOL=yes指的是给新建用户建立邮箱,默认是创建。也就是说,对于所有的新建用户,系统都会新建一个邮箱,放在/var/spool/mail/目录下,和用户名相同。修改/etc/default/useradd文件的方法,第一种可以直接用vim修改,第二种可以用useraddD命令修改选项+参数含义bHOME设置所创建的主目录所在的默认目录,只需用目录名替换HOME即可,例如useraddDb/mulu1eEXPIRE设置密码失效时间,EXPIRE参数应使用YYYYMMDD格式,例如useraddDe20191017fINACTIVE设置密码过期的宽限天数,例如useraddDf7gGROUP设置新用户所在的初始组,例如useraddDggroup1sSHELL设置新用户的默认shellSHELL必须是完整路径,例如useraddDs/usr/bin/csh/etc/login.defs定义了与/etc/passwd/etc/shadow配套的用户限制设定/etc/skel用户家目录下相关隐藏文件查看用户:id查看用户的uidgid以及组删除用户:userdelr用户名删除用户时userdel加参数r和不加参数r的区别修改用户信息:usermodc改变用户的全名或者说描述名称d改变用户的家目录e设置用户账号的过期时间f密码的过期宽限时间g改变用户的gidG将用户添加入一个新组s改变用户的默认shelll改变用户用户名u改变用户的uidL锁住密码,使账号不能用U为用户密码解锁给用户追加附加组:usermodaG组名用户名管理用户密码用户的密码文件:.1rootroot1434Aug2510:10/etc/shadow用户名密码(id s a l t salt saltencrypted,1为md5,2a为Blowfish,5为SHA-256,6为SHA-512。salt是一个最多16字符的随机生成的字符串,用来增加破解难度。encrypted是经过加密算法和salt算出来的密文。!!表示锁定状态)。
最后一次修改密码的时间,从1970年1月1日到最后一次修改密码所经过的天数。
密码最短使用期限,为0表示不限制。
密码最长使用期限,密码使用多长时间之后必须要改密码,99999表示密码永久有效。
密码过期警告时间,密码过期前多少天进行警告,提示用户改密码,但是不锁定用户。
密码过期宽限期限,密码过期后必须改密码的时间,如果还没改,锁定用户,就只能找网管了。
账号过期精确时间,如果为99999,意味着永不过期。是从1970年1月1日之后的天数。
保留字段
修改密码:passwd 用户名
-n 指定密码的最短使用期限
-x 指定密码的最长使用期限
-w 设置密码过期警告时间
-l 锁定用户账号密码
-u 解锁用户账号
-d 删除用户密码,在redhat中,空密码用户禁止登陆
echo 密码 | passwd --stdin 用户名
53.用户组管理: 组配置文件:-rw-r–r–. 1 root root 998 Aug 25 10:30 /etc/group
组名:组密码:组id:用户列表
组:
私有组:当组里只有它一个成员时,它的基本组也叫做私有组
基本组:用户的默认组(班级)
附加组:默认组以外的组(学生会)
创建组:groupadd -g gid 组名
修改组信息:groupmod -n 新组名 -g gid 原组名
删除组(无法删除用户的基本组):groupdel 组名
组密码的相关信息:/etc/gshadow
student:!!::student
组名:组密码(!开头,表示无合法密码,无群组管理员):群组管理员账号:用户列表
修改组密码:gpasswd
-a 添加用户到组
-d 将指定用户移出本组(从附加组移除)
-M设置组成员列表
-A 指定组管理员为哪个用户
-r 删除组密码
登陆一个新组:newgrp
退出登录的组:exit
54.用户身份切换: su [-lm] [-c 命令] [username]
-:单纯使用-如“su -”,代表使用login-shell的变量文件读取方式来登陆系统;若用户名没有写,则代表切换为root用户
-l:与-类似,但后面需要加欲切换的用户账号,也是login-shell的方式
-m:-m与-p是一样的,表示使用目前的环境变量设置,而不读取新用户的配置文件
-c:仅进行一次命令,所以-c后面可以加上命令
使用su切换成为root的身份为non-login shell,这种方式下很多原本的变量不会改变。
login-shell:取得bash时需要完整的登录流程。login-shell读取配置文件的顺序是:/etc/profile,/.bash_profile、/.bashrc、/etc/bashrc
non-login shell:取得bash接口的方法不需要重复登录。non-login shell会读取的配置文件为:~/.bashrc、/etc/bashrc。
sudo:是一种以限制配置文件中的命令为基础,在有限时间内给用户使用,并且记录到日志中的命令。sudo命令的配置在/etc/sudoers中,sudo是系统管理员用来允许某些用户以root身份运行部分/全部系统命令的程序
查看当前是哪个用户登录的shell:whoami
sudo [-u 新用户账号]
-u:后面可以接欲切换的用户,若无此项则代表切换身份为root
[root@localhost ~]# sudo -u sshd touch /tmp/mysshd
[root@localhost ~]# ll /tmp/mysshd
-rw-r–r–. 1 sshd sshd 0 Jul 5 02:08 /tmp/mysshd
这个文件的所属者是sshd。
sudo的执行流程如下(默认只有root用户能使用):
1、当用户执行sudo时,便会让用户输入自己的密码来确认(root执行sudo时不需要输入密码);
2、若欲切换的身份与执行者身份相同,那也不需要输入密码。
3、若密码输入成功,系统会去/etc/sudoers文件中查找该用户是否有执行sudo的权限;
4、若用户具有执行sudo的权限,便开始sudo后续接的命令;
[root@localhost ~]# vim /etc/sudoers或者[root@localhost ~]# visudo
root ALL=(ALL) ALL
参数代表含义:
1、用户账号:系统哪个账号可以使用sudo这个命令。默认为root用户。
2、登录者的来源主机名:这个账号由哪台主机连接到本地Linux主机。默认值root可来自任何一台网络主机。
3、可切换的身份:这个账号可以切换成什么身份来执行后续的命令。默认root可以切换成任何人。
4、可执行的命令:这个命令最好使用绝对路径编写。默认root可以切换任何身份且进行任何命令。
ALL是关键字,代表任何身份、主机或命令。
[root@localhost ~]# vim /etc/sudoers
92 root ALL=(ALL) ALL
93 redhat ALL=(ALL) ALL 添加该内容
测试:
[redhat@localhost ~]$ grep root /etc/shadow
grep: /etc/shadow: Permission denied
[redhat@localhost ~]$ sudo grep root /etc/shadow
root: 6 6 6aiujdLezRBJygsQ.KaTeX parse error: Expected 'EOF', got '#' at position 167: …ot@localhost ~]#̲ vim /etc/sudoe… sudo grep xiao /etc/shadow
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for xiaoming:
xiaoming: 6 6 6tHmd220/$WGlSMQfiqul9YruFmD5LWDAOlftAaKZMtPCwu0b1SgHARWCcv/9z6HGr5qgDFfhEorwzgy5oxN.GXrHCP3Q3L0:18082:0:99999:7::: xiaohong: 6 6 6yc4VanWp$gUxeBxNfLxCKlmA0FBUrpkbyCkgprnXOwpRBU.qSiyU4KaX1GFmDaGIFXAqb9Z5PKUW8UQymzr4q0S…A2flC.:18082:0:99999:7:::
如果不要密码,参照示例修改即可
[root@localhost ~]# vim /etc/sudoers
103 ## Same thing without a password
104 # %wheel ALL=(ALL) NOPASSWD: ALL
55.查看用户登录系统的情况: last命令的作用是显示近期用户或终端的登录情况。
last [-n] [-f file] [-t tty] [-h 节点] [-i IP] [-y] [-x]
-n指定输出记录的条数
-f file:指定用文件file作为查询用的log文件
-t tty:只显示指定的虚拟控制台上的登录情况
-h 节点:只显示指定的节点上的登录情况
-i IP:只显示指定的IP上登录的情况
-y:显示记录的年月日
-x:显示系统关闭、用户登录和退出的历史
w或者who可以查看目前已登录在系统上面的用户。
[root@localhost ~]# w
05:03:24 up 6:23, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 21:34 7:28m 1.08s 1.08s -bash
root pts/1 192.168.133.1 02:08 4.00s 0.59s 0.05s w
第一行显示目前的时间、开机多久、几个用户在系统上的平均负载等;
第二行只是各个项目的说明;
第三行以后,每行代表一个用户。
who:显示系统中有哪些用户登录了系统,显示的资料包含使用者ID、使用的登录终端、上线时间、空闲时间、CPU占用,以及做了些什么
who [options] [user]
-h:不要显示标题列
-u:不要显示使用者的动作/工作
-s:使用简短的格式来显示
-f:不要显示使用者的上线位置
如果想要知道每个账号的最近登录时间,则可使用lastlog查看,该命令会读取/var/log/lastlog文件
56.利用Linux文件系统权限控制文件访问:文件详细信息:
dr-xr-x—. 16 root root 4096 Aug 26 09:47 root
文件类型 权限 硬链接次数 属主 属组 文件大小 文件的最后一次修改时间 文件名
权限:属主的权限u 属组的权限g 其他人的权限o a
读:r 4
写:w 2
执行:x 1
000 0 —
001 1 --x
010 2 -w-
011 3 -wx
100 4 r–
101 5 r-x
110 6 rw-
111 7 rwx
rwxr-xr-x:755
修改文件的属主和属组:
chown 属主:属组 文件名
chown 属主.属组 文件名
chgrp 属组 文件名
修改权限:
chmod 777 文件名
chmod u/g/o/a =/+/- r/w/x 文件名
一般权限:
对于普通文件:r----可读取此文件的实际内容(cat查看文件);
w—可编辑该文件的内容(vim,echo),但并不具备删除该文件本身的权限(删除文件由文件的上层目录控制,跟文件本身的权限无关。)
x— 该文件具有可以被系统执行的权限,chmod
vim file
#!/bin/bash
echo ‘Hello Word!’
./file
对于目录文件:r—具有读目录结构列表的权限,可以查询该目录下的文件名数据(ls将该目录的内容列表显示出来)
w—空
x—用户能否进入该目录(cd),chmod
同时有w和x权限才可以创建、删除文件和目录
安全上下文指的是一类定义某个进程允许做什么的许可和权限的集合。
特殊权限:
suid:u+s,让进程不再属于它的发起者,而是属于程序文件本身。(suid只对二进制文件有效;调用者对该文件有执行权;在执行过程中,调用者会暂时获得该文件的所有者权限;该权限只在程序执行的过程中有效)
查找passwd的程序文件位置:which passwd
chmod u+s /usr/bin/passwd
查看进程信息:ps -ef
练习题:使用suid来实现普通用户可以查看密码文件
先找到查看命令的程序文件位置,which cat
sgid:g+s,对于普通文件,以组的权限执行,修改/usr/bin/touch的g+s,touch文件后文件所属组为root(作用于普通文件时,和suid类似);对于目录文件,目录的属组是谁,在目录下创建的文件的属组是目录的属组。
练习题:创建共享目录/test,share组的用户对/test目录里的文件可读可写。
1、创建/test,修改属组为share
2、g+s 共享目录里面新创建的文件属组是share
sticky:o+t,不能够删除其他用户在同目录里创建的文件,可删除自己创建的文件
1.创建目录/test
2.添加三个用户
3.让每一个用户在目录里面写文件
4.用户3删除1和2用户的文件
5.目录 o+t
6.重复3、4步操作,验证是否能够删除其他用户在同目录里创建的文件
ACL(Access Control List,访问控制列表)可以对某个文件设置该文件具体的某些用户的权限,意思就是通过ACL可以对一个文件权限做扩展,可以不同的用户对某个文件有不同的权限。
获取文件的访问控制信息:getfacl 文件名
setfacl 设置文件的acl
修改文件的acl:setfacl -m u:用户名:权限 文件名/目录名
setfacl -m g:组名:权限 文件名
setfacl -b 文件名
setfacl -x g/u:组名/用户名 文件名
权限掩码:控制创建文件的权限
查看权限掩码:umask 0022
当前面第一位为2和4权限就叫强制位,1的权限就是冒险位,2代表GID,4代表的是uid
修改权限掩码:umask 022
普通文件的权限属性:666
目录文件的权限属性:777
57. 向Linux系统添加磁盘分区和文件系统: linux里面硬盘根据硬盘接口的不同来命名:
IDE hd(a-d)
SATA/SCSI/U盘 sd(a-z)
一块磁盘默认可被分为四个分区,这四个分区分别为主分区或者扩展分区,在扩展分区上可创建逻辑分区。
fdisk -l 查看分区列表
fdisk /dev/sda对某一块磁盘进行分区
partprobe 将分区信息加载到内核
mkfs.ext4 /dev/sda5 添加文件系统,即格式化磁盘
fdisk -l 查看分区列表
临时挂载:mount 分区文件名 挂载点目录
mount 查看所有挂载的信息
永久挂载:通过blkid命令查看分区的uuid
vim /etc/fstab
uuid 挂载点目录 文件系统格式 defaults 备份(0表示不备份) 检查(0表示不检查)
mount -a 更新挂载信息或者reboot
卸载:umount 分区文件名 或 umount 挂载点目录
查看挂载磁盘挂载信息:df -h
新建分区扩展交换空间:
将分区类型修改为82
格式化:mkswap /dev/sda5
swapon /dev/sda5
swapon -s 查看当前激活的swap分区=cat /proc/swaps
写入/etc/fstab/,实现开机挂载
/dev/sda5 swap swap defaults 0 0
swapoff /dev/sdb1 关闭swap
文件系统与目录所占磁盘的容量:df,du
df:列出文件系统的磁盘空间占用情况;
du:显示磁盘空间使用量(统计目录或文件所占磁盘空间大小)。
两者区别:
du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和。
df,disk free,通过文件系统来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件, df记录的是通过文件系统获取到的文件的大小,他比du强的地方就是能够看到已经删除的文件,而且计算大小的时候,把这一部分的空间也加上了,更精确了。
当文件系统也确定删除了该文件后,这时候du与df就一致了。
df [-ahikHTm] [目录或文件名]
-a:列出所有的文件系统,包括系统特有的/proc等文件系统
-k:以KB的容量显示各文件系统
-m:以MB的容量显示各文件系统
-h:以人们较易阅读的GB、MB、KB等格式自行显示
-H:以M=1000k替代M=1024K的进位方式
-T:连同该分区的文件系统名称也列出(例如ext3)
-i:不用硬盘容量,而以inode的数量来显示
由于df主要读取的数据几乎都是针对整个文件系统,因此读取的范围主要是在Super block内的信息,所以这个命令显示结果的速度非常快速。
du [-ahskm] 文件或目录名称
-a:列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已
-h:以人们较易读的容量格式显示
-s:列出总量而已,而不出每个个别的目录占用容量,即查看该目录占了多少容量
-S:不包括子目录下的总计,与-s有点差别(等于du -s减去该目录下面的目录所占容量大小)
-k:以KB列出容量显示
-m:以MB列出容量显示
du这个命令会直接到文件系统内去查找所有的文件数据,在默认情况下,大小的输出是以KB来设计的。
58.管理Linux的联网:给网卡配置IP参数:
1、图形界面
2、修改网卡的配置文件vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
BOOTPROTO=none/stati
none表示不使用启动地址协议static静态地址协议
ONBOOT=yes在系统启动时激活网卡
IPADDR=192.168. .
NETMASK=255.255.255.0
GATEWAY=192.168. .1
IPAADDR1=192.168. .
修改完成之后,重启服务:systemctl restart network
网关配置文件:/etc/sysconfig/network
DNS配置文件:/etc/resolv.conf
3、命令行编辑:[root@localhost ~]# nmcli connection edit ens160
=| nmcli interactive connection editor |=
Editing existing ‘802-3-ethernet’ connection: ‘ens160’
Type ‘help’ or ‘?’ for available commands.
Type ‘print’ to show all the connection properties.
Type ‘describe [.]’ for detailed property description.
You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy
nmcli> go ipv4
You may edit the following properties: method, dns, dns-search, dns-options, dns-priority, addresses, gateway, routes, route-metric, route-table, ignore-auto-routes, ignore-auto-dns, dhcp-client-id, dhcp-timeout, dhcp-send-hostname, dhcp-hostname, dhcp-fqdn, never-default, may-fail, dad-timeout
nmcli ipv4> set addresses 192.168.100.138/24
nmcli ipv4> save
Connection ‘ens160’ (ba49eff7-67ed-4bcd-af6b-5372f2039d0c) successfully updated.
nmcli ipv4> activate ens160
4、命令行编辑
nmcli connection modify eno16777736 ipv4.addresses 192.168.168.2/24
nmcli connection modify eno16777736 +ipv4.addresses 192.168.168.168/24
nmcli connection modify eno16777736 ipv4.gateway 192.168.168.1
nmcli connection modify eno16777736 ipv4.method manual
nmcli connection modify eno16777736 connection.autoconnect yes
nmcli connection up eno16777736
5、文本图形界面nmcli
59.安装和更新软件包:软件安装:
(1)安装文件,例如qq.exe,使用rpm命令安装
(2)yum安装
(3)源码安装
(1)rpm:redhat package manager红帽软件包管理工具
1.挂载:mount /dev/sr0 /mnt
2.ls /mnt/Packages 查看软件包名
3.先切换到/mnt/Packages再安装rpm -ivh yp-tools-
i安装v详细信息h安装时列出标记“#”
删除软件:rpm -e tree(包名)
查询所有安装的软件包rpm -qa | grep tree
查看软件包释放的文件详细位置rpm -ql 包名
查看某个文件是哪个软件包释放的rpm -qf 文件名
rpm -Uvh 升级软件包;
(2)yum:Yellow dog Updater,Modified黄狗管理器,更新管理器,是一个在Fedora和RedHat以及CentOS中的shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
定义配置文件:vim /etc/yum.repos.d/base.repo
yum.repos.d目录下只认识.repo结尾的配置文件
本地源配置文件:
[base]源标识
name=base源名称
baseurl=file:///mnt/ 软件包的位置file本地文件://
enable=1,启用这个仓库或者源,一个源可以有多个仓库
gpgcheck的两种情况:指定是否需要查阅rpm文件内的数字签名,1为检查,0为不检查
gpgcheck=0 表示不检查
gpgcheck=1 检查需要指定gpgkey
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 如果上面gpg签名为不检查,那么这里就省略,如果是检查,需要配置。
查看源标识、源名称、状态:yum repolist
查看所有已经安装和可以安装的包:yum list
显示指定程序包安装情况:yum list 包名
不确定包名时可以搜索:yum search 命令
安装软件:yum install
删除软件:yum remove
本地rpm软件包:localinstall
(3)源码安装:
mkdir /1
下载tar-1.29.tar.gz
tar xvf tar-1.29.tar.gz
yum remove tar -y
切换到Redhat,找到解压的tar的目录,
执行./configure
以root用户安装:yum install gcc
-y 在配置之前要保证我们的编译器完整才可以进行配置,配置完成后进行编译,编译好进行安装
切换到redhat再执行./configure(检测当前系统是否具有安装软件所需的文件和工具。该过程主要是产生Makefile文件,该文件中定义了各个源文件之间的依赖关系,说明了如何编译源文件即生成可执行文件,通过描述各个源程序之间的关系来使make工具自动完成编译工作)
退回root,编译安装,切换到解压的目录,make进行编译 make install表示安装(安装完成)
which tar 现在存放的目录:/usr/local/bin/tar
tar xvf 压缩包 以前的存放目录:/usr/bin/tar
清空哈希表:hash -r
hash 实现缓存管理,缓存,在hash表中保存了执行过的命令所有的路径
问题:当缓存很大时,一定比PATH查找速度快吗?
hash 命令哈希
-p /bin/ls haha 添加哈希表
-t ls 查看指定命令的哈希表
-d ls 删除指定命令的哈希表
-r 清空所有的hash表


  1. q ↩︎

  2. 0-9 ↩︎

  3. qf ↩︎

相关文章:

  • Python程序员,你还在用selenium吗?试试Playwright吧
  • STM32Fxx位带操作还不会?哲学三问让你实现位带自由(含位带操作核心代码)以LED与键盘为例
  • 大厂笔试面试总汇目录
  • ESP32 LVGL8.1 M5 Core2 + LVGL + IDF 详细的移植教程 (30)
  • 【论文阅读】Search-Based Testing Approach for Deep Reinforcement Learning Agents
  • c++版模板匹配与特征金字塔结构
  • 软件工程和Maven
  • 基于haarlike特征提取和Adaboost 的红绿灯/人行道检测识别matlab仿真
  • React的高阶组件详解
  • Python基础快速入门
  • FigDraw 22. SCI文章中绘图之核密度及山峦图 (ggridges)
  • 并联四足机器人项目开源教程(一)--- 机器人学导论的学习
  • 【CSS】笔记6-精灵图、字体图标
  • 秒懂如何使用SpringBoot+Junit4进行单元测试
  • 【C++】模板进阶 — 模板的特化
  • 【附node操作实例】redis简明入门系列—字符串类型
  • Bootstrap JS插件Alert源码分析
  • java 多线程基础, 我觉得还是有必要看看的
  • LeetCode29.两数相除 JavaScript
  • Mocha测试初探
  • pdf文件如何在线转换为jpg图片
  • php的插入排序,通过双层for循环
  • 分布式熔断降级平台aegis
  • 盘点那些不知名却常用的 Git 操作
  • 如何在GitHub上创建个人博客
  • 06-01 点餐小程序前台界面搭建
  • Hibernate主键生成策略及选择
  • #微信小程序(布局、渲染层基础知识)
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (33)STM32——485实验笔记
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (四)JPA - JQPL 实现增删改查
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .gitignore
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net连接oracle数据库
  • /bin/bash^M: bad interpreter: No such file or directory
  • @AliasFor注解
  • [android] 切换界面的通用处理
  • [BJDCTF 2020]easy_md5
  • [C++]C++类基本语法
  • [FxCop.设计规则]8. 也许参数类型应该是基类型
  • [HDU] 1054 Strategic Game 入门树形DP
  • [JavaScript] JavaScript事件注册,事件委托,冒泡,捕获,事件流
  • [jquery]this触发自身click事件,当前控件向上滑出
  • [lintcode easy]Maximum Subarray
  • [MAC OS] 常用工具
  • [NHibernate]条件查询Criteria Query
  • [poj 2001]Shortest Prefixes [Trie]
  • [POJ2411]Mondriaan's Dream
  • [Pytorch] pytorch笔记 三
  • [React]全自动数据表格组件——BodeGrid
  • [Redis] Redisson实现分布式锁