学Linux的第五天
目录
命令解释器-shell-负责解析用户输入的命令
分类:
type --查看命令是内置命令、外置命名、alias命令
注意
Linux 中的特殊符号
拓展
命令别名aliasalias 别名='原命令 - 参数'
常用的别名untar,wget,getpass,ping,speed,ipe,c
删除别名unalias
注意
history--查阅命令历史记录
注意
账户和组管理
账户和工作组的分类
用户分为三类:
工作组分析两类:
账户和工作组的配置文件
用户账号文件
id 查看账户的UID、GID等信息
用户密码文件
工作组账号文件
用户管理
添加新用户useradd
修改账户信息usermod
账号设置密码passwd
命令设置密码
删除账号userdel
账户切换su
控制用户对系统命令的使用权限sudo
命令解释器-shell-负责解析用户输入的命令
分类:
内置命令
(shell
内置
)
,
shell
为了完成自我管理和基本的管理,不同的
shell
内置不同的命令,但是大
部分都差不多
外置命令,在文件系统的某个目录下,有个与命令名称相同的文件
type --查看命令是内置命令、外置命名、alias命令
type
-
参数 命令名
type -a
列出当前命令可以如何执行
type -t
仅列出命令按照哪种方式执行
注意
1.在命令行中cd可以直接写是因为系统环境可以识别,echo $PATH
2.PATH=$PATH:/mnt在原来基础上加/mnt,这个是临时的
3.两个窗口独立,系统中设定在文件中保存才是永久
Linux 中的特殊符号
; 可使用分号分隔多条命令 在一行上输入和执行多条较短的命令,可使用分号来分隔命令
* 匹配任意零个或者多个字符 不能用于创建文件
? 匹配任意单个字符 不能用于创建文件
[] 匹配方括号中的任意一个字符,表示范围可以用"-” 不能用于创建文件
[^]
或者
[!] 匹配方括号中的任意一个字符或数字后进行取反
用于查找和删除文件,不用于创建文件
{string,string} 匹配括号中的任意一个字符串,表示一个范围时,字符串之间个".."
可用于创建、查看、删除文件
\ 使\
后面的特殊字符失效
例如:可以在命令行后面加一个
\
,再按回车键时 并不表示执行该命令,而是表示换行,通过此方式 将一个较长的命令分成多行表达,增强命令的可读 性。换行后系统自动显示提示符 >
` 反引号,一般用于引用命令,执行的时候反引号里面的命令会被执行,与$() 作用相同
' 单引号,将单引号内的所有内容都原样输出所有特殊字符在单引号里面都会失去特殊含义
" 双引号,除了几个特殊字符外,将双引号内的几乎所有内容都原样输出
”$“
和
“\”
以及
“ ` ”
在双引号里面仍然保留自己的特殊含义
拓展
空格是一个字符
[[:alpha:]]字母lower小写,upper大写,digit数字
punct符号space空格alnum字母或数字,第一个中括号表示集合,两个第二个中括号连起来表示或,模糊匹配
{a,b,c}三个文件,[a-c]a到c,反选只能用于中括号,{1..5}1连续到5,
“”引号。批量转义。单引号-强引用。双引号-弱引用
单引号引起来先执行
命令别名alias
alias 别名='原命令 - 参数'
例子
[root@server ~]
# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
常用的别名untar,wget,getpass,ping,speed,ipe,c
由于 tar 命令的参数太多不好记忆,所以将解压缩设为
alias untar='tar -zxvf '
下载大文件时的断点续连,防止网络异常中断
alias
wget
=
'wget -c '
生成
20
个字符的随机数密码,使用
openssl
命令,但命令又很长不方便,可以设置别名
alias
getpass
=
"openssl rand -base64 20"
ping url
时会无限次输出,但其实没多大意义,可以使用
-c
命令将其限制为
5
次输出
alias ping='ping -c 5'
speed 测试网速命令speedtest-cli
,为了方便使用可以设置别名:
安装
: speedtest-cli
是基于
python
编写的需要使用
pip
工具下载
[root@server ~]
# speedtest-cli --list
ipe
公网
IP别名设置:
alias
ipe
=
'curl ipinfo.io/ip'
清屏,一般使用
ctrl + l
快捷键,也可以将
clear
命令定义得更短,这样使用起来更直接,更粗暴
alias
c
=
'clear'
删除别名unalias
unalias
别名
注意
1.在命令行中使用
alias
命令设置的别名仅在该次登入有效,如果重新开启一个
Shell
,或者重新登录系
统,则这些
alias
将无法使用。
2.在
linux
中提供
alias
永久化的方法:
将别名命令写入到
~/.bashrc
和
/etc/bashrc
文件中
执行
source ~/.bashrc
和
source ~/etc/bashrc
生效
3.alias ping='ping -c1 -w1'别名,代替,每次使用ping(实际上是执行带有-c 1 -W 1参数的ping)时,就只会发送一个 ICMP 请求包并且等待 1 秒获取响应,而不是像原始ping命令那样一直发送请求直到手动停止。
history--查阅命令历史记录
history
-
参数
number
:显示最近
number
条命令历史
-c
:清空当前历史命令
注意
历史在bash.history里,清空文件里的历史
账户和组管理
账户和工作组的分类
用户分为三类:
超级账户
——
账户名为
root
,它具有一切权限,只有进行系统维护
(
例如:建立用户等
)
或其他必要情形下才用超级用户登录,以避免系统出现安全问题。
系统账户
——
是
Linux
系统正常工作所必需的账户,主要为了满足相应的系统进程对文件属主的要求而建立的,如:bin
、
daemon
、
adm
、
sshd
等,注意:系统账户不能登录。
普通用户
——
是为了让使用者能够使用
Linux
系统资源而建立的,大多数用户属于此类。
工作组分析两类:
基本组
(
私有组
)
:新建立账户时,若没有指定账户所属的工作组,会建立和账户名相同的组
扩展组
(
公有组
)
:可以容纳多个用户,组中的账户都具有组所拥有的权利。
账户和工作组的配置文件
用户账号文件 /etc/passwd
用户密码文件 /etc/shadow
工作组账号文件 /etc/group
工作组密码文件 /etc/gshadow
用户账号文件
/etc/passwd
是一个文本文件,用于定义系统的账号,由于所有账户都对
passwd
有读权限,所以该
文件中只定义用户账号,而不保存口令。
[root@server ~]# ll /etc/passwd
-rw-r--r--. 1 root root 2083 4月 26 14:39 /etc/passwd
账号名
:
密码
:UID:GID:
个人资料
:
主目录
:Shell
UID
:账户的
ID
值,是一个数字标识,相当于账户的
“
身份证编号
”
,具有唯一性
root
账户
UID——0
系统账户的
UID——1
~
999
普通账户的
UID——
≥
1000
注意:普通账户从
1000
开始编号,连续编号,即使系统管理员某些账户号码未使用,普
通账户也不可使用
GID
:基本组的
ID
值,用来区分不同的工作组,相同的组具有相同的
GID
。
个人资料:注释信息,可以记录账户的完整姓名、地址、办公室电话、家庭电话等个人信息。
家目录:类似
Windows
的个人目录,通常是
/home/
账户名
Shell
:定义用户登录后激活的
Shell
,默认是
Bash Shell
id 查看账户的UID、GID等信息
id
账户名
用户密码文件
/etc/shadow
存储密码加密后的密文
,该文件为了保证了账户密码的安全性只有 root 账户拥有读权限,注意:若该文件权限发生变化,需要留心恶意攻击
/etc/shadow
文件中的每行
9
个字段的含义为
登录名
:
加密口令
:
最后一次修改时间
:
最小时间间隔
:
最大时间间隔
:
警告时间
:
不活动时间
:
失效时间
:
标志
工作组账号文件
/etc/group
文件存储每个组工作组信息
Groupname 组的名字
Passwd 组的加密口令
GID 是系统区分不同组的ID
,在
/etc/passwd
域中的
GID
字段是用这个数来指定账户的基本组
Userlist 是用“
,
”
分开的账户名,列出的成员以该组为附加组
用户管理
添加新用户useradd
useradd
-
参数 账户名
-c
注释信息:设置相关的说明信息,如
,
:真实姓名、邮箱地址等。
-d
:目录:设定账户的家目录
(
默认为
/home/
用户名
)
。
-e
YYYY-MM-DD
:设置用户的失效日期
,
此日期后将不能使用该账号。
-f
天数:指定密码到期后多少天账号被禁用
,
若指定为
0,
则表示账号到期后被立即禁用
;
若指定 为
-1,
则表示账号过期后不被禁用(
即密码永不过期
)
。
-g
组名或
GID
号:为账户指定所属的基本组
,
该组在指定时必须已存在。
-G
:组名或
GID
号列表:为账户指定所属的扩展组
,
各组在指定时已存在
,
附加组可以有多个
,
组之间用
“,”
分 隔。
-M
:不创建账户家目录。
-N
:不创建与账户名同名的基本组。
-p
:密码:指定账户的登录密码。
-s
shell
名:指定账户登录后使用的
Shell,
默认是
bash
。
-u
用户号:设置账号的
UID,
默认是已有账户的最大
UID
加
1
。如果同时有
-o
选项
,
则可以重复使用其他用户的标识号
修改账户信息usermod
usermod
-
参数 账户名
常用参数
-c,-d,-m,-g,-G,-s,-u
等
,
意义与
useradd
命令中的参数相同
-l
新账户名:更改账户的名称
,
必须在该用户未登录的情况下才能使用
-L
:锁定
(
暂停
)
用户账户
,
使其不能登录使用
-U
:解锁用户账户
账号设置密码passwd
passwd
-
参数 账户名
Linux
的账户必须设置密码后,才能登录系统
-d
:清空指定用户的口令,与未设置口令的账户不同
,
未设置口令的账户无法登录系统
,
而口令为空的账户可
以。
-e
:使用户的账号密码立即过期,强迫用户下次登录时必须修改口令。
-i
:口令过期后多少天停用账户。
-l
:锁定
(
停用
)
用户账户。
-n
:指定口令的最短存活期。
-x
:指定密码的最长使用期限。
-u
:解锁用户账户
密码不能为空
密码不要写成回文
只有
root
用户才能指定用户名
命令设置密码
echo
密码
| passwd
--stdin
用户名
echo
密码
| passwd
--stdin
用户名
> /dev/null
#
无信息提示
删除账号userdel
userdel
账户名
参数
-r
:在删除该账户的同时,一并删除该账户对应的家目录
账户切换su
su 账户名
su
和
su -
命令区别
区别:加载的配置文件不一样
su
切换方式加载的文件:
~/.bashrc
,
/etc/bashrc
su -
切换方式加载的文件:
/etc/bashrc
,
/etc/profile
,
~/.bashrc
,
~/.bash_profile
注意:
su -
相当于重新建立环境,若全局变量需要继续使用则不能使用
su -
命令
注意
从
root
用户切换到任何用户不需要密码验证,而从普通用户到
root
或其他普通用户均需要输入目标
用户的密码且验证成功后才可切换。
控制用户对系统命令的使用权限sudo
作用
使用
sudo
命令可以提高普通用户的操作权限,使用前需要
root
进行配置
sudo
的执行流程如下:
当执行
sudo
提权时,需要输入自己密码来确认(
root
执行
sudo
时不需要输入密码)
若密码输入成功,系统会去
/etc/sudoers
文件中查找该用户是否有执行
sudo
的权限
若用户具有执行
sudo
的权限,便开始
sudo
后续接的命令;
配置
/etc/sudoers
文件方式
执行
visudo
或
vim /etc/sudoers
[root@server ~]# vim /etc/sudoers
# 定位100行输入:
fox ALL=(ALL) ALL
# 需要wq!强制保存退出
[root@server ~]# su fox
[fox@server root]$ cd /root
bash: cd: /root: 权限不够
[fox@server root]$ sudo cd /root
[sudo] fox 的密码:
[fox@server root]$ pwd
/root