Linux
Linux文件和目录
文件目录结构树:
- 在Linux系统中,目录被组织成一个:单根倒置树结构,文件从根目录开始,用
/
来表示,然后再在根目录下创建其他的目录。
Linux重要目录介绍:
- / : 根目录,位于Linux文件目录结构的顶层,一般根目录下只存放目录,不存放文件,
/etc、/bin、/dev、/lib、/sbin
应该和根目录放置在应该分区中。 - /home : 普通用户主目录,当新建账户时,都会分配给这个用户目录,建议单独分区,并分配额外空间用于存储用户数据。
- /boot : 用于存放系统启动引导文件,内核文件。
- /root : 该目录时Linux系统管理员(超级用户) root的宿主目录。
- /tmp : 存放系统运行过程中使用的一些临时文件。
- /var : 存放系统中经常需要变换的一些文件,如系统日志文件,用户邮箱目录等。
- /etc : 存放Linux系统及各种程序的配置文件,配置文件比较多的程序在
/etc
目录中建立独立的子目录,用于存放程序的配置文件。
文件和目录权限:
在Linux中我们可以使用ll
或ls -l
命令来显示应该文件的属性权限以及文件所属的用户和组。
[root@www/]# ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
......
Linux对普通文件的权限说明:
- r : 可读,对文件有阅读的权限。
- w : 可写,对文件有修改内容的权限(删除文件自身受父目录权限的影响)。
- x : 可执行,对文件表示具有执行文件的权限。
Linux对目录的权限说明:
- r : 可读,表示具有浏览目录的权限。
- w : 可写,表示具有修改目录内文件的权限。
- x : 可执行,表示具有进入目录的执行权限。
设置文件权限:
1.Linux文件权限有两种设置方法,一种是数字,一种是符号。
2.Linux文件的基本权限就有九个,分别是owner/group/others,三种身份各有自己的read/write/execute权限。
3.文件的权限字符为:[-rwxrwxrwx],这九个权限是三个一组的。其中,我们可以使用数字来代表各个权限,各权限的分数对照如下:
- r(可读)=4,w(可写)=2,x(执行)=1。
例如:
-
同一组(owner/group/others) 三个权限(rwx)累加:
owner = rw = 4 + 2 = 6 grou p= r = 4 other = r = 4
-rw-r--r--. 1 das das 54 9月 3 10:30 test.md
文件和目录特殊权限:
Linux用户类型和组
用户分为三类:
- 超级用户:(root) 对本机有至高无上的权限。
- 普通用户:管理员root创建的用户,一般在自己的宿主目录有绝对权限。
- 虚拟用户:存在Linux中,满足文件或程序运行的需要创建的用户,不能登录,不能使用。
用户组:
- 具有相同特征的用户的集合。一个组可以包含多个用户,每个用户也可以属于不同的组。
- 用户组的目的方便管理员对用户进行集中管理。用户组也分为三类:系统组、私有组和标准组。
用户及用户组配置文件:
- /etc/passwd : 记录操作系统用户及其属性信息。
- /etc/shadow : 用户影子口令文件;记录所有用户的密码信息。
- /etc/group : 记录用户组及其属性的信息。
- /etc/gshadow : 记录用户组及其相关属性密码信息。
UID和GID:
- 概念:Linux 登录主机时我们输入用户名,但系统里不会认识用户名的,而是通过
/etc/passwd
文件里用户名对应的 UID 和 GID 识别的。 - UID:每个用户对应一个UID号,UID在本机的操作系统里是唯一的。
- GID:每个组用户会对应一个GID号,GID在本机的操作系统里是唯一的。
UID的限制:
用户及用户组状态命令:
1.su 用户名 – 切换用户
2.id 用户名 – 显示用户的UID,GID
3.whoami – 显示当前用户名称
4.groups –显示用户所属组
5.sudo – 临时使用root权限
Linux服务管理
介绍:
服务 (service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,因此我们又称为守护进(daemon)。
基本的类型有包括系统服务(.service)、数据监听与交换的插槽档服务(.socket)、储存系统状态的快照类型、提供不同类似执行等级分类的操作环境(.target)等。
service管理指令:
-
在Centos7.0以前:
service 服务名 start stop restart reload status -
在Centos7.0以后不再使用service,而是systemctl
systmctl [command] [unit] unit–>服务名称或进程
-
command 主要有:
start:立刻启动后面接的 unit
stop:立刻关闭后面接的 unit
restart:立刻关闭后启动后面接的 unit
systemctl [command] [unit]:
command 主要有:
- reload:不关闭后面接的 unit 的情况下,重新载入配置文件,让设置生效。
- enable:设置下次开机时,后面接的 unit 自启。
- disable:设置下次开机时,后面的 unit 不会被启动。
- status:目前后面接的这个 unit 的状态(正在执行、开机默认执行否、登录等信息)。
- is-active:目前有没有正在运行中。
Linux vim编辑器
vim 常见命令:
- :w – 将编辑的数据写入硬盘文件中。
- :w filename – 将编辑的数据存储为另一个文件。
- :q – 离开vi。
- :wq – 存储后离开,加上
!
为强制。 - :q! – 修改后不想保存,强制离开。
Linux 防火墙
防火墙具备一些有效的隔离功能,能够对经过防火墙的网络包按照一定的规则进行检查,从而控制网络包的进入进出,以达到限网络访问的一些目的。Linux操作系统,在内核级别就已经集成了防火墙功能,也就是Netfilter组件。而我们在日常生产中使用的iptables则是系统提供给我们的软件工具而已。
Centos操作系统用来管理防火墙的软件工具是iptables,而Centos7中,系统又提供了更为强大的firewalld工具。两者的使用方式相似,都是将写好的规则送往netfilter,告诉内核如何去处理信息包。但是在使用的过程中一定要注意,iptables结合firewalld二者选其一即可,避免冲突。
- 开启iptables:
systemctl start iptables
- 关闭iptables:
systemctl stop iptables
- 查看iptables现有规则:
iptables -L -n
- 开放22端口:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- 禁用23端口:
iptables -A INPUT -p tcp --dport 23 -j DROP
- 添加信任网络:
iptables -A INPUT -p tcp -s 1.1.1.1 -j ACCEPT
- 删除某个信任IP:
iptables -D INPUT -p tcp -s 1.1.1.1 -j ACCEPT
Linux 日志
Linux日志大多是以明文存储,一般存储在/var/log
目录中,Linux系统主要有三个日志子系统:连接时间日志,进程统计日志,错误日志。
Linux中可以配置日志文件,需要修改日志文件syslog.conf
配置,通常是不用配置,除非特殊使用人群。
日志文件介绍:
**boot.log: ** 录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息。
**lastlog: ** 记录最后一次用户成功登录的时间、登录IP等信息。
**messages: ** 记录Linux操作系统常见的系统和服务错误信息。
**secure: ** Linux系统安全日志,记录用户和工作组变坏情、用户登录认证情况
**btmp: ** 记录Linux登录失败的用户、时间以及远程IP地址。
**syslog: ** 只记录警告信息,常常是系统出问题的信息,使用lastlog查看。
**wtmp: ** 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件还有其他一系列服务日志,只有对应的服务存在时才会有对应的日志。
Linux 常用命令
关机/重启
关机:shutdown
参数:
-h now //现在关闭系统
-h hours:minutes //按预定时间关闭系统,若超过今天的时间戳,则隔天才会关闭
-c //取消按预定时间关闭系统
-h + minutes //多少分钟后自动关机
-r + 30 //30分钟后关机
-k now 'this system will reboot' //仅仅发出警告信息,不会关机
重启:reboot
ls 命令
描述:列举当前目录或指定目录下所有文件。
参数:
-a: 显示当前目录下所有文件,包括隐藏文件。
-l : 以列表的方式显示文件详细信息。
mkdir/rmdir 命令
mkdir test //创建test文件夹
rmdir test //删除test文件夹 只能删除空文件夹
cd 命令
cd 目录 //进入指定目录
cd .. //返回上层目录
cd ~ //返回家目录
cd / //返回根目录
touch 命令
touch test //创建test文件
cp命令
描述:复制目标文件/文件夹
实例:
将当前目录 test/ 下的所有文件复制到新目录 newtest 下:
cp –r test/ newtest
参数:
-a: archive的意思,若要复制的文件为目录,则复制整个目录。
-d: 若源文件为连接文件(link file),则复制连接文件属性而非文件本身。
-f: 强制(force),若有重复或其他疑问时,不会询问用户,而强制复制。
-i: 若目标文件(destination)已存在,在覆盖时会先询问是否真的操作。
-l: 建立硬连接(hard link)的连接文件,而非复制文件本身。
-p: 与文件的属性一起复制,而非使用默认属性。
-r: 递归复制,用于目录的复制操作。
-s: 复制成符号连接文件(symbolic link),即”快捷方式”文件。
-u: 若目标文件比源文件旧,更新目标文件。
mv 命令
描述:移动文件/文件夹到指定位置
参数:
-f: 强制直接移动而不询问。
-i: 若目标文件(destination)已经存在,就会询问是否覆盖。
-u: 若目标文件已经存在,且源文件比较新,才会更新。
mv test(文件) test1(文件要移动到的文件)
cat 命令
描述:显示文件内容(以只读方式打开)
参数:-n – 显示行号
cat 文件名
>/» 命令
>
描述:输出重定向,会覆盖文件内容。
比如输入一条命令,默认行为是将结果输出到屏幕。但有时候我们需要将输出的结果保存到文件,就可以用重定向。
cat test3 > test1/txt //将查看到的test3内容赋予txt
»
描述:输出重定向,不会覆盖文件内容,而是追加到文件内容尾部
同上。
ln 命令
描述:创建链接文件
参数:
-i: 交互模式,文件存在则提示用户是否覆盖。
-s: 软链接(符号链接)。
-d: 允许超级用户制作目录的硬链接。
-b: 删除,覆盖以前建立的链接。
软链接(符号链接):ln -s source target
硬链接(实体链接):ln source target
find 命令
描述:从指定目录向下递归遍历所有子目录,列举出指定条件的文件。
参数:
-name: 按照指定的文件名查找文件。
-user: 查找指定用户的所有文件。
-size: 设置要查找的文件的大小(+num 大于 -num 小于 num 等于)
gzip/gunzip 命令
gzip 文件名 //压缩文件 (-r :递归压缩)。
gunzip 文件名 //解压文件
ifconfig 查看网卡与配置信息。
ps 命令
描述:查看进程信息。
参数:
-A:所有的进程均显示出来,与-e具有同样的效用。
-a: 显示现行终端机下的所有进程,包括其他用户进程。
-u: 以用户为主的进程状态。
-x: 通常与 a 整个参数一起使用,可列出较完整的信息。
Linux 开机启动项
某些脚本和服务会随着开机而后台自动启动和运行。
开机启动的两种方法:
一、添加开机自启动服务(只需要两条命令):
systemctl enable redis.service //设置redis服务为开机自启服务
systemctl start redis.service //启动redis服务
二、添加开机自启脚本:
1.赋予脚本可执行权限(/opt/script/shell.sh
是你的脚本路径)。
2.打开/etc/rc.d/rc.local
或/etc/rc.local
文件,在末尾添加如下内容。
3.在centos7中,/etc/rc.d/rc.local
的权限被降低了,所以需要执行如下命令赋予其可执行权限。
chmod + x /opt/script/shell.sh
su -user -c '/opt/script/shell.sh'
chmod + x /etc/rc.d/rc.local