目录
2.2.2 文件处理命令 cd(change directory)
2.2.3 文件处理命令 pwd(print working directory)
2.2.5.文件处理命令 mkdir(make directory)
2.2.9 文件处理命令 cat(concatenate and display files)
2.2.18 压缩解压命令 gunzip(GUN unzip)
2.2.24 权限管理命令 chmod(change the permissions mode of a file)
2.2.27 帮助命令 whatis(search the whatis database for strings)
2.2.28 rpm命令 (Redhat Package Manager)
二、常用指令、vim、用户管理
2.1 常用指令
什么是命令?
指在Linux终端(命令行)中输入的内容就称之为命令。
命令的格式
一个完整的命令的标准格式:Linux通用的格式:
\#指令主体 [选项] [操作对象]
每一个模块之间要有空格,选项和操作对象可以没有
一个指令可以包含多个选项,操作对象也可以是多个
例如:张三 去操场 跑圈
2.1.1 文件处理命令 ls (list)
功能描述:显示文件目录
语法: ls 选项[-ald]
-a 显示所有文件,包括隐藏文件 (all)
ls -a
-l 详细信息显示
ls -l 或者 ll
-d 查看目录属性
ls -d
-h 以可读性较高的形式显示 一般和l连用 ls -lh 比如会自动转换文件大小单位为K
可以连用 比如展示所有文件的详细信息
ls -al
也可以直接展示某一个文件夹的东西(当前目录下有aaa文件夹)
ls aaa : 可以直接展示aaa文件夹中的文件目录
2.2.2 文件处理命令 cd(change directory)
功能描述:切换目录
范例: cd / 切换到根目录
cd .. 回到上一级目录
路径可以是相对路径也可以是绝对路径
以/开头的是绝对路径
不以/开头的是相对路径
~代表的是当前用户的家目录
[root@localhost ~]# cd /
2.2.3 文件处理命令 pwd(print working directory)
功能描述:显示当前所在的工作目录
范例: pwd
当前在根目录下的tmp文件夹中
[root@localhost tmp]# pwd
/tmp
2.2.4. 文件处理命令 touch(touch)
功能描述:创建空文件
范例: touch newfile
newfile可以是一个文件名也可以是一个包含文件路径的文件名
创建一个文件
touch aaa.txt
创建一个文件夹
touch bbb
创建一个包含文件路径的文件名(这个文件一定要存在)
touch bbb/bbb.txt
使用touch来同时创建多个文件 touch 文件1 文件2
创建两个文件夹
touch aaa bbb
注意:不能创建多层文件
2.2.5.文件处理命令 mkdir(make directory)
功能描述: 创建新目录
范例: mkdir newdir
创建单个文件夹
mkdir aaa
创建多层文件夹的时候使用的是 mkdir -p 文件夹/文件夹1
当一次性创建多层不存在的目录的时候,添加-p参数,否则会报错
创建文件夹aaa,里面有bbb 在里面有ccc
mkdir -p aaa/bbb/ccc
一次性创建多个目录 mkdir 目录1 目录2 目录3
创建三个同级文件夹
mkdir aaa bbb ccc
注意:文件的颜色的含义
drwxr-xr-x. 3 root root 17 Feb 7 01:28 aaa [蓝色] 以d为开头的是目录
-rw-r--r--. 1 root root 0 Feb 6 21:17 aaa.txt [白色] 以-为开头的是文件
-rw-r--r--. 1 root root 0 Feb 6 21:18 bbb [白色]
-rwx------. 1 root root 836 Feb 6 05:22 ks-script-qQAiyE [白色]
2.2.6.文件处理命令 cp (copy)
功能描述:复制文件或目录
语法: cp [源文件或目录] [目的目录]
复制文件aaa.txt到目录bbb中
cp aaa.txt bbb
cp -r [被复制的文档路径] [文档被复制到的路径]
当使用cp命令进行文件夹复制操作的时候需要添加选项“-r”【-r表示递归复制】,否则目录将被忽略
复制目录aaa以及aaa中的bbb 到 另外一个目录bbb中
cp -r aaa bbb
复制文件的时候也可以更改文件名或者目录名(但是非必要情况下不建议这么做)
复制文件aaa.txt到目录bbb中,并将其更名为ccc.txt
cp aaa.txt bbb/ccc.txt
2.2.7 文件处理命令 mv (move)
功能描述:移动文件 更名
语法: mv [源文件或目录] [目的目录]
移动文件aaa.txt 到 目录bbb下并更名为xxx.txt
mv aaa.txt bbb/xxx.txt
mv 重新命名
mv 【原文件名】【新文件名】
将名为aaa.txt的文件更名为bbb.txt
mv aaa.txt bbb.txt
2.2.8 文件处理命令 rm(remove)
功能描述:删除文件
语法: rm -rf [文件或目录]
-r 递归的删除目录
-f force 强制删除
删除文件file3
rm file3
然后系统会询问是否要删除,这个时候输入y即可删除文件
强制删除目录dir1
rm -rf dir1
2.2.9 文件处理命令 cat(concatenate and display files)
功能描述:显示文件内容
语法: cat [文件名]
展示路径 /etc/issue 文件的内容
cat /etc/issue
cat还可以对文件进行合并
语法2:#cat 待合并的文件路径1 待合并的文件路径2 …. 文件路径n > 合并之后的文件路径
合并文件test1.txt与test2.txt文件为当前目录下的test3.txt文件
cat test1.txt test2.txt > ./test3.txt
2.2.10 文件处理命令 more
功能描述:分页显示文件内容
语法: more [文件名]
如果文件过长时会分成多页显示
(空格) 或 f 显示下一页
(Enter) 显示下一行
Q或q退出
范例:more /etc/issue
2.2.11 文件处理命令 head
功能描述: 查看文件的前几行
语法: head -num [文件名]
-num 显示文件的前num行
显示路径为/etc/issue文件的前20行
范例: head -20 /etc/issue
2.2.12 文件处理命令 tail
功能描述:查看文件的后几行
语法: tail -num [文件名]
-num 显示文件的后num行
-f 动态显示文件内容
显示文件的后30行
tail -30 /etc/issue
动态显示文件的内容:tail -f 文件的名字
tail -f aaa.txt
如果在新链接中修改了当前文件中的内容,那么这边也会同步的进行修改,所以是动态显示文件中的内容
2.2.13 文件处理命令 wc(word count)
功能描述:统计文本的行数、字数、字符数
语法: wc -mwl [文件名]
-m 统计文本字符数
-w 统计空格字数
-l 统计文本行数
统计文件aaa.txt的文本字符数
wc -m aaa.txt
2.2.14 文件处理命令 ln (link)
功能描述:产生链接文件
语法: ln -s [源文件] [目标文件]
-s 创建软链接 (soft)
创建文件/etc/issue的软连接/issue.soft
范例: ln -s /etc/issue /issue.soft
软链接就相当于是windows里面的快捷方式
语法: ln -h [源文件] [目标文件]
-h 硬连接 (hard)
创建文件/etc/issue的硬连接/issue.hard
ln -h /etc/issue /issue.hard
硬链接就相当于是创建一个副本
2.2.15 文件搜索命令 find
功能描述:查找文件或目录
语法: find [搜索路径] [选择项] [搜寻关键字]
在目录/etc中查找文件init(最常用)
范例: find /etc -name init
在根目录下查找大于100MB的文件
find / -size +102400
在根目录下查找所有者为sam的文件
find / -user sam
在/etc查找24小时内被修改过属性的文件和目录
find /etc -ctime -1
在/etc查找大于80MB小于100MB的文件
find /etc -size +163840 -a -size -204800
在linux中数据块是最小存储单位,通过文件大小查找的先换算成数据块
1个数据块 = 512字节 = 0.5K
100MB = 102400KB = 204800
在/etc下查找init文件并显示其详细信息
find /etc -name init -exec ls -l {}
-type:按照文档的类型进行搜索
文档类型:“-”表示文件(在使用find的时候需要用f来替换),“d”表示文件夹
搜索/etc/sane.d/目录下所有的文件
find /etc/ssh/ -type f
2.2.16 文件搜索命令 grep(常用)
功能描述:在文件中搜寻字符串匹配的行并输出
语法:grep [选项] [指定字串] [源文件]
-i 不区分大小写
-v 排除关键字
-w 完全匹配关键字
查询文件/etc/service包含ftp的行
grep ftp /etc/service
在文件aaa.txt中忽略大小写的匹配包含A的行
grep -i A aaa.txt
在文件aaa.txt中不匹配包含a的行
grep -v a aaa.txt
在文件aaa.txt中完全匹配包含a的行(即这一行只有一个a)
grep -w a aaa.txt
2.2.17 压缩解压命令 (GUN zip)
功能描述:压缩文件
语法: gzip 选项 [文件]
压缩后文件格式: .gz
压缩文件aaa.txt
gzip aaa.txt
压缩完的文件为aaa.txt.gz
2.2.18 压缩解压命令 gunzip(GUN unzip)
功能描述:解压缩 .gz 的压缩文件
语法:gunzip 选项 [压缩文件]
解压缩文件aaa.txt.gz
gunzip aaa.txt.gz
2.2.19 压缩解压命令 tar
功能描述:打包目录
语法:tar cvfz [压缩后文件的名字] [要压缩的文件或目录]
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
压缩aaa.txt 文件为 test.tar
tar -cvf test.tar aaa.txt
解压缩语法 tar -zxvf [要解压的压缩文件] -C [目的目录]
-x 解压.tar文件
-v 显示详细信息
-f 指定解压文件
-z 解压缩
将当前目录下的test.tar压缩文件解压到aaa目录下
tar -xvf test.tar -C aaa
2.2.20 压缩解压命令 zip
功能描述:压缩文件或目录
语法:zip 选项[-r] [压缩后文件名称] [要压缩的文件或目录]
-r 压缩目录
压缩后文件格式: .zip
2.2.21 压缩解压命令 unzip
功能描述:解压.zip的压缩文件
语法:unzip [压缩文件]
unzip test.zip
2.2.22 压缩解压命令 bzip2
功能描述:压缩文件
语法:bzip2 选项 [-k]
-k 产生压缩文件后保留原文件
压缩后文件格式: .bz2
2.2.23 压缩解压命令 bunzip2
功能描述:解压缩文件
语法:bunzip2 选项[-k]
-k 解压缩文件后保留原文件
2.2.24 权限管理命令 chmod(change the permissions mode of a file)
功能描述:改变文件或目录权限
查看权限:
使用ls -alh 命令可以查看文件或者目录的权限,一个文件或者目录对于所属者、所属组、其他人的权限有读写执行。
drwxrwxrwt. 11 root root 4.0K Feb 7 03:46 .
dr-xr-xr-x. 17 root root 224 Feb 6 05:21 ..
drwxr-xr-x. 2 root root 21 Feb 7 03:51 aaa
-rw-r--r--. 1 root root 62 Feb 7 03:28 aaa.txt
drwxr-xr-x. 2 root root 6 Feb 7 03:27 bbb
拿最后一个bbb目录举例:
第一个字母为d所以是目录
第2-4个字母为rwx,所以 当前用户 对该目录有读、写、执行权限
第5-7个字母为r-x,所以 当前用户所在组 对该目录有读、执行权限
第8-10个字母为r-x,所以 当前用户所在组以外的人 对该目录有读、执行权限
第一位表示文件类型。如果是 - 表示文件,d 表示是文件夹
第2-4表示当前用户对该文件具有的权限 r是read读,w是write写,x表示可以执行
第5-7表示当前用户所在组对该文件/文件夹的权限
第8-10表示出了这个组以外的人对该文件的权限
语法:chmod [{ugo}{+-=}{rwx}] [文件或目录]
u:代表所属者
g:代表当前组
o:代表另外的人
+:代表新增权限
-:代表减去权限
=:代表设置为(覆盖)
r:代表读权限
w:代表写权限
e:代表执行权限
对于file1文件(目录) 当前组的成员增加写权限
范例: chmod g+w file1
第二种语法
[mode=421] [文件或目录]
r(read) 等于 4 代表读权限
w(write) 等于 2 代表写权限
x(execute) 等于 1 代表执行权限
设置当前用户,当前用户所在组,以及另外的人对该文件或目录拥有读、写、执行权限
chmod 777 目录/文件
一般来说给750权限已经够用了
2.2.25 帮助命令 man(manual)
功能描述:获得帮助信息
语法:man [命令或配置文件]
获得关于ls的帮助信息
范例: man ls
Ctrl + z退出
2.2.26 帮助命令 info(information)
功能描述:获得帮助信息
语法:info [任何关键字]
获得关于ls的帮助信息
范例: info ls
Ctrl + z退出
2.2.27 帮助命令 whatis(search the whatis database for strings)
功能描述:获得索引的简短说明信息
语法:whatis apropos[任何关键字]
获得关于ls的说明信息
whatis ls
apropos fstab 相当于 man -k
测试:
[root@localhost tmp]# apropos fstab
fstab (5) - static information about the filesystems
systemd-fstab-generator (8) - Unit generator for /etc/fstab
makewhatis
建立whatis和apropos搜索使用的数据库,当使用这两个命令发生错误时,就是数据库没有建立
2.2.28 rpm命令 (Redhat Package Manager)
常用参数:
套件就是软件包,| 是管道通信符
-a | 查询所有的软件包 |
---|---|
-b或-t | 设置包装套件的完成阶段,并指定套件档的文件名称; |
-c | 只列出组态配置文件,本参数需配合”-l”参数使用 |
-d | 只列出文本文件,本参数需配合”-l”参数使用 |
-e | 卸载软件包:<套件档>或--erase<套件档> |
-f | 查询文件或命令属于哪个软件包 |
-h或--hash | 安装软件包时列出标记 |
-i | 安装软件包:<套件档>或--install<套件档> |
-l | 显示软件包的文件列表 |
-p | 查询指定的rpm软件包 |
-q | 查询软件包:使用询问模式,当遇到任何问题时,rpm指令会先询问用户 |
-R | 显示软件包的依赖关系;显示套件的关联性信息 |
-s | 显示文件状态,本参数需配合”-l”参数使用 |
-U | <套件档>或--upgrade<套件档>:升级软件包 |
-v | 显示命令执行过程 |
-vv | 详细显示指令执行过程,便于排错 |
安装
rpm -ivh xxx.rpm # 直接安装
rpm --force -ivh xxx.rpm # 忽略报错,强制安装
卸载
列出所有安装过的包
[root@localhost ~]# rpm -ql tree # 查询
[root@localhost ~]# rpm -e tree # 卸载
[root@localhost ~]# rpm -ql tree # 查询
#如何获得某个软件包的文件全名
[root@localhost ~]# rpm -qa
#rpm包中的文件安装的位置
[root@localhost ~]# rpm -q tree
#哪个软件包包含这个程序
[root@localhost ~]# rpm -ql tree
#返回软件包的全名
[root@localhost ~]#rpm -qf 程序名
#返回软件包的有关信息
[root@localhost ~]#rpm -qif 程序名
#返回软件包的文件列表
[root@localhost ~]#rpm -qlf 程序名
[root@localhost tmp]# rpm -qf shd
2.2.29 输出重定向
一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。
>:覆盖输出,会覆盖掉原先的文件内容
>>:追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加
语法:#正常执行的指令 > / >> 文件的路径
注意:文件可以不存在,不存在则新建
使用覆盖重定向,保存ls -la的执行结果,保存到当前目录下ls.txt
ls -la>ls.txt
使用追加重定向,追加ls -la的执行结果到当前目录下ls.txt的文件
ls -la>>ls.txt
2.2.30 ps -ef 指令(重点)
作用:主要是查看服务器的进程信息
选项含义:
-e:等价于“-A”,表示列出全部的进程
-f:显示全部的列(显示全字段)
查询当前运行的所有进程
ps -ef
单独查询关于redis的进程
ps -ef|grep redis
|是管道通信服
假如当前没有Redis的进程,但是当前指令会产生一个关于redis的进程
单独查询关于redis的进程,并且忽略当前进程产生的进程
ps -ef|grep redis|grep -v redis
2.2 vim编辑器
2.2.1 vim介绍
进行最小安装的时候没有vim命令的需要我们进行手动安装
安装vim
yum -y install vim
vim是Unix / Linux上最常用的文本编辑器而且功能非常强大。
vim的这些优势主要体现在以下几个方面:
1.vim拥有所有vi命令功能;
2.vi只能在Unix / Linux,vim可以在Unix / Linux,windows系统上使用
3.vim编辑器,自动根据文件你内容显示不同的颜色
2.2.2 vim使用方法
1、进入页面
vim 文件名
2、进入编辑模式
输入 i 进入编辑模式,底部会显示 insert
3、保存或退出
从编辑模式退出 按esc
在输入:wq 单击回车,保存修改的内容并退出页面
或者 输入:q 单击回车,不保存内容退出页面
输入:wq! 单击回车 是强制保存
vim的模式分类
基本上vim可以分为三种状态,分别是命令模式 (command mode)、插入模式 (Insert mode) 和底行模 式 (last line mode).
命令行模式:在该模式下是不能对文件直接编辑,可以输入快捷键进行一些操作(控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last )
插入模式:也称为编辑文本模式 只有在Insert mode下,才可以做文字输入,按 「ESC」键可回到命令行模式。
底行模式: 将文件保存或退出vi,也可以设置编辑环境,如搜索、替换、保存、退出、撤销、高亮等等
不过一般我们在 使用时把vi简化成两个模式,就是将底行模式 (last line mode)也算入命令行模式(command mode)。
2.2.3 插入命令
这里的插入,只是在进入编辑模式时,光标会移到相应的位置,在插入时还是在字的前面进行插入
i 在光标前插入
I 在光标当前行开始插入(大写字母i)
a 在光标后插入
A 在光标当前行末尾插入
o 在光标当前行的下一行插入新行
O 在光标当前行的上一行插入新行
2.2.4 定位命令
:set nu 显示行号
:set nonu 取消行号
gg 到文本的第一行 (双击g即可)
G 到文本的最后一行
:n 到文本的第n行
$ 当前行的最后一个字符
2.2.5 替换和取消命令
「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。
按多次"u"可以执行多次恢复.就相当于"CTRL +Z"的操作.
Ctrl+r 返回到undo之前(取消撤销操作)
r 替换光标所在处字符(点击r后输入要替换的字符)
R 从光标所在处开始替换,按esc结束(替换掉当前光标的字)
在命令模式下使用“s/原字符/新字符/g” 代表当前行所有
如果想全局替换,s变为%s
文件内全部替换:
:%s#abc#123#g (如文件内有#,可用/替换,:%s/abc/123/g)
--注:把文件中所有的abc替换成123
(或者: %s/str1/str2/g 用str2替换文件中所有的str1)
文件内局部替换:
:20,30s#abc#123(如文件内有#,可用/替换,:%s/abc/123/g)
--注:把20行到30行内abc替换成123
2.2.6 删除命令
x 删除光标所在字符
nx 删除光标所在处后n个字符
dd 删除光标所在行, ndd删除n行
dG 删除光标所在行到末尾行的所有内容
D 删除光标所在处到行尾的内容,但不删除当前行号
:5,7d 删除指定范围的行,从第5行到第7行
2.2.7 常用快捷键
Shift+ zz 保存退出,与“:wq”作用相同
v 进入字符可视模式 单击esc退出
V 或 Shift + v 进入行可视模式 单击esc退出
Ctrl + v 进入块可视模式 单击esc退出
2.2.8 快捷键
Linux中vi编辑器的使用详解,下面的引号和括号不算
光标的移动除了键盘上的上下左右键.也可以是小写模式下,按键盘上的"h,j,k,l",
"ctrl+b":屏幕往后移动一页
"ctrl+f":屏幕往前移动一页
"ctrl+u":屏幕往后移动半页
"ctrl+d":屏幕往前移动半页
小技巧测试:
输入任何一个整数,然后输入"shift+G" 就可以到这一页的开头了
按键盘上的大写"G"移动到文章的最后.
按"$"符号将光标移动到行尾
"^"将光标移到行头
"w":将光标移到下一行头
b":跟"w"相反.移到上一行行头
"e":将光标移到下一行尾.
如果想让文本显示行号.就在【命令行】 模式下,在文本最后输入":set nu"命令.就可以了
2.2.9 复制
「yw」:将光标所在之处到行尾的字符复制到缓冲区中。
「yy」:复制光标所在行到缓冲区。
「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。
将缓冲区内的字符贴到光标所在位置。
注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴 功能。
单击p进行粘贴
2.2.10查找
用"/"加上要查找的内容.例如"/hello"或者是"?hello"也是可以的.
2.3 用户权限管理和时间
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的密码。
用户在登录时键入正确的用户名和密码后,就能够进入系统和自己的主目录。
要想实现用户账号的管理,要完成的工作主要有如下几个方面:
用户账号的添加、删除、修改以及用户密码的管理。
用户组的管理。
注意三个文件:
/etc/passwd 存储用户的关键信息
/etc/group 存储用户组的关键信息
/etc/shadow 存储用户的密码信息
显示当前登录的用户,指令:whoami
[root@localhost tmp]# whoami
root
2.3.1 用户管理
1、查看用户信息
使用cat命令来查看一下保存用户信息的文件 ,保存用户信息的文件保存在 /etc/passwd文件里面
: 号代表含义:域分隔符
yyl:x:1000:1000:yyl:/home/yyl:/bin/bash
root:x:0:0:root:/root:/bin/bash
域分割符这个文件有7个域分别是:
root : x : 0 : 0 : root : /root : /bin/bash
用户名 : 密码 : 用户ID : 用户组ID : 注释 : 家目录 : 解释器shell
①用户名:创建新用户名称,后期登录的时候需要输入
②密码位:此密码位置一般情况都是“x”,表示密码的占位
③用户标示号:用户的识别符
④默认组标示号:该用户所属的主组ID;
⑤注释:用于描述用户的信息
⑥家目录:用户登陆系统的默认目录,默认是在/home/下、
⑦解释器:等待用户进入系统之后,用户输入指令之后,该解释器会收集用户输入的指令,传递给内核处理;
根用户都是从0开始的(第三个域)
除了第一行root外,下面的都是操作系统的伪用户(除普通用户外)
超级用户:(root,UID=0)
普通用户:(UID在500到60000)
伪用户: (UID在1到499)
伪用户不能登录系统,而且没有宿主目录
为什么需要伪用户:没有用户登录时,linux系统依然要运行,有很多进程在跑着,所以必须需要一些伪用户来执行那些命令。
2、查看密码信息
保存密码的文件:/etc/shadow
:号的含义
root:$6$J9cmTufd7dm5PtYM$GE/bIyz4COry4YaANCqpoKinW37klh9nf8JCh4kwBzOyUfeSzvPn6kmug2LMGLPnCHTo40JCs1c/tCE1mDEmi.::0:99999:7:::
用户名:密码:更改密码的日期:密码不可被更改的天数(0随时可以更改):密码需要更新的时间:提前几天进行提醒
1. 帐号名称:由于密码也需要与帐号对应啊~因此, 这个档案的第一栏就是帐号,必须要与 /etc/passwd 相同才行!
2. 密码:这个才是真正的密码,而且是 经过编码过的密码啦!
3. 最近更动密码的日期:这个栏位记录了‘更动密码的那一天’的日期, 不过,这里展示的是数字18492 那是因为计算 Linux 日期的时间是以 1970 年 1 月 1 日作为 1 ,而 1971 年 1 月 1 日则为 366 啦! 所以这个日期是累加的那么2020年8月19日就是18492
4. 密码不可被更动的天数: 第四个栏位记录了这个帐号的密码需要经过几天才可以被变更!如果是 0 的话, 表示密码随时可以更动的意思。这的限制是为了怕密码被某些人一改再改而设计的!如果设定为 20 天的话,那么当你设定了密码之后, 20 天之内都无法改变这个密码!
5. 密码需要重新变更的天数: 由于害怕密码被某些‘有心人士’窃取而危害到整个系统的安全,所以有了这个栏位的设计。 你必须要在这个时间之内重新设定你的密码,否则这个帐号将会暂时失效。 而如果像上面的 99999 的话,那就表示,呵呵,密码不需要重新输入啦! 不过,如果是为了安全性,最好可以设定一段时间之后,严格要求使用者变更密码呢!
6. 密码需要变更期限前的警告期限:当帐号的密码失效期限快要到的时候, 就是上面那个‘必须变更密码’的那个时间时, 系统会依据这个栏位的设定,发出‘警告’言论给这个帐号,提醒他‘再过 n 天你的密码就要失效了,请尽快重新设定你的密码呦!’,如上面的例子,则是密码到期之前的 7 天之内,系统会警告该用户。
7. 密码过期的恕限时间:如果用户过了警告期限没有重新输入密码, 使得密码失效了,也就是说,你在‘必须变更密码的期限前,并没有变更你的密码!’ 那么该组密码就称为‘失效的密码’啰~怎么办?没关系,还有这个栏位的天数设计啊 意思就是说,当密码失效后,你还可以用这个密码在 n 天内进行登入的意思。 而如果在这个天数后还是没有变更密码,那么您的帐号就失效了!无法登入!
8. 帐号失效日期:这个日期跟第三个栏位一样,都是使用 1970 年以来的总日数设定。这个栏位表示: 这个帐号在此栏位规定的日期之后,将无法再使用。 这个栏位会被使用通常应该是在‘收费服务’的系统中, 你可以规定一个日期让该帐号不能再使用啦!
保留:最后一个栏位是保留的,看以后有没有新功能加入。
保存用户组的文件:/etc/group
保存用户组密码的文件:/etc/gshadow
用户配置文件:/etc/default/useradd
2.3.2 用户管理操作
提示:所有跟用户操作的命令(除passwd外)只有root超级管理员有权限执行。
1、添加用户
useradd [选项] 用户名
常用选项:
-g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名
-G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名
-u:uid,用户的id(用户的标识符),系统默认会从1000之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义
-c comment:添加注释
案例:创建用户 test 不带任何选项
useradd test
验证是否成功:
a. 验证 cat /etc/passwd 的最后一行,查看是否有test的信息;
b. 验证 cat /etc/shadow 中是否存在家目录(在Centos下创建好用户之后随之产生一个同名家目录)
注意:在不添加选项的时候,执行useradd之后会执行一系列的操作
a. 创建同名的家目录; (home/test)
b. 创建同名的用户组;(test)
案例:添加选项,创建用户lwl01,让lwl01属于1000主组,附加组1001,自选号6666,注释是 lwl01。
useradd -g 1000 -G 1001 -u 6666 -c lwl01 lwl01
注意:在设置主组和附加组之前,这两个组名是要存在的,否则不能添加成功
可以先创建一个用户组
创建一个UID为1005,组名为lll的用户组
groupadd -g 1005 lll
2、修改用户 (user modify)
usermod [选项] 用户名
常用选项:
-g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名
-G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名
-u:uid,用户的id(用户的标识符),系统默认会从1000之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义号
-l:修改用户名(小写字母l)
修改lwl01的主组为1001,附加组为1000
usermod -g 1001 -G 1000 lwl01
查询用户所在的组
groups 用户名 --- 用户所在的组
修改lwl01用户名为lwl02
usermod -l 新的用户名 旧的用户名
usermod -l lwl02 lwl01
3、修改用户密码
Linux不允许没有密码的用户登录到系统,因此前面创建的用户目前都处于锁定状态,需要设置密码之后才能登录计算机。
语法:passwd 用户名
可以在shadow文件中能够看出用户是否有密码。(cat /etc/shadow)
有密码:很长一段编码过后的字符
无密码:两个!!
修改test密码
passwd test (重复两次密码即可进行登录)
成功后提醒:passwd: all authentication tokens updated successfully.
4、切换用户 (switch user)
切换用户命令:su [用户名]
注:从root往普通用户切换不需要密码,但是反之则需要root密码
5、删除用户
常用语法:userdel [选项] 用户名
常用选项:
-r:表示删除用户的同时,删除其家目录
已经登录的yuyongli用户删除的时候提示删除失败,但是没有登录的lisi用户可以正常删除
案例:删除已经登录的test用户
因为test用户已经登录,所以想要删除用户需要进行强制删除
1、ps -ef|grep test:查出当前正在运行的进程编号
2、kill -9 xxx:强制结束进程编号
3、userdel test:再次删除
先停止进程,即可以强制删除当前登录的用户
6、查看用户有谁
ls /home
7、锁定用户:(LOCK)
usermod -L 用户名
8、解锁用户:(UNLOCK)
usermod -U 用户名
2.3.3 用户组管理操作
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
文件结构:
lwl:x:1000:lwl,lwl01
用户组名:密码:用户组ID:组内用户名
密码:X表示占位符,虽然用户组可以设置密码,但是绝大部分的情况下不设置密码;
组内用户名:表示附加组是该组的用户名称
1、添加用户组
常用语法:#groupadd [选项] 用户组名
常用选项:
-g:类似用户添加里的“-u”,-g表示选择自己设置一个自定义的用户组ID数字,如果自己不指定,则默认从1000之后递增;
案例:使用groupadd指令创建一个新的用户组,命名为xxx
groupadd xxx
案例:使用groupadd指令创建一个新的用户组,指定用户组ID为1005,命名为lll
groupadd -g 1005 lll
2、更改组名称
groupmod [选项] 新组名 老组名
常用选项:
-g:类似用户修改里的“-u”,-g表示选择自己设置一个自定义的用户组ID数字
-n:类似于用户修改“-l”,表示设置新的用户组的名称
案例:修改lll用户组,将组ID从1005改成1006,将名称改为admins
groupmod -g 1006 -n admins lll
cat /etc/group 可以查看是否成功
3、删除组
groupdel 组名
注意:当如果需要删除一个组,但是这个组是某个用户的主组时,则不允许删除;如果确实需要删除,则先从组内移出所有用户。
4、修改用户组
语法:usermod -gG 用户组 用户名
注:-g|–gid,修改用户的gid,修改前该组一定存在
修改单组:
修改test为组名为lwl的组id为1000的组
usermod -g 1000 test
或者是 usermod -g lwl test
修改多组:
修改test的组 为组名为lwl,id为1000的组 和 组名为admins,组id为1006的组
usermod -G 1000,1006 test
或者是 usermod -g lwl,admins test
5、给文件授权到组
-- change group 修改组
语法:chgrp 组名 文件名
修改文件所属用户组身份信息
chgrp test /tmp/aaa.txt
6、设置文件权限
设置当前用户对该文件或目录拥有读、写、执行权限
当前用户所在组对文件拥有读、执行的权限
另外的人对当前文件没有权限
chmod 750 /home/test
用数字来表示权限(r=4,w=2,x=1,-=0)
2.4 时间
1、查看当前时间
[root@localhost ~]# date
2、格式化当前的时间
date "+%Y-%m-%d %H:%M:%S" 或者是 date "+%F %T"
2023-02-08 03:27:07
3、获取之前或者之后的某个时间(备份)
获取一天之前的时间
\#date -d "-1 day" "+%Y-%m-%d %H:%M:%S"
符号的可选值:+(之后) 或者 - (之前)
单位的可选值:day(天)、month(月份)、year(年)
%F:表示完整的年月日
%T:表示完整的时分秒
%Y:表示四位年份
%m:表示两位月份(带前导0)
%d:表示日期(带前导0)
%H:表示小时(带前导0)
%M:表示分钟(带前导0)
%S:表示秒数(带前导0)
4、查看硬件时间
[root@localhost ~]# hwclock
Sun 21 Feb 2021 09:59:01 PM PST -0.992879 seconds
如果是普通用户会报错:
hwclock: Cannot access the Hardware Clock via any known method.
hwclock: Use the --debug option to see the details of our search for an access method.
5、设置当前的时间
[root@localhost ~]# date -s "2021-2-22 14:00"
Mon Feb 22 14:00:00 PST 2021
6、将系统时间同步到硬件时钟
[root@localhost ~]# hwclock --systohc
或者是
[root@localhost ~]# date && hwclock
7、时间不一致的问题:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime