慕课网-Linux达人养成计划学习笔记

时间:2022-03-18 07:55:56

mkdir -p [目录]
创建目录
-p 递归创建
ls 查看当前目录下的文件和目录等其他文件

cd [目录]
命令英文愿意:change directory
切换所在目录
简化操作
cd ~ 进入当前用户的家目录
cd
cd - 进入上次目录
cd .. 进入上级目录
cd . 进入当前目录

linux 的Tab键可以自动补全文件名称或命令名称

pwd
查询所在目录位置
命令英文愿意:print working directory

rmdir [目录名]
命令英文原意:remove empty directories
作用:删除空目录

rm -rf [文件或目录]
命令英文原意:remove
选项:
-r 删除目录
-f 强制

touch 创建空文件

cp [选项] [源文件或目录] [目标目录]
命令英文原意:copy
作用:复制命令
选项:
-r 赋值目录
-p 连带文件属性复制
-d 若原文件是链接文件,则赋值链接属性
-a 相当与 -pdr

mv [原文件或目录] [目标目录]
命令英文原意:move
作用:剪切或改名

硬链接特征:
1.拥有相同的i节点和存储block快,可以看作是同一个文件
2.可通过i节点识别
3.不能跨分区
4.不能针对目录使用

软链接特征:
1.类似Windows快捷方式
2.软链接拥有自己的I节点和Block块,但是数据块照顾你只保存员文件的文件名和I节点号,并没有实际的文件数据
3.|rwxrwxrwx|软链接 权限都是这样的
4.修改任意文件,另一个都改变
5.删除原文件,软链接不能使用

ln -s [原文件] [目标文件] :软链接
ln [原文件] [目标文件] :硬链接

做软链接 原文件一定要写绝对路径

文件搜索命令locate
命令搜索命令whereis与which
文件搜索命令find
字符串搜索命令grep
find命令与grep命令的区别

locate 文件名
在后台数据库中按文件名搜索,搜索熟读更快

/var/lib/mlocate
#locate命令所搜索的后台数据库

updatedb
更新数据库

/etc/updatedb.conf配置文件
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS =
PRUNENAMES=

find /var/log/ -mtime +10
#查找10天前修改的文件

-10(<) 10天内修改文件
10(=) 十天当天修改的文件
+10(>) 十天前修改的文件

atime 文件访问时间
ctime 改变文件属性
mtime 修改文件内容

find . -size 25k
#查找文件大小时25kb的文件
-25k 小于25k
25k 等于
+25k 大于

find . -inum 262422
#查找i节点是262422的文件

find /etc -size +10k -a -size -100k
#查找/etc/目录下,大于10kb并且小于100kb的文件
-a and 逻辑与
-o or 逻辑或
find /etc -size +10k -a -size -100k -exec ls -lh {} \;
#查找/etc/目录下,大于10KB并且小于100KB的文件,并显示详细信息
#-exec/-ok 命令 {}\;对搜索结果执行操作

搜索字符串命令grep
.grep [选项] 字符串 文件名
#在文件当中匹配符合条件的字符串
选项:
-i 忽略大小写
-v 排除指定字符串

帮助命令man
man 命令
#获取指定命令的帮助

man ls
#查看ls的帮助

查看命令拥有那个级别的帮助
man if 命令
相当于
whatis 命令
举例:
man -5 passwd
man -4 null
man -8 ifconfig

man的帮助级别
1:查看命令的帮助
2:查看可被内核调用的函数的帮助
3:查看函数和函数库的帮助
4:查看特殊文件的帮助(主要是/dev目录下的文件)
5:查看配置文件的帮助
6:查看游戏的帮助
7:查看其他杂项的帮助
8:查看系统管理员可用命令的帮助
9:查看和内存相关文件的帮助

查看和命令相关的所有帮助
man -k 命令
相当于
apropos 命令

例如:
apropos passwd

选项帮助
命令 --help
#获取命令选项的帮助

例如:ls --help

shell 内部命令帮助
help shell 内部命令
#获取shell内部命令的帮助

例如:
whereis cd
#确定是否是shell内部命令
help cd
#获取内部命令帮助

详细命令帮助info
info 命令
-回车 :进入子帮助页面(带有*好标记)
-u:进入上一层页面
-n:进入下一个帮助小结
-p:进入上一个帮助小结
-q:退出

打包命令tar
tar -cvf 打包文件名 源文件
选项:
-c:打包
-v:显示过程
-f:制定打包后的文件名
例如:
tar -cvf longzls.tar longzls

tar解打包命令
tar -cvf 打包文件名
选项:
-x:解打包
例如:
tar -xvf longzls.tar

.tar.gz 压缩格式
其实.tar.gz格式是先打包为.tar格式,再压缩为.gz格式
tar -zcvf 压缩包名.tar.gz 源文件
选项:
-c:压缩为.tar.gz格式
tar -zxvf 压缩包名.tar.gz
选项:
-x:解压缩.tar.gz格式

.tar.bz2压缩格式
.tar -jcvf 压缩包名.tar.bz2 源文件
选项:
-c:压缩为.tar.bz2格式
.tar -jxvf 压缩包名.tar.bz2
选项:
-x:解压缩.tar.bz2格式

tar -jxvf jp.tar.bz2 -C /tmp/ 大写C解压.tar.bz2文件到指定位置
tar -zxvf jp.tar.gz -C /tmp/ 大写C解压.tar.gz文件到指定位置

压缩多个文件和文件夹到指定目录
tar -zcvf /tmp/test.tar.gz jp anaconfa-ks.cfg
tar -jcvf /tmp/test.tar.bz2 jp anaconfa-ks.cfg

tar -ztvf test.tar.gz
tar -jtvf test.tar.bz2
查看压缩包中的内容

1、shutdown命令
shutdown [选项] 时间
选项:
-c:取消前一个关机命令
-h:关机
-r:重启

例子:
shutdown -r now
shutdown -c
shutdown -r 05:30

2.其他关机命令
halt
poweroff
init 0
3、其他重启命令
reboot
init 6

4、系统运行级别
0 关机
1 单用户
2 不完全多用户,不含NFS服务
3 完成多用户
4 未分配
5 图形界面
6 重启
init 0-6

cat 查看某个文件的内容

runlevel
#查看系统运行级别

cat /etc/inittab
#修改系统默认运行级别
id:3:initdefault:

5、退出登录命令
logout

1.查询与自动挂载
mount
#查询系统中已经挂载的设备
mount -a
#依据配置文件/etc/fstab的内容,自动挂载

2.挂载命令格式
mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
选项:
-t 文件系统:加入文件系统类型来指定挂载的类型,可以ext2、ext4、iso9660等文件系统
-o特殊选项:可以指定挂载的额外选项
特殊选项列表
atime/noatime:更新访问时间/不更新访问时间。访问分区文件时,是否更新文件的访问时间,默认为更新(atime)
async/sync:异步/同步,默认为异步
auto/noauto:自动/手动,mount -a命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认自动(auto)
defaults:定义默认值,相当于rw,suid,exec,auto,nouser,async这七个选项
exec/noextc 执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是exec允许
remount :重新挂载已经挂载的文件系统,一般用于指定修改特殊权限
rw/ro:读写/只读 ,文件系统挂载时,是否具有读写权限,默认是rw
suid/nosuid:具有/不具有SUID权限,设定文件系统是否具有SUID和SGID的权限,默认是具有(suid)
user/nouser 允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,只用root用户可以挂载分区
usrquota:写入代表文件系统支持用户磁盘配额,默认不支持
grpquota:写入代表文件系统支持组磁盘配额,默认不支持

实例:
mount -o remount,noexec /home
#重新挂载/home分区,并使用noexec权限
cd /home
vi hello.sh
chmod 755 hello.sh
./hello.sh
mount -o remount,exec /home
#记得改回来,避免影响系统启动

3.挂载光盘
mkdir /mnt/cdrom/
#建立挂载点
mount -t iso9660 /dev/cdrom/mnt/cdrom/
#挂载光盘

mount /dev/sr0/mnt/cdrom

挂载光盘
mount /dev/sr0 /mnt/cdrom

5.挂载U盘
fdisk -l
#查看U盘设备文件名

mount -t vfat /dev/sdb1 /mnt/usb/
注意:Linux默认是不支持NTFS文件系统的

用户登陆查看命令
查看登陆用户信息
w 用户名
命令输出:
USER:登陆的用户名
TTY:登陆终端
FROM:从哪个IP地址登陆
LOGIN@:登陆时间
IDLE:用户限制时间
JCPU:值的是和该总段的所有进程占用的时间
PCPU:是指等钱进程所占用的时间
WHAT:当前正在运行的命令

who 用户名
命令输出
-用户名
-登陆终端
-登陆时间(登陆来源IP地址)

查询当前登录和过去登录的用户信息
last

last命令默认是读取/var/log/wtmp文件数据
命令输出:
-用户名
-登陆终端
-登陆IP
-登陆时间
-退出时间(在线时间)

lastlog:查看这个操作系统所有用户的最后一次登陆的
-用户名
-端口
-IP地址
-最后登陆时间

lastlog
lastlog命令默认是读取/var/log/lastlog文件内容
命令输出:
-用户名
-登陆终端
-登陆IP
-最后一次登陆时间

1、Shell是什么
Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求一遍运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
Shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。

Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括:sh,ksh,Bash,psh,zsh.最主要的是Bash
C家族主要包括:csh/tcsh

echo $SHELL 打印SHELL变量内容

Bash与sh兼容。

shell类型转换,直接输入shell类型名称即可,退出进入的shell类型 exit

查看Linux支持哪些Shell
在文件/etc/shells
vi /etc/shells

echo /etc/shells

echo 输出命令
echo [选项] [输出内容]
选项:
-e:支持反斜线控制的字符转换
控制字符
\a 输出警告音
\b 退格键,也就是向左深处键
\n 换行
\r 回车键
\t 制表符,也就是Tab键
\v 垂直制表符
\0nnn 按照八进制ASCII码表输出字符。其中0位数字零,nnn是三位八进制数
\xhh 按照十六进制ASCII码表输出字符。其中hh是两位十六进制数

echo 输入调整颜色
echo -e "\e[1;31m 付成刚 \e[0m"

#输出颜色
30m 黑色 31m 红色 32m 绿色 33m 黄色 34m 蓝色 35m 样色 36m 青色 37m 白色

查看与设定别名
alias
#查看系统中所有的命令别名

alias 别名='原命令'
#设定命令别名

别名永久生效与删除别名
vi ~/bashrc
#写入环境变量配置文件
source .bashrc 不用重新登录直接生效

unalias 别名
#删除别名(临时删除)

命令生效顺序
第一顺位执行用绝对路径或相对路径执行的命令
第二顺位执行别名
第三顺位执行Bash的内部命令
第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令

常用快捷键
ctrl+c 强制终止当前命令
ctrl+l 清屏
ctrl+a 光标移动到命令行首
ctrl+e 光标移动到命令行尾
ctrl+u 从光标所在位置删除到行首
ctrl+z 把命令放入后台
ctrl+r 在历史命令中搜索

1.历史命令
history [选项] [历史命令保存文件]
选项:
-c:清空历史命令
-w:把缓存中的历史命令写入历史命令保存文件~/.bash_history

命令复习:ls -a 查看所有文件,包含隐藏文件
cat .bash_history 查看文件内容
ls -alh 人性化 详细展示各种文件的信息

历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改
HISTSIZE=1000

历史命令的调用
使用上、下箭头调用以前的历史命令
使用"!n"重复执行第n条历史命令
使用"!!"重复执行上一条命令
使用"!字符串"重复执行最后一条以该字符串开头的命令

命令学习:
service network restart
#重启网卡服务

2、命令与文件补全
在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按"Tab"键就会自动进行补全

输出重定向
1.标准输入输出
设备 设备文件名 文件描述符 类型
键盘 /dev/stidin 0 标准输入
显示器 /dev/sdtout 1 标准输出
显示器 /dev/sdterr 2 标准错误输出

命令复习
ifconfig 查询网卡信息

2.输出重定向
类型 符号 作用
命令 > 文件 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中
标准输出重定向
命令 >> 文件 以追加的方式,把命令的正确输出输出到指定的文件或设备当中

错误命令 2> 文件 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中
标准错误输出重定向
错误命令 2>> 文件 以追加的方式,把命令的错误输出输出到指定的文件或设备当中。

正确输出和错误输出同时保存
命令 > 文件 2>&1 : 以覆盖的方式,把正确输出和错误输出都保存到同一个文件中
命令 >> 文件 2>&1 : 以追加的方式,把正确输出和错误输出都保存到同一个文件当中
命令 &> 文件 : 以覆盖的方式,把正确输出和错误输出都保存到同一个文件中
命令 &>> 文件 :以追加的方式,把正确输出和错误输出都保存到同一个文件当中
命令 >> 文件1 2>> 文件2 :把正确的输出追加到文件1中,把错误的输出追加到文件2中

命令 &> /dev/null 将命令执行信息放到黑洞了或可以理解为垃圾回收站

3.输入重定向
[root@localhost~]#wc [选项][文件名]
Ctrl+D 结束输入,进行统计
选项:
-c 统计字节数
-w 统计单词数
-l 统计行数

命令 < 文件 把文件作为命令的输入
命令 << 标识符
....
标识符 把标识符之间内容作为命令的输入

1.多命令顺序执行
多命令执行符 格式 作用
; 命令1:命令2 多个命令顺序执行,命令之间没有任何逻辑联系
&& 命令1&&命令2 逻辑与
当命令1正确执行,则命令2才会执行
当命令1执行不正确,则命令2不会执行
|| 命令1||命令2 逻辑或
当命令1执行不正确,则命令2才会执行
当命令1执行正确,则命令2不会执行

命令复习:
pwd 显示当前位置
echo "" 打印信息

date ; ls ; cd /etc ; ls ; pwd

ls && echo yes || echo no :检测命令是否正确

2、管道符
命令格式:
[root@localhost~]# 命令1 | 命令2
#命令1的正确输出作为命令2的操作对象
例子:ll /etc | more

命令复习:more 文件 :分屏显示文件里的内容

netstat -an :查看系统的所有网络连接
grep "" :查看包含指定字符串的行

合称命令:netstat -an | grep LISTEN :统计包含“LISTEN”字符串的行
netstat -an | grep LISTEN |wc -l :统计包含“LISTEN”字符串的行数

通配符
通配符 作用
? 匹配一个任意字符
* 匹配0个或任意多个任意字符,也就是可以匹配任意内容
[] 匹配中括号中任意一个字符。例如:[abc]代表匹配一个字符,或者是a或者是b或者是c
[-] 匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母
[^] 逻辑非,表示匹配不是中括号的一个字符。例如:[^0-9]代表匹配一个不是数字的字符

命令复习:
mkdir 目录 :mkdir创建目录
touch 文件 :touch创建文件

2、Bash中其他特殊符号
符号 作用
'' 单引号。在单引号中所有的特殊符号,如“$”和“`”(反引号)都没有特殊含义
"" 双引号。在双引号中特殊符号都没有特殊含义,但是“$”、“`”和“\”是例外,拥有“调用变 量的值”、“引用命令”和“转译符”的特殊含义
`` 反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样,不过推荐使用
$(),因为反引号容易看错
$() 和反引号作用一样,用来引用系统名利
# 在Shell脚本中,#开头的行代表注释
$ 用于调用变量的值,如需要调用变量name的值是,需要用$name的方式得到变量的值
\ 转义符。跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出“$”符号,而不当做
变量引用

VIM相对于VI做了哪些提升
-VIM支持多级撤销
-VIM可以跨平台运行
-VIM支持语法高亮
-VIM支持图形界面

VI编辑器的操作模式
Command Mode - 命令模式
Insert Mode - 输入模式
last Line mode - 底行模式(尾行,末行)

vim 文件:如果该文件不存在先创建再打开;如果存在,直接打开
文件刚被VIM编辑器打开时,进入的是命令模式
按字母i,进入输入模式
在输入模式时,按Esc键进入底行模式

在命令模式或底行模式的时候,连续点击两次d字母,直接删除所在光标的行的信息

vim + 文件:+作用是把光标定位到文件内容的最后一行
:q! 退出
:wq 退出并保存
vim +数字 文件:+数字 作用是光标定位到指定数字的行

vim +/字符串 文件:+/字符串 vim打开文件,并把光标定位到第一次出现指定字符串的那一行 。并且如果这个文件中包含多个指定字符串行,可以通过n在这些行中切换

vim 文件1 文件2 文件3 。。。。。 一次性创建或打开多个文件
默认进入文件1,如果想切换到下一个文件,在命令模式或底行模式输入“:n”即可;如果想进入上一个
文件,在命令模式或底行模式输入“:N”或“:prev”即可

vim常用指令
底行模式常用指令
:w 保存
:q 退出
:! 忽略其他,强制执行
常见组合: ;wq 保存并退出 ;q! 强制退出
:ls 展示当前vim打开的所有文件
:n 进入下一个文件
:N 进入上一个文件
:数字 光标定位到某一行
/字符串 向后搜索指定字符串所在文件的第一次出现的位置
?字符串 向前搜索指定字符串所在文件的第一次出现的位置

命令模式常用指令
h 光标左移
j 光标下移
k 光标上移
l 光标右移

ctrl + f 向下翻页(front)
ctrl + b 向上翻页(back)
ctrl + d 向下翻半页(down)
ctrl + u 向上翻半页(up)

dd 删除光标所在的行
o 在光标所在行的下方插入一行并切换到输入模式
yy 复制光标所在的行
p 在光标所在的行的下方粘贴
P 在光标所在的行的上方粘贴

磁盘管理:
df 查看磁盘分区使用状况
-l 仅显示本地磁盘(默认)
-a 显示所有文件系统的磁盘使用情况,包含比如/proc/
-h 以1024进制计算最适合的单位显示磁盘容量
-H 以1000进制计算最合适的单位显示磁盘容量
-T 显示指定类型文件系统的磁盘分区
-t 显示指定类型文件系统的磁盘分区
-x 不显示指定类型文件系统的磁盘分区

范例:df -ahT -t ext4

du统计磁盘上的文件大小
-b 以byte为单位统计文件
-k 以KB为单位统计文件
-m 以MB为单位统计文件
-h 按照1024进制以最适合的单位统计文件
-H 按照1000进制以最适合的单位统计文件
-s 指定统计目标
范例 du -sh *.zip

硬盘分区规则:
第一 主分区和扩展分区总数不能超过4个
第二 扩展分区最多只能有一个
第三 扩展分区不能直接存取数据

当硬盘空间消耗殆尽时怎么办?
在保留原硬盘的基础上,给服务器添加新的硬盘?(在命令模式下分区,格式化,挂载)

在VM虚拟机中添加硬盘,先关闭虚拟机,在再虚拟机中添加硬板设备

MBR分区
知识点复习:Linux系统中硬件设备都是以文件的形式存在于根目录下的dev目录下

硬件设备都是由Linux系统自动识别的,必须对新的硬盘进行分区、格式化、挂载后才能使用

分区工具:
fdisk
使用:
fdisk [选项] <磁盘> 改变分区表
fdisk [选项] -l<磁盘> 列出磁盘分区表
fdisk -s <分区> 设置分区大小

新增一块系统已经识别的硬盘的操作步骤:
(1)插入命令 fdisk 新硬盘路径(fdisk /dev/sdb),进入分区模式
(2)输入m,查看命令的帮助信息
(3)输入n,给这块硬盘新增一个分区(primary 主分区 extended 扩展分区)
(4)输入p,分配一个主分区,输入1给分区编号为1
(5)输入主分区开始的扇区,默认回车即可,输入主分区介绍的扇区,可以直接输入+3000M
(6)这样一个分区就添加完了
(7)输入p查看已经添加的分区

扩展分区不能直接使用,要给扩展分区添加逻辑分区
(1)输入n(primary 主分区 logical 逻辑分区)
(2)输入l,添加逻辑分区
(3)给逻辑分区添加起始扇区和结束扇区(+2000M)

分区完成后,如果感觉不合理,可以重新分区。分区动作类似只是做了设计图纸还没进入实际工作。
删除分区操作:
(1)输入d,准备删除翻去
(2)输入分区对应的数字
(3)输入p,查看删除情况

最后输入w退出并保存分区工具

GPT分区
磁盘分区与格式化

磁盘分区模式之MBR
-主分区不超过4个
-单个分区容量最大2TB
磁盘分区模式之GPT
-主分区个数“几乎”没有限制(在GPT的分区表中最多可以支持128个主分区)
-单个分区容量“几乎”没有限制(在GPT的单个分区容量多大达到18EB=18874368TB)
GPT的缺点:不适合安装X86架构的系统(32位曹组系统)

parted工具既可以进行GPT分区,也可以进行MBR分区
直接输入help,查看帮助信息
切换目标硬盘:select 硬盘路径
指定硬盘分区表类型:mklabel msdos (MRB分区)
mklabel gpt (GPT分区)
查看当前硬盘分区详情:print
查看所有硬盘分区详情:print all

开始分区:
交互模式和命令模式
交互模式分区:
(1)mkpart 添加分区指令,进入分区
(2)指定分区名称,不是强制性的
(3)指定分区类型,ext2,ext3,ext4
(4)从哪里开始,从第几MB开始和结束1-2000(4k对齐)
命令模式添加分区:mkpart 分区名称 开始位置(MB) 结束位置(MB)

删除分区:rm 分区编号

更换默认分区开始和结束大单位:unit GB
退出分区工具:quit

分区的格式化
mkfs工具 (dev:sdb[MBR] sdc[GPT])分区格式化
(1)ll /dev/sdb*
(2)mkfs.文件类型 设备名称 (mkfs.ext3 /dev/sdb1)
(3)mkfs -t 文件类型 设别名称 (mkfs -t ext4 /dev/sdb2)
注意事项:
1.MBR格式分区的扩展分区不能格式化,主分区和逻辑分区可以格式化
2.GPT格式分区的类型只能用parted进入,再输入print

挂载分区
默认挂载目录:/mnt目录(硬盘挂载目录),挂载点必须存在
挂载命令:mount 设别名称 挂载点 (没有永久性)
卸载命令:umount 挂载点
永久性挂载,编写/etc/fstab文件
vim + /ect/fstab
添加内容:
设备名称 挂载点 文件类型 defaults 0 0
例 /dev/sdb1 /mnt/fuzihan ext3 defaults 0 0

给硬盘添加swap交换分区
第一:建立一个普通的linux分区
第二:修改分区类型的16进制编码
第三:格式化交换分区
第四:启用交换分区(挂载)
修改分区类型的16进制编码:
fdisk /dev/sdb
p
t
6
L
82
p
w
格式化交换分区
mkswap 设备名称 (mkswap /dev/sdb6)
启动swap分区
swapon 设备名称 (swapon /dev/sdb6)

命令free,查看swap分区情况

停止swap分区:swapoff 设备名称 (swapoff /dev/sdb6)

用户和用户组
用户:使用操作系统的人
用户组:具有相同系统权限的一组用户

/etc/group 存储当前系统中所有用户组信息
-Group : x : 123 :user1,user2,user3
-组名称:组密码占位符:组编号:组中用户名列表
如果组名和组内用户的名称一致,用户名可以省略
root用户组的编号是0
1--499用户组编号是预留编号
组密码占位符都是X

/etc/gshadow 存储当前系统中用户组的密码信息
-Group : * : :user1,user2,user3
-组名称:组密码:组的管理者:组中用户名列表
组密码是*或空或!表示组没有密码
组的管理者一般也是空的表示每个人都可以管理该用户组

/etc/passwd 存储当前系统中所有用户的信息
-user : X : 123 : 342 :xxxxx :/home/user x:bin/bash
-用户名:密码占位符:用户编号;用户组编号:用户注释信息:用户主目录 :shell类型

/etc/shadow 存储当前系统中所有用户的密码信息
-user :sdfksdlk:::::
-用户名:密码 :::::

用户和用户组的基本命令
用户组信息放在:/etc/group
groupadd 组名:新建用户
groupmod -n 新组名 旧组名 :修改组名
groupmod -g 组编号 已存在的组 :修改组的编号
groupadd -g 组编号 新组名 :新增组并制定组编号
groupdel 组名 :删除组 注:删除组之前,先删除用户组中的用户,在删除组

用户信息放在 /etc/passwd
useradd -g 用户组 用户名 :新增用户并制定用户组
useradd -d /home/用户文件夹 用户 :新增用户并制定用户文件夹,且默认创建一个和用户名相同的用户组
usermod -c 注释 用户名 :修改用户名的注释信息
usermod -l 新用户名 旧用户名:修改用户名
usermod -d 新的用户文件夹 用户名 :修改用户的个人文件夹
usermod -g 用户组 用户名 :修改用户的用户组
userdel 用户名 :删除用户,不删除个人文件夹
userdel -r 用户名:删除用户,并且删除个人文件夹

禁止操作系统上的普通用户登陆系统:touch /etc/nologin

用户和用户组进阶命令:
锁定指定用户:passwd -l 用户名
解锁指定用户:passwd -u 用户名
清除指定用户的密码,是该用户可以无密码登陆:passwd -d 用户名

主要组和附属组
一个用户可以同时属于多个组
-一个主要组
-多个附属组
gpasswd -a 用户名 附属组 :给用户添加附属组
gpasswf -d 用户名 附属组 :在附属组中删除指定用户
如果有附属组的用户想切换到附属组:newgrp 附属组名
useradd -g 主要组 -G 附属组 用户名 :在创建用户时,既指定主要组,又指定附属组
gpasswd 用户组 :设置组的密码

其他命令:
su 用户名:切换用户身份,不加用户名切换到root用户
Whoami:
-我是谁?显示当前登陆用户名
id 用户名
- 显示指定用户信息,包括用户编号、用户名;主要组编号及名称,附属组列表
groups 用户名
-显示用户所在的所有组
chfn 用户名
-设置用户资料,依次输入用户资料
finger 用户名
-显示用户详细资料