Liunx常用命令
1、Liunx命令概述
Liunx命令分类
内部命令
shell自带的命令,不需要安装和配置直接使用
外部命令
由第三方程序安装时产生的,运行时要知道其绝对路径。
但将目标放入以下文件中就可以直接用命令运行
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Liunx命令行的格式
命令字 [选项] [参数]
获得命令帮助的方法
使用help命令/产看内部命令
使用“–help”选项/查看外部命令
使用man 来查看,信息最多
type可以查看是什么类型的命令
[root@localhost ~]# type cd
cd 是 shell 内嵌
2、目录和文件基本操作
查看及切换目
pwd
显示用户当前所在的工作目录位置
[root@localhost ~]# pwd
/root
cd
切换工作目录
cd 目标位置 //切换到目标位置
cd 或 cd ~ //切换到当前用户的家目录
cd - //切换到执行cd命令之前所在的目录
cd . //当前目录
cd .. //上级目录
ls
显示目录中的内容,包括子目录和文件相关属性信息
格式: ls [选项] [文件或目录]
常用选项:
-l:显示详细信息
-a:显示子目录和文件,包括"."开头的隐藏目录和隐藏文件
-A:不显示包括"."开头的隐藏目录和隐藏文件
-d:查文件或目录 本身 属性
-h:以单位显示文件或目录大小
-R:以递归的方式显示目录以及子目录的所有内容
--color:为查询结果添加颜色进行显示
一般d、h、l会结合着用,如ls -dhl /etc/
但ls统计目录的大小结果可能不准确,统计单个文件的大小比较准确
一般使用du命令去统计目录的大小,会准确得多
结合通配符:
? 匹配文件名中的一个未知字符
* 匹配文件名中的任意多个字符
ls -dl 查看文件的用户组,用户和权限
[root@localhost ~]# ls -dl /etc
drwxr-xr-x. 75 root root 8192 4月 17 10:42 /etc
[root@localhost ~]# ls -dhl /etc
drwxr-xr-x. 75 root root 8.0K 4月 17 10:42 /etc
alias
通过别名机制简化常用的、比较长的命令
例子:
[root@localhost ~]# alias gohome='cd /home/zhangsan'
[root@localhost ~]# gohome
[root@localhost zhangsan]#
查看当前系统中的别名:
alias
[root@localhost zhangsan]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias gohome='cd /home/zhangsan'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost zhangsan]#
取消别名定义:
unalias gohome
unalias a
以上命令定义的别名在注销后就失效了,如果想要别名永久生效,需要修改配置文件
# vim /etc/profile //末尾新起一行加入定义别名
alias a='systemctl status firewalld'
du
统计指定目录(或文件)所占用磁盘空间的大小
格式: du [选项] [文件或目录]
常用选项:
-a:统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-h:显示出目录或文件的大小(K、M),默认的大小单位为字节(KB)
-s:只统计每个参数所占用空间总的大小,而不是统计每个子目录、文件的大小
一般s、h结合用,如 du -sh /etc/
创建目录和文件
mkdir
创建新的空目录
格式: mkdir [选项] 目录位置及名称
例子:
mkdir ./123 在当前文件夹下创建一个新文件夹123
#mkdir -p 连续递归的创建文件夹
mkdir -p /home/{A,B}/abc 在home下创建A,B两个文件夹,并在其中创建abc文件夹
[root@localhost ~]# mkdir -p /home/{A,B}/abc
[root@localhost ~]# ls /home
A B zhangsan
[root@localhost ~]# ls /home/A
abc
[root@localhost ~]# ls /home/B
abc
[root@localhost ~]#
touch
创建空文件
格式: touch 文件名
PS:当文件已存在时,touch可以更新文件的时间标记
ln
为文件或目录创建链接文件,分为软链接和硬链接
一般用于链接到$PATH下的路径,实现在任何地方都可以执行
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
软链接:删除原始文件后失效,适用于文件和目录,链接文件可以与原始文件位于不同的文件系统中
硬链接:删除原始文件后仍可使用,只适用于文件,链接文件必须与原始文件在同一个文件系统(如同一个Linux分区)
创建链接文件:一般都是创建软链接,类似于Windows的快捷方式
ln -s 源文件 目标位置 (必须都为绝对路径)
如: ln -s /bin/bzip2 /bin/wx/
注意:在链接时,必须使用绝对路径
复制、删除、移动目录和文件
cp
复制文件或目录,并保存为新的文件或目录
格式: cp [选项] 所要复制的文件 复制到那儿的地址
常用选项:
-i:覆盖目标同名文件或目录时提醒用户确认
-f:若文件存在 强制覆盖不提醒
-p:复制时保持源文件的权限、属主及时间标记等属性不变
-r:表示递归复制所有文件及子目录
一般cp和rm都喜欢带上rf
[root@localhost home]# touch a
[root@localhost home]# touch b
[root@localhost home]# touch c
[root@localhost home]# mkdir zhangsan
[root@localhost home]# ls
a b c zhangsan
[root@localhost home]# cp -rf a b c zhangsan
[root@localhost home]# cd zhangsan
[root@localhost zhangsan]# ls
a b c
快速备份
[root@localhost home]# cp /home/zhangsan/a{,.back}
[root@localhost home]# ls /home/zhangsan
a a.back b c
[root@localhost home]# cp /home/zhangsan/a{.back}
备份还原
[root@localhost home]# ls /home/zhangsan
a a.back b c
[root@localhost home]# rm -rf /home/zhangsan/a
[root@localhost home]# cp /home/zhangsan/a{.back,}
[root@localhost home]# ls /home/zhangsan
a a.back b c
rm
删除指定的文件或目录
格式:rm [选项] 要删除的文件或目录…
rm -rf 命令强制删除包括目录 不提醒
[root@localhost ~]# mkdir abc
[root@localhost ~]# ls
abc anaconda-ks.cfg
[root@localhost ~]# rm ./abc
rm: 无法删除"./abc": 是一个目录
[root@localhost ~]# rm -rf abc
[root@localhost ~]# ls
anaconda-ks.cfg
mv
移动文件或目录
mv [选项] … 源文件或目录… 目标文件或目录
mv mytouch mkfile
[root@localhost ~]# touch 321
[root@localhost ~]# ls
321 anaconda-ks.cfg
[root@localhost ~]# mv ./321 /home
[root@localhost ~]# ls /home
321 A abc B zhangsna
[root@localhost ~]#
查找目录和文件
which
查找命令 / 程序的存放目录,但只会在$PATH范围内查找(echo $PATH)
格式:
which 命令|程序名
which -a 命令|程序名
例子:
which ls
which cd
[root@localhost ~]# which pwd
/usr/bin/pwd
[root@localhost ~]# which passwd
/usr/bin/passwd
find
格式: find [查找范围] [查找条件表达式]
常用查找条件类型:
按名称查找 -name 根据目标文件的名称进行查找,允许使用 * 及 ? 通配符
按文件大小查找 -size 一般使用+、-号设置超过或小于指定的大小作为查找条件,常用的容量单位包括 kB(注意 k 是小写)、MB、GB
按文件属主查找 -user 根据文件属主进行查找
按文件类型查找 -type 根据文件的类型进行查找,包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等
# find / -size +5M -a -size -10M
# find / -size +5M -a -size -10M -a -name vim* /-a为并且 -o为或者
# find / -size 5M //表示查找5MB左右大小的文件
# find / -name ifcfg-ens33 //在/下查找名为"ifcfg-ens33"的文件
# find / -size "+50M" //在/下查找单个大于50M的文件
# find / -type d -a -name aa* //查找/下为名字为aa开头的目录
将查到的数据删除的四种方法:
# find / -type f -a -name "abc*" -delete
# find / -type f -a -name "abc*" -exec rm -rf {} \;
第三种:
# touch /root/{abc,abc1,abc2}
# find / -type f -name "abc*" //能看到刚刚创建的/root/关于abc的三个文件
/root/abc
/root/abc1
/root/abc2
/usr/lib64/python2.7/abc.py
/usr/lib64/python2.7/abc.pyc
/usr/lib64/python2.7/abc.pyo
/usr/share/vim/vim74/syntax/abc.vim
需求:删除/root下的三个abc文件
# find / -maxdepth 2 -type f -name "abc*" | xargs rm -rf
-maxdepth 2 //该选项表示在指定的目录中再指定几层进行查找,此时就不会查到python下的abc文件
xargs //将查到的多行内容,放在一行进行显示,原来的每行中间以空格隔开
第四种:
# rm -rf $(find / -maxdepth 2 -type f -name "abc*")
也可以同时查询多个文件并查看这些文件中的内容:
# find / -maxdepth 2 -type f -name "abc*" | xargs cat
将查询到的多个文件的详细信息显示出来:
# find / -name "abc*" | xargs ls -l
将查到的数据复制到/tmp目录中的三种方法:
# find / -type f -a -name "abc*" -exec cp -rf {} /tmp \;
# find / -maxdepth 2 -name "abc*" | xargs cp -rf -t back
# find / -maxdepth 2 -name "abc*" | xargs -i cp -rf {} back //-i的作用表示将查询到的数据一行一行地赋值给{}
将查到的多个数据文件通过tar打包备份:
# tar zcf abc.tar.gz `find / -maxdepth 2 -name "abc*" -a -type f | xargs`
# find / -maxdepth 2 -name "abc*" -a -type f | xargs tar zcf abc.tar.gz
按照权限查询文件:
# chmod 777 /root/abc
# find / -type f -a -name "abc*" -a -perm 777
修改时间信息 mtime
访问时间信息 atime
改变时间信息 ctime
# find /abc -type f -mtime +7 --- 7天以前修改过的文件
# find /abc -type f -mtime -7 --- 最近7天修改过的文件
# find /abc -type f -mtime 7 --- 正好前面第7天修改过的文件
目录和文件管理
1、查看和检索文件
查看文件内容
cat
显示文件的内容,只能显示文档末尾部分内容
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
more
用途:
全屏方式分页显示文件内容
按Enter键向下逐行滚动
按空格键向下翻一屏
按q键退出
[root@localhost ~]# more /etc/init.d/network
#! /bin/bash
#
# network Bring up/down networking
#
# chkconfig: 2345 10 90
# description: Activates/Deactivates all network interfaces configured to \
# start at boot time.
#
### BEGIN INIT INFO
# Provides: $network
# Should-Start: iptables ip6tables NetworkManager-wait-online NetworkManager $network-pre
# Short-Description: Bring up/down networking
# Description: Bring up/down networking
### END INIT INFO
# Source function library.
. /etc/init.d/functions
if [ ! -f /etc/sysconfig/network ]; then
exit 6
fi
. /etc/sysconfig/network
if [ -f /etc/sysconfig/pcmcia ]; then
. /etc/sysconfig/pcmcia
fi
# Check that networking is up.
[ "${NETWORKING}" = "no" ] && exit 6
# if the ip configuration utility isn't around we can't function.
-More--(10%)
less
与more命令相同,但扩展功能更多
less [选项] 文件名 …
交互操作方法
Page Up 向上翻页,Page Down 向下翻页
按“/”键查找内容,“n”下一个内容,“N”上一个内容
其他功能与 more 命令基本类似
head
查看文件开头的一部分内容(默认为10行)
head -n 文件名 …
[root@localhost ~]# head /etc/init.d/network
#! /bin/bash
#
# network Bring up/down networking
#
# chkconfig: 2345 10 90
# description: Activates/Deactivates all network interfaces configured to \
# start at boot time.
#
### BEGIN INIT INFO
# Provides: $network
[root@localhost ~]#
tail
查看文件结尾的少部分内容(默认为10行)
tail -n 文件名 …
tail -f 文件名
[root@localhost ~]# tail /etc/init.d/network
$0 stop
$0 start
rc=$?
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|force-reload}"
exit 2
esac
exit $rc
[root@localhost ~]#
查询第11行的数据 : 利用 “|” 利用前面的输出作为后面的输入
[root@localhost ~]# head -11 /etc/init.d/network
#! /bin/bash
#
# network Bring up/down networking
#
# chkconfig: 2345 10 90
# description: Activates/Deactivates all network interfaces configured to \
# start at boot time.
#
### BEGIN INIT INFO
# Provides: $network
# Should-Start: iptables ip6tables NetworkManager-wait-online NetworkManager $network-pre
[root@localhost ~]# head -11 /etc/init.d/network | tail -1
# Should-Start: iptables ip6tables NetworkManager-wait-online NetworkManager $network-pre
[root@localhost ~]#
wc
统计文件中的单词数量(Word Count)等信息
wc[选项]... 目标文件...
常用命令选项
-l:统计行数
-w:统计单词个数
-c:统计字节数
[root@localhost ~]# wc -lwc /etc/passwd
19 27 846 /etc/passwd
[root@localhost ~]# wc -l /etc/passwd
19 /etc/passwd
统计和检索文件内容
grep
在文件中查找并显示包含指定字符串的行
grep [选项]... 查找条件 目标文件
常用命令选项
-i:查找时忽略大小写
-v:反选,输出与查找条件不相符的行
-A 1:表示查看包含指定字符串及后一行
-B 2:表示查看包含指定字符串及前两行
-C 1:表示查看包含指定字符串及前后一行
-c:统计指定字符串在文件中出现的行数
查找条件设置
要查找的字符串以双引号括起来
“^……”表示以……开头,“……$”表示以……结尾
“^$”表示空行
[root@localhost ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
查找以张三开头的用户
[root@localhost ~]# grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash
常见用法
[root@localhost ~]# cat /etc/passwd | grep ^root
root:x:0:0:root:/root:/bin/bash
2、压缩/解压缩
使用压缩和解压缩工具
gzip命令、bzip2命令
制作压缩文件、解开压缩文件
gzip [-9] 文件名…
bzip2 [-9] 文件名...
gzip -d .gz格式的压缩文件
bzip2 -d .bz2格式的压缩文件
常用命令选项
-9、-d
gunzip 等价于 gzip –d
压缩:
[root@localhost ~]# gzip sshd_config
[root@localhost ~]#
[root@localhost ~]# ls
anaconda-ks.cfg sshd_config.gz
解压缩:
[root@localhost ~]# gzip -d sshd_config.gz
[root@localhost ~]# ls
anaconda-ks.cfg sshd_config
使用tar 归档和释放工具
tar
制作归档文件、释放归档文件
tar [选项] ... 归档文件名 源文件或目录
tar [选项]... 归档文件名 [-C 目标目录]
常用命令选项
-c:创建 .tar 格式的包文件
-x:解开.tar格式的包文件
-v:输出详细信息
-f:表示使用归档文件
-p:打包时保留原始文件及目录的权限
-t:在不解压包的情况下看包内内容
-C:解包时指定释放的目标文件夹
-z:调用gzip程序进行压缩或解压
-j:调用bzip2程序进行压缩或解压
压缩文件夹
[root@localhost ~]# tar zcf /home/root.tar.gz /root/*
tar: 从成员名中删除开头的“/”
[root@localhost ~]# ls /home
321 A abc B root.tar.gz zhangsna
不解压的方式查看压缩文件
[root@localhost ~]# tar vft /home/root.tar.gz
-rw------- root/root 121 2023-04-19 19:21 root/anaconda-ks.cfg
-rw-r--r-- root/root 0 2023-04-19 19:11 root/sshd_config
解压
[root@localhost home]# tar zxf root.tar.gz
[root@localhost home]# ls
321 A abc B root root.tar.gz zhangsna
[root@localhost home]#
3、使用vi文本编辑器
vi编辑器的工作模式
命令模式、输入模式、末行模式
命令模式中的基本操作
![](https://img-blog.csdnimg.cn/c43c5090042b496c819e644e902c1df3.png)
![](https://img-blog.csdnimg.cn/3c5ccd2ffe104cd4ac4e0565d5610dd9.png)
![](https://img-blog.csdnimg.cn/8ee4ed707d86420398c5a8320387d9e3.png)
![](https://img-blog.csdnimg.cn/d551a6cf6f3e427a9710650313a5efa2.png)
末行模式中的基本操作
![](https://img-blog.csdnimg.cn/738fa20d0ec4458b8f81e39328efb197.png)
![](https://img-blog.csdnimg.cn/9ab2201907294759ac735cbed2244b05.png)
![](https://img-blog.csdnimg.cn/0139db97226f456daba41c568588d290.png)
账号和权限管理
1、管理用户和组账号
用户和组的概述
Linux基于用户身份对资源访问进行控制
用户帐号
超级用户 //root
普通用户 //自己新建的用户都属于普通用户
程序用户 //权限最低,一般只能操作程序相关联的文件
组帐号
基本组(私有组)
附加组(公共组)
UID和GID
UID(User IDentity,用户标识号)
GID(Group IDentify,组标识号)
用户账号管理
保存用户名称、宿主目录、登录Shell等基本信息
文件位置:/etc/passwd
每一行对应一个用户的帐号记录
[root@localhost home]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
保存用户的密码、账号有效期等信息
文件位置:/etc/shadow
每一行对应一个用户的密码记录
[root@localhost home]# head -3 /etc/shadow
root:$6$ZeCg2CuLTQxWIIRr$7npsfyveJp86vEhZpb95NN2XuTjd76EiOADR.gEKblWI1o4ghBEguodad7Fza2BHLOgEUZx6F8lH/s8uMu5ln/::0:99999:7:::
bin:*:17632:0:99999:7:::
daemon:*:17632:0:99999:7:::
文件的每一行内容包含九个用冒号“:”分隔的配置字段
字段1:用户帐号的名称
字段2:加密的密码字串信息
字段3:上次修改密码的时间
字段4:密码的最短有效天数,默认值为0
字段5:密码的最长有效天数,默认值为99999
字段6:提前多少天警告用户口令将过期,默认值为7
字段7:在密码过期之后多少天禁用此用户
字段8:帐号失效时间,默认值为空
字段9:保留字段(未使用)
添加用户账号
useradd命令
useradd [选项]... 用户名
常用命令选项
-u:指定 UID 标记号
-d:指定宿主目录,缺省为 /home/用户名
-e:指定帐号失效时间
-g:指定用户的基本组名(或GID号)
-G:指定用户的附加组名(或GID号)
-M:不为用户建立并初始化宿主目录
-s:指定用户的登录Shell
[root@192 ~]# useradd -d /ftphome/mike -G zhangsan -s /sbin/nologin mike
[root@192 ~]# cat /etc/passwd | tail -2
zhangsan:x:1000:1000::/home/zhangsan:/bin/bash
mike:x:1001:1001::/ftphome/mike:/sbin/nologin
设置/更改用户口令
passwd命令
passwd [选项]... 用户名
常用命令选项
-d:清空用户的密码,使之无需密码即可登录
-l:锁定用户帐号
-S:查看用户帐号的状态(是否被锁定)
-u:解锁用户帐号/centos 7不需要修改密码
当解锁后需要重新修改密码或者清除密码
修改用户账号的属性
usermod命令/主要修改已存在用户的信息
usermod [选项]... 用户名
常用命令选项
-l:更改用户帐号的登录名称
-L:锁定用户账户
-U:解锁用户账户
以下选项与useradd命令中的含义相同
-u、-d、-e、-g、-G、-s
设置账号失效时间
[root@localhost ~]# usermod -e 2023-4-1 zhangsan
删除用户账号
userdel命令
userdel [-r] 用户名
添加 -r 选项时,表示连用户的宿主目录一并删除(一般不用)
[root@localhost ~]# useradd stu01
[root@localhost ~]# ls -ld /home/stu01
drwx------ 2 stu01 stu01 62 4月 20 10:09 /home/stu01
[root@localhost ~]# userdel -r stu01
[root@localhost ~]# ls -ld /home/stu01
ls: 无法访问/home/stu01: 没有那个文件或目录
[root@localhost ~]#
用户账号的初始配置文件
文件来源
新建用户帐号时,从 /etc/skel 目录中复制而来
主要的用户初始配置文件
~/.bash_profile(创建用户时执行的脚本)
~/.bashrc(切换用户时执行的脚本)
~/.bash_logout(退出用户时执行的脚本)
/etc/profile
/etc/bashrc
### 组账号管理
添加组账号
groupadd [-g GID] 组账号名
[root@localhost zhangsan]# groupadd -g 2000 market
[root@localhost zhangsan]# tail -1 /etc/group
market:x:2000:
添加删除组成员
设置组帐号密码(极少用)、添加/删除组成员
gpasswd [选项]... 组帐号名
常用命令选项
-a:向组内添加一个用户
-d:从组内删除一个用户成员
-M:定义组成员列表,以逗号分隔
[root@localhost zhangsan]# gpasswd -a wangwu market
正在将用户“wangwu”加入到“market”组中
[root@localhost zhangsan]# tail -2 /etc/group
market:x:2000:wangwu
wangwu:x:1003:
[root@localhost zhangsan]# gpasswd -d wangwu market
正在将用户“wangwu”从“market”组中删除
[root@localhost zhangsan]# tail -2 /etc/group
market:x:2000:
wangwu:x:1003:
**删除组账号 **
groupdel 组帐号名
[root@localhost zhangsan]# tail -2 /etc/group
mike1:x:1002:
wangwu:x:1003:
注意:任何用户的基本组都不可以直接删除
查询账号信息
id命令
查询用户身份标识
id [用户名]
[root@localhost zhangsan]# id zhangsan
uid=1000(zhangsan) gid=1000(zhangsan) 组=1000(zhangsan)
groups命令
查询用户所属的组
groups [用户名]
[root@localhost zhangsan]# groups mike
mike : mike zhangsan
finger命令
查询用户帐号的详细信息
finger [用户名]
[root@localhost zhangsan]# finger zhangsan
Login: zhangsan Name:
Directory: /home/zhangsan Shell: /bin/bash
Never logged in.
No mail.
No Plan.
users、w 、who命令
查询已登录到主机的用户信息
[root@localhost zhangsan]# users
root root
[root@localhost zhangsan]# who
root tty1 2023-04-20 11:31
root pts/0 2023-04-20 09:52 (192.168.1.2)
tty 本地登录
pts/0 远程登录
[root@localhost zhangsan]# w
11:31:42 up 1:43, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 11:31 30.00s 0.00s 0.00s -bash
root pts/0 192.168.1.2 09:52 6.00s 0.05s 0.00s w
2、管理目录和文件的属性
查看目录或文件的属性
访问权限
读取 r:允许查看文件内容、显示目录列表
写入 w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行 x:允许运行程序、切换目录
归属(所有权)
属主:拥有该文件或目录的用户帐号
属组:拥有该文件或目录的组帐号
[root@localhost ~]# ls -l sshd_config
-rw-r--r-- 1 root root 0 4月 19 19:11 sshd_config
-rw-------. 2 root root 1481 Feb 28 2020 anaconda-ks.cfg
第一个字段:表示文件类型
第2-10字段:表示文件权限,前3字段为所有者权限,中间3字段为属组权限,最后3字段为其他用户权限
第11字段:表示selinux安全机制特性,对于关闭了selinux的操作系统在新建文件或目录时没有这个"."
第12字段: 对于文件来说:文件硬链接数量;对于目录来说:该目录下子目录数量,子子目录数量不计算在内。
第4、5列:表示当前用户的所有者和所属组
第6列:当前文件的大小,单位默认为字节
第7、8、9列:修改文件的时间,可通过touch命令刷新该时间
第10列:当前文件或目录的名称
linux系统中的常见文件类型
d -- 目录文件类型
- -- 普通文件
a.纯文本文件 text /etc/hosts --- 文本文件(可以直接编辑查看的普通文件)
b.二进制文件 binary /bin/ls --- 命令文件(不可以编辑)
c.数据型文件 data /tmp/etc.tar.gz --- 数据文件(压缩的文件)
l -- 链接文件(快捷方式)
c/b -- 块文件/字符文件(设备文件)
块文件: 存储的设备文件 光驱设备文件 磁盘
字符文件: 根本停不下来的输出字符信息
![](https://img-blog.csdnimg.cn/4d4afe9610a54dd68d204cfa84a1b26d.png)
![](https://img-blog.csdnimg.cn/9350c22ad8e94c6c938a906deba5896e.png)
设置目录或文件的权限
chmod命令
chmod [ugoa] [+-=] [rwx] 文件或目录...
u、g、o、a 分别表示
属主、属组、其他用户、所有用户
常用命令选项
-R:递归修改指定目录下所有子项的权限
设置所有用户权限
[root@localhost ~]# chmod a=rwx sshd_config
[root@localhost ~]# ls
anaconda-ks.cfg sshd_config
所有用户都减去 x 权限
[root@localhost ~]# chmod a-x sshd_config
[root@localhost ~]# ls
anaconda-ks.cfg sshd_config
[root@localhost ~]# chmod 000 sshd_config
[root@localhost ~]# ls -l sshd_config
---------- 1 root root 0 4月 19 19:11 sshd_config
设置目录和文件的归属
chown命令
chown 属主 文件或目录
chown :属组 文件或目录
chown 属主:属组 文件或目录
常用命令选项
-R:递归修改指定目录下所有文件、子目录的归属
[root@localhost ~]# chown zhangsan:zhangsan sshd_config
[root@localhost ~]# ls -l sshd_config
---------- 1 zhangsan zhangsan 0 4月 19 19:11 sshd_config
设置文件和目录的默认权限 umask
umask命令
umask 000
umask 777
命令作用
定义新创建文件及目录的默认权限,通过该命令实现定义权限补码
注意:文件权限最大666(在创建时),目录权限最大777
[root@localhost ~]# umask 000
[root@localhost ~]# mkdir 123
[root@localhost ~]# ls -l
总用量 4
drwxrwxrwx 2 root root 6 4月 20 14:33 123
drwxr-xr-x 2 root root 6 4月 20 14:32 abc
-rw-------. 1 root root 121 4月 19 19:21 anaconda-ks.cfg
---------- 1 zhangsan zhangsan 0 4月 19 19:11 sshd_config
[root@localhost ~]#
特殊权限
suid
命令作用
程序运行时的权限从执行者变更成程序所有者的权限
使用方法
程序运行时的权限从执行者变SUID属性一般用在可执行文件上,当用户执行该文件时,会临时拥有该执行文件的所有者权限。
使用”ls -l” 或者”ll” 命令浏览文件时,如果可执行文件所有者权限的第三位是一个小写的”s”,就表明该执行文件拥有SUID属性。
比如/usr/bin/passwd文件
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
# chmod u+s abc
# chmod u-s abc
sticky
命令作用
只作用于目录
目录下创建的文件只有root、文件创建者、目录所有者才能删除。
使用方法
对系统中的某些目录可以授予这样的权限,此时该目录就遵循该权限规则,如系统中的/tmp目录
[root@localhost tmp]# ll -d /tmp
drwxrwxrwt. 14 root root 4096 4月 20 15:26 /tmp
# chmod o+t a1
# chmod o-t a1
ACL
命令作用
可作用于文件及目录
针对文件和目录授予单个用户的rwx权限
使用方法
# setfacl -R -m d:u:abc:rwx test //文件夹
# setfacl -m u:wangwu:rwx abc //文件
-R 表示递归授权
-m 表示修改acl权限
d 表示只对后续新对象继承该权限
u 表示用户
abc 表示要授权用户名称
磁盘和文件系统管理(简单的)
1、管理磁盘及分区
检测并确认新硬盘
fdisk命令
查看或管理磁盘分区
fdisk -l [磁盘设备]
或
fdisk [磁盘设备]
规划硬盘中的分区
# fdisk /dev/sdb
d delete a partition *****
删除分区
g create a new empty GPT partition table
创建一个新的空的GPT分区表(可以对大于2T磁盘进行分区)
l list known partition types
列出可以分区的类型???
m print this menu
输出帮助菜单
n add a new partition *****
新建增加一个分区
p print the partition table *****
输出分区的结果信息
q quit without saving changes
不保存退出
t change a partition s system id
改变分区的系统id==改变分区类型(LVM 增加swap分区大小)
u change display/entry units
改变分区的方式 是否按照扇区进行划分
w write table to disk and exit *****
将分区的信息写入分区表并退出==保存分区信息并退出
在分区完成 后要执行下面的命令
[root@localhost ~]# partprobe /dev/sdb
2、管理文件系统
创建文件系统
mkfs命令
mkfs -t 文件系统类型 分区设备
给分区设置文件类型
mkfs -t xfs -f /dev/sdb1
挂载、卸载文件系统
mount命令
挂载文件系统、ISO镜像到指定文件夹
mount 查询系统的挂载信息
mount [ -t 类型 ] 存储设备 挂载点目录
mount -o loop ISO镜像文件 挂载点目录
umount命令
卸载已挂载的文件系统
umount 存储设备位置
umount 挂载点目录
将/dev/sdb1 挂载到sdb目录
mount /dev/sdb1 /sdb
进程管理
进程查看和控制
1、查看进程
ps
查看静态的进程统计信息
ps -aux
a:所有与进程有关的进程
u:以用户为主的格式显示进程信息
x:所有与终端无关的进程
ps -ef:可以查看父进程的信息
VSZ:虚拟内存
RSS:物理内存
STAT:S-休眠 R-运行 Z-僵死 <-高优先级 N-低优先级 s-父进程 +-前台进程 l-多线程 T停止
TIME:进程占用cpu的时间
VIRT:占用swap内存大小
PR:优先级
RES:占用物理内存大小
SHR:共享内存大小,两个进程间通信时所需
START :开启时间
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.3 125348 3764 ? Ss 15:13 0:00 /usr/lib/systemd/systemd --switched-root --system --deser
root 2 0.0 0.0 0 0 ? S 15:13 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 15:13 0:00 [ksoftirqd/0]
[root@localhost ~]# ps aux | grep sshd
root 954 0.0 0.4 112796 4288 ? Ss 15:14 0:00 /usr/sbin/sshd -D
root 1242 0.0 0.6 161400 6040 ? Ss 15:17 0:00 sshd: root@pts/0
root 1351 0.0 0.0 112720 984 pts/0 R+ 15:59 0:00 grep --color=auto sshd
top
查看动态的进程排名信息
[root@localhost ~]# top
top - 16:05:03 up 51 min, 2 users, load average: 0.00, 0.01, 0.04
Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 997956 total, 774872 free, 92092 used, 130992 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 753688 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 125348 3780 2564 S 0.0 0.4 0:00.97 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
pstree
树状展示进程
[root@localhost ~]# pstree -pu
systemd(1)─┬─NetworkManager(650)─┬─dhclient(713)
│ ├─{NetworkManager}(680)
│ └─{NetworkManager}(682)
├─VGAuthService(630)
├─auditd(608)───{auditd}(609)
├─chronyd(643,chrony)
├─crond(655)
├─dbus-daemon(639,dbus)
├─httpd(1433)─┬─httpd(1434,apache)
│ ├─httpd(1435,apache)
│ ├─httpd(1436,apache)
│ ├─httpd(1437,apache)
│ └─httpd(1438,apache)
├─login(661)───bash(1219)
├─lvmetad(481)
├─master(1043)─┬─pickup(1044,postfix)
│ └─qmgr(1045,postfix)
├─polkitd(637,polkitd)─┬─{polkitd}(649)
│ ├─{polkitd}(651)
│ ├─{polkitd}(662)
│ ├─{polkitd}(663)
│ └─{polkitd}(664)
├─rsyslogd(957)─┬─{rsyslogd}(964)
│ └─{rsyslogd}(965)
├─sshd(954)───sshd(1242)───bash(1244)───pstree(1696)
├─systemd-journal(461)
├─systemd-logind(652)
├─systemd-udevd(488)
├─tuned(955)─┬─{tuned}(1200)
│ ├─{tuned}(1201)
│ ├─{tuned}(1202)
│ └─{tuned}(1216)
└─vmtoolsd(631)───{vmtoolsd}(669)
[root@localhost ~]# pstree -apu
systemd,1 --switched-root --system --deserialize 22
├─NetworkManager,650 --no-daemon
│ ├─dhclient,713 -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens33.pid -lf...
│ ├─{NetworkManager},680
│ └─{NetworkManager},682
├─VGAuthService,630 -s
├─auditd,608
│ └─{auditd},609
├─chronyd,643,chrony
├─crond,655 -n
├─dbus-daemon,639,dbus --system --address=systemd: --nofork --nopidfile --systemd-activation
├─httpd,1433 -DFOREGROUND
│ ├─httpd,1434,apache -DFOREGROUND
│ ├─httpd,1435,apache -DFOREGROUND
│ ├─httpd,1436,apache -DFOREGROUND
│ ├─httpd,1437,apache -DFOREGROUND
│ └─httpd,1438,apache -DFOREGROUND
├─login,661
│ └─bash,1219
├─lvmetad,481 -f
├─master,1043 -w
│ ├─pickup,1044,postfix -l -t unix -u
│ └─qmgr,1045,postfix -l -t unix -u
├─polkitd,637,polkitd --no-debug
│ ├─{polkitd},649
│ ├─{polkitd},651
│ ├─{polkitd},662
│ ├─{polkitd},663
│ └─{polkitd},664
├─rsyslogd,957 -n
│ ├─{rsyslogd},964
│ └─{rsyslogd},965
├─sshd,954 -D
│ └─sshd,1242
│ └─bash,1244
│ └─pstree,1725 -apu
├─systemd-journal,461
├─systemd-logind,652
├─systemd-udevd,488
├─tuned,955 -Es /usr/sbin/tuned -l -P
│ ├─{tuned},1200
│ ├─{tuned},1201
│ ├─{tuned},1202
│ └─{tuned},1216
└─vmtoolsd,631
└─{vmtoolsd},669
2、控制进程
kill
根据 pid 号终止进程
kill -9 pid号 强制删除进程
killall
根据名字终止进程
[root@localhost ~]# ps -aux | grep httpd
root 1786 0.5 0.5 224020 4992 ? Ss 16:40 0:00 /usr/sbin/httpd -DFOREGROUND
apache 1787 0.0 0.2 224020 2944 ? S 16:40 0:00 /usr/sbin/httpd -DFOREGROUND
apache 1788 0.0 0.2 224020 2944 ? S 16:40 0:00 /usr/sbin/httpd -DFOREGROUND
apache 1789 0.0 0.2 224020 2944 ? S 16:40 0:00 /usr/sbin/httpd -DFOREGROUND
apache 1790 0.0 0.2 224020 2944 ? S 16:40 0:00 /usr/sbin/httpd -DFOREGROUND
apache 1791 0.0 0.2 224020 2944 ? S 16:40 0:00 /usr/sbin/httpd -DFOREGROUND
root 1793 0.0 0.0 112720 984 pts/0 R+ 16:41 0:00 grep --color=auto httpd
[root@localhost ~]# killall -9 httpd
[root@localhost ~]# ps -aux | grep httpd
root 1801 0.0 0.0 112720 984 pts/0 R+ 16:41 0:00 grep --color=auto httpd
日志分析
1、主要日志文件
日志分类
日志文件的分类
内核及系统日志
由系统服务rsyslog统一进行管理,日志格式基本相似
用户日志
记录系统用户登录及退出系统的相关信息
程序日志
由各种应用程序独立管理的日志文件,记录格式不统一
日志保存位置
默认位于:/var/log 目录下
[root@localhost ~]# cd /var/log
[root@localhost log]# ls
anaconda btmp dmesg lastlog messages-20230417 secure-20230423 tuned
audit chrony dmesg.old maillog messages-20230423 spooler vmware-vgauthsvc.log.0
boot.log cron firewalld maillog-20230417 rhsm spooler-20230417 vmware-vmsvc.log
boot.log-20230417 cron-20230417 grubby_prune_debug maillog-20230423 secure spooler-20230423 wtmp
boot.log-20230423 cron-20230423 httpd messages secure-20230417 tallylog yum.log
2、日志文件分析
用户日志分析
保存了用户登录、退出系统等相关信息
/var/log/lastlog:最近的用户登录事件
/var/log/wtmp:用户登录、注销及系统开、关机事件
/var/run/utmp:当前登录的每个用户的详细信息
/var/log/secure:与用户验证相关的安全性事件
分析工具
users 、who、w、
last:用户最近登录情况
lastb:登录失败的用户记录
程序日志分析
日志位置由安装时的位置决定 可以百度查询
由相应的应用程序独立进行管理
Web服务:/var/log/httpd/
access_log、error_log
代理服务:/var/log/squid/
access.log、cache.log、
FTP服务:/var/log/xferlog
分析工具
文本查看、grep过滤检索、Webmin管理套件中查看
awk、sed等文本过滤、格式化编辑工具
Webalizer、Awstats等专用日志分析工具
Liunx 基础网络设置
1、查看及测试网络
查看网络设置
ifconfig
查看所有活动网络接口的信息
执行 ifconfig 命令
查看指定网络接口信息
ifconfig 网络接口名
[root@localhost ~]# ifconfig
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::a9a2:8cbd:59b7:aae1 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:39:7b:70 txqueuelen 1000 (Ethernet)
RX packets 561 bytes 45806 (44.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 630 bytes 297599 (290.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.126.147 netmask 255.255.255.0 broadcast 192.168.126.255
inet6 fe80::34d:fd0:446:dc62 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:39:7b:7a txqueuelen 1000 (Ethernet)
RX packets 53145 bytes 69951339 (66.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11736 bytes 718094 (701.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 336 bytes 29232 (28.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 336 bytes 29232 (28.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
hostname
hostname命令
查看或设置当前主机名
hostname
[root@localhost ~]# hostname
localhost.localdomain
route
route命令
查看或设置主机中路由表信息
route [-n]
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.126.2 0.0.0.0 UG 101 0 0 ens33
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 ens32
192.168.126.0 0.0.0.0 255.255.255.0 U 101 0 0 ens33
netstat
netstat命令
查看系统的网络连接状态、路由表、接口统计等信息
netstat [选项]
常用选项
-a、-n、-p、-t、-u、-r
[root@localhost ~]# netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1012/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1181/master
tcp 0 0 192.168.1.100:22 192.168.1.2:48976 ESTABLISHED 2214/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 1012/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1181/master
[root@localhost ~]# netstat -anpu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 127.0.0.1:323 0.0.0.0:* 674/chronyd
udp 0 0 0.0.0.0:68 0.0.0.0:* 2148/dhclient
udp6 0 0 ::1:323 :::* 674/chronyd
测试网络连接
traceroute
traceroute命令
测试从当前主机到目的主机之间经过的网络节点
traceroute 目标主机地址
[root@localhost ~]# traceroute 192.168.1.2
traceroute to 192.168.1.2 (192.168.1.2), 30 hops max, 60 byte packets
1 192.168.1.2 (192.168.1.2) 0.115 ms
* *
nslookup
nslookup命令
测试DNS域名解析
nslookup 目标主机地址 [DNS服务器地址]
[root@localhost ~]# nslookup www.baidu.com
Server: 192.168.126.2
Address: 192.168.126.2#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 14.119.104.189
Name: www.a.shifen.com
Address: 14.119.104.254
2、设置网络地址参数
使用网络配置命令
ifconfig
ifconfig 接口名 ip
设置网络接口的IP地址、子网掩码
地址 [netmask 子网掩码]
ifconfig 网络接口 ip地址[/掩码长度]
禁用或者重新激活网卡
ifconfig 网络接口 up
ifconfig 网络接口 down
设置虚拟网络接口
ifconfig 接口名:序号 IP地址
route
添加到指定网段的路由记录
route add -net 网段地址 gw IP地址
删除到指定网段的路由记录
route del -net 网段地址
删除路由表中的默认网关记录
route del default gw IP地址
向路由表中添加默认网关记录
route add default gw IP地址
修改网络配置文件
主机名修改
hostname命令
设置主机名
hostname 主机名称
网络接口配置文件
/etc/sysconfig/network-scripts/ 目录下的
ifcfg-ens33:第1块以太网卡的配置文件
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=554532a9-a038-4180-b856-b83b2691111c
DEVICE=ens33
ONBOOT=yes
~
……
域名解析配置文件
/etc/resolv.conf 文件
保存本机需要使用的DNS服务器的IP地址
# Generated by NetworkManager
search localdomain
nameserver 192.168.126.2
3、使用DHCP 动态配置主机地址
配置DHCP服务器
安装dhcp服务
yum install -y dhcp
配置dhcp文件
首先打开文件: vim /etc/dhcp/dhcpd.conf
这里就有配置文件模板的路径
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
将模板配置文件复制到 真正的配置文件中
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
并对该文件做修改,以下是我修改后的文件内容
vim /etc/dhcp/dhcpd.conf
option domain-name "example.org";
option domain-name-servers 61.139.2.69, 8.8.8.8; //DNS服务器
default-lease-time 600; //默认租约时间 600s
max-lease-time 7200;
# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7; //日志文件格式
# A slightly different configuration for an internal subnet.
subnet 192.168.1.0 netmask 255.255.255.0 { // 主要的配置文件
range 192.168.1.200 192.168.1.230; // 所需分配的 IP 地址池
option routers 192.168.1.1; // 网关
default-lease-time 600;
max-lease-time 7200;
option domain-name-servers 61.139.2.69;
}
最后启动服务
systemctl start dhcpd
使用DHCP客户端
获取目标的mac地址:
00-0C-29-D6-63-90
打开dhcp配置文件:
vim /etc/dhcp/dhcpd.conf
修改内容:
将目标主机设定为固定IP
host fantasia {
hardware ethernet 00:0C:29:D6:63:90;
fixed-address 192.168.1.222;
}
将目标主机网卡重启
通过查看日志信息可以看到dhcp的工作过程
//收到目标主机想要获取以前的ip,但显示不可获得
Apr 25 12:51:33 localhost dhcpd: DHCPREQUEST for 192.168.1.200 from 00:0c:29:d6:63:90 via ens32: lease 192.168.1.200 unavailable.
//dhcp服务器返回NACK包给目标主机
Apr 25 12:51:33 localhost dhcpd: DHCPNAK on 192.168.1.200 to 00:0c:29:d6:63:90 via ens32
Apr 25 12:51:33 localhost dhcpd: uid lease 192.168.1.200 for client 00:0c:29:d6:63:90 is duplicate on 192.168.1.0/24
//目标主机从新发送DISCOVER 到服务器
Apr 25 12:51:33 localhost dhcpd: DHCPDISCOVER from 00:0c:29:d6:63:90 via ens32
//返回DHCPOFFER包给目标主机,并携带IP地址
Apr 25 12:51:33 localhost dhcpd: DHCPOFFER on 192.168.1.222 to 00:0c:29:d6:63:90 via ens32
Apr 25 12:51:33 localhost dhcpd: Dynamic and static leases present for 192.168.1.222.
//dhcp服务器移除IP:192.168.1.222
Apr 25 12:51:33 localhost dhcpd: Remove host declaration fantasia or remove 192.168.1.222
Apr 25 12:51:33 localhost dhcpd: from the dynamic address pool for 192.168.1.0/24
Apr 25 12:51:33 localhost dhcpd: uid lease 192.168.1.200 for client 00:0c:29:d6:63:90 is duplicate on 192.168.1.0/24
//收到目标主机的REQUEST包
Apr 25 12:51:33 localhost dhcpd: DHCPREQUEST for 192.168.1.222 (192.168.1.100) from 00:0c:29:d6:63:90 via ens32
//返回ACK包确定完成
Apr 25 12:51:33 localhost dhcpd: DHCPACK on 192.168.1.222 to 00:0c:29:d6:63:90 via ens32
Apr 25 12:51:55 localhost dhcpd: Dynamic and static leases present for 192.168.1.222.
Apr 25 12:51:55 localhost dhcpd: Remove host declaration fantasia or remove 192.168.1.222
Apr 25 12:51:55 localhost dhcpd: from the dynamic address pool for 192.168.1.0/24
Apr 25 12:51:55 localhost dhcpd: uid lease 192.168.1.200 for client 00:0c:29:d6:63:90 is duplicate on 192.168.1.0/24
Apr 25 12:51:55 localhost dhcpd: DHCPREQUEST for 192.168.1.222 from 00:0c:29:d6:63:90 via ens32
Apr 25 12:51:55 localhost dhcpd: DHCPACK on 192.168.1.222 to 00:0c:29:d6:63:90 via ens32
FTP文件传输服务
1、vsftpd 服务基础
FTP 服务概述
FTP连接及连接模式
控制连接:TCP 21,用于发送FTP命令信息
数据连接:TCP 20,用于上传、下载数据
数据连接的建立类型
主动模式:服务端从 20 端口主动向客户端发起连接
被动模式:服务端在指定范围内某个端口被动等待客户端连接
FTP传输模式
文本模式:ASCII 模式,以文本序列传输数据
二进制模式:Binary 模式,以二进制序列传输数据
FTP 用户的类型
匿名用户、本地用户、虚拟用户
常见的 FTP 服务器程序
IIS、Serv-U
wu-ftpd、Proftpd
vsftpd(Very Secure FTP Daemon)
常见的 FTP 客户端程序
ftp 命令、windows资源管理器、浏览器
CuteFTP、FlashFXP、LeapFTP、Filezilla
gftp、kuftp
vsftpd 的配置文件
文件介绍
Vsftpd 软件包
官方站点:http://vsftpd.beasts.org/
主程序:/usr/sbin/vsftpd
服务名:vsftpd
用户控制列表文件
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
主配置文件
/etc/vsftpd/vsftpd.conf
常用的全局配置项
listen=YES:是否以独立运行的方式监听服务,ipv6监听需要关闭才能启用该命令。
listen_address=192.168.4.1:设置监听的 IP 地址
listen_port=21:设置监听 FTP 服务的端口号
write_enable=YES:是否启用写入权限
download_enable=YES:是否允许下载文件
userlist_enable=YES:是否启用 user_list 列表文件
userlist_deny=YES:是否禁用 user_list 中的用户,如果是黑名单,表示不能登录FTP,如果是白名单,表示只在这里的用户能够登录FTP。
max_clients=0:限制并发客户端连接数,0表示不限制
max_per_ip=0:限制同一 IP 地址的并发连接数,0表示不限制
xferlog_enable=YES:是否记录用户上传下载日志
xferlog_std_format=YES:启用xferlog格式记录日志,no则使用vsftpd的格式
dirmessage_enable=YES:如果目录存在.message隐藏文件时,当进入此目录时,会显示.message里面的内容
connect_from_port_20=YES:允许服务器主动模式
idle_session_timeout=600:当连接后空闲时间超过600秒将会自动断开
data_connection_timeout=120:当数据连接建立连接后空闲120秒自动断开
tcp_wrappers=YES:是否启用主机访问控制
#chown_uploads=YES //开启用户上传数据归属
#chown_username=whoever //上传的数据属于whoever用户
#nopriv_user=ftpsecure //定义唯一一个ftp用户,该用户只用于ftp
#async_abor_enable=YES //取消下载后客户端不挂起
#ascii_upload_enable=YES //使用文本模式上传
#ascii_download_enable=YES //使用文本模式下载,通常情况下用户数据包含文本和图片视频等,因此服务器会自动切换模式上传下载相关数据,文本用ascii,图片用二进制
#ftpd_banner=Welcome to blah FTP service. //FTP登录欢迎信息
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd/banned_emails //若是启动这项功能,则必须提供一个文档banner_emails,内容为email address。若是使用匿名登入,则会要求输入email address,若输入的email address 在此文档内,则不允许进入。
#pasv_enable=YES
#port_enable=YES //只能出现一个,表示连接模式,此项为主动
use_localtime=YES //使用本机时间
max_clients=0
最大连接数量(stand-alone独立运行模式下) # lsof -i:21 可查看当前模式vsftpd/xinetd服务,一般设置为YES
max_per_ip=0
每个客户端最大连接ftp服务器的连接数