黑马程序员linux运维下半部分笔记
因为部分操作过于简单与易懂,所以在接下来的笔记中并未做记录。博主提示:手动实践往往更容易学会。(实现过程附截图)
===================================================
用户
身份:ower、group、others、root
权限:read、write、execute
注意:在linux中,如果要删除一个文件,不是看文件有没有对应的权限,而是看文件所在目录是否有写权限,如果有才可以删除
查看权限:#ls -l 路径 ls -l等价于ll
‘d‘表示文件夹; ‘ - ‘表示文件; ‘l’表示软连接
语法:#chmod 选项 权限模式 文档
常用选项:
-R:设置递归权限(当文档类型为文件夹的时候)
注意事项:如果要给文档设置权限,操作者要么是root用户,要么是文档的所有者
如果在设置权限的时候不指定给谁设置,则默认给所有用户设置
举例:
给chinese.c文件(-rw-r–r--)设置权限,要求所有者拥有全部权限,同组用户拥有读写权限,其他用户也是读写权限
#chmod u+rwx,g+rw,o+rw chinese.c
还原权限(-):
#chmod u-x,g-w,o-w chinese.c
使用“=”操作
#chmod u=x,g=w,o=w chinese.c
#chmod u=rwx,g=rw,o=rw chinese.c
取消所有用户权限
#chmod a=— chinese.c
设置所有人拥有权限:
#chmod +rwx chinese.c 或者 #chmod a=rwx chinese.c 或者 #chmod a+rwx chinese.c
举例:
设置取消所有用户权限
#chmod 000 chinese.c
还原权限:#chmod 766 chinese.c
没有读权限无法对文件进行操作(能进入文件)
使用追加项可以对文件进行操作 “>>”
注意:在写权限的时候千万不要设置类似于上面这种情况,如果一个权限中但凡出现2与3的数字,则该权限有不合理的情况
使用数字形似的错误举例:
属主与属组
1、 chown
作用:更改文档的所属用户
语法:#chown -R username 文档路径
案例:将root用户的sugar目录所有者更改为yolo
#chown yolo sugar/
2、 chgrp
作用:更改文档的所属用户组
语法:#chgrp -R groupname 文档路径
案例:将root用户的sugar目录所有者更改为yolo,并且将所属组也改为yolo
#chgrp -R yolo sugar/
同时更改属主与属组
语法:#chown -R username:groupname 文档路径
扩展:
问题:在有些特殊情况下普通用户需要执行root权限,但是又不能将root用户的密码告诉普通用户,如何解决该问题?
方法:使用sudo(switch user do)命令进行权限设置,sudo可以让管理员(root)事先定义某些特殊命令谁可以只执行
默认sudo没有除root之外用户的规则,想要使用设置则先配置sudo
Sudo配置文件地址:/etc/sudoers
1、 配置sudo文件请使用“#visudo”,打卡之后使用方法和vim一致
2、 配置普通用户的权限
Root:表示用户名
All:表示允许登陆的主机
(All):表示以谁的身份执行,All表示root身份
All :表示当前用户可以执行的命令,多个命令可以使用“,”分割
案例:本身idler用户不能添加用户,要求使用sudo配置,将其设置为可以添加用户,并且可以修改除root用户之外的其他用户的密码。
如下为拒绝反馈:
注意:在写sudo规则的时候不建议写直接形式的命令,而是写命令的完整路径。
路径可以使用which命令来查看
语法:# !which 指令名称
开始添加相应权限,注意centos7之后版本可以直接掉换位置(先允许在拒绝)
修改命令:idler ALL=(ALL) /usr/sbin/useradd,/usr/bin/passwd,!/usr/bin/passwd root
成功在非root用户下对yolo用户进行密码修改
无法对root用户进行密码修改
注意:切换非root用户后,密码五分钟内不需要重新输入
常见centos、ubuntu都可以使用sudo命令
补充:普通用户如何查看自己的权限
#sudo -l
1957年,前苏联发射第一颗人造卫星,震惊美国
1958年美国国防部高级研究计划署成立(ARPA)
1969年,ARPANET(阿帕网),开始联机,因此1969年被称为iternet元年
网络分类:
LAN:局域网
MAN:城域网
WAN:广域网
IP公有地址:向inter NIC 申请
IP私有地址:非注册地址,专为机构内部使用
A类:10.0.0.0—10.255.255.255
B类:172.16.0.0—172.31.255.255
C类:192.168.0.0—192.168.255.255
Ping
作用: 检测主机与目标主机之间的联通性
语法:#ping 主机地址(IP地址、主机名、域名) -t
Netstat
作用:查看网络的连接信息
语法:#netstat -tnlp (tcp协议、将字母转化成数字、列出状态为监听、显示进程相关信息)
#netstat -an (全部、将字母转化成数字)
Traceroute(该命令需要安装)
作用:查找当前主机与目标主机之间所有的网关
语法:#traceroute 主机地址
Arp地址解析协议
语法:#arp -a 查看本地缓存MAC表
#arp -d 主机地址 删除指定的缓存记录
因为虚拟机和物理机存在网络通信,所以缓存依然存在
Tcpdump
作用:抓包、抓取数据表
语法:
#tcpdump 协议(tcp/udp) port 端口
#tcpdump 协议 port 端口 host 地址
#tcpdump -I 网卡设备名
项目上线(以阿里云为例)
购买服务器、购买域名、服务器添加域名站点、域名备案、域名解析、filezalli传输文件
官网:www.aliyun.com
Shell:
创建3sh.sh文件
修改执行权限(创建完成之后必须修改权限!!!)
执行/home/3sh.sh 路径写完整
如果文件在根目录下,可以用 . /文件名
Readonly (bash 命令不需要给权限)
接受用户输入(重点)
语法:read -p 提示语 变量名
案例:编写一个脚本practice.sh,要求执行后提示用户输入文件的名称(路径),然后自动为用户创建该文件
删除变量:
语法: unset 变量名
Shell脚本附带选项(重点)
问题:在linux中如何像内置命令一样传递一些选项呢?
例如:
传递# ./paper.sh a b c
接收:
在脚本中可以用“$1”来表示a,“$2”来表示b,以此类推
接收可以用“$”加上选项对应的序号即可
测试:编写paper.sh 传递a,b,c 输出其值
练习:创建自定义指令“user” , 可以直接执行,要求指令具备以下功能:
1、 #user -add 用户名 添加用户
2、#user -del 用户名 删除用户及其家目录
方法:
打开paper.sh文件
打开#vim ~/.bashrc,添加软连接
添加执行权限
重信登陆root用户刚才创建的指令才可生效
测试:
#user -add xiaomi
删除 #user -del xiaomi
Linux系统中的数据库
Centos7直接#yum -y install mysql-server 会报错
解决方案:
rpm -ivh https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
Mysql初始化
开启mysql:#systemctl start sqld
查看状态:#systemctl status mysql
查看初试密码:#grep “temporary password” /var/log/mysqld.log (旧密码所在文件地址)
密码如果不符合要求则会有一下报错:
修改密码
mysql> alter user ‘root’@‘localhost’ identified by ‘[email protected]’;
刷新权限
mysql>flush privileges;
Mysql基本操作
记录表示行、列表示字段
Show databases; 显示已经创建的数据库
Create database 库名; 创建数据库
Drop database 库名; 删除数据库
Use 库名; 调用数据库
Show tables; 显示当前数据库中所有表
Create table 表名(名称 数据类型 [primary key auto_increment],名称 数据类型,…,primary key(名称,[名称]));
常见数据类型:char(定长字符),varchar(不定长字符)
Desc 表名; 查看表
Drop table 表名 删除表
增加记录
字符等类型要加双引号
Insert into 表名 values (a,b,c…); 填写全部字段
Insert into 表名 (列,列,…) values (a,b,c); 部分字段
查询
Select * from 表名 where 条件;
更新记录
Update 表名 set 列名称=值,列名称=值,列名称=值… where 列名称=值;
删除记录
Delete from 表名 where 列名=值;
备份(不能在mysql内)
全量备份(数据+结构):#mysqldump -u root -p password -A > 备份文件路径/文件名.sql
指定备份(数据+结构):#mysqldump -u root -p password 库名 > 备份文件路径/文件名.sql
多个备份(数据+结构):#mysqldump -u root -p password --databases 库1 库2 库3 > 备份文件路径/文件名.sql
问题:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
方案:
修改密码
mysql> alter user ‘root’@‘localhost’ identified by ‘[email protected]’;
mysql>flush privileges;
设置每分钟备份数据库
分 时 日 月 周
还原数据库
Mysql命令行:mysql> source 备份文件路径
系统命令行:#mysql -uroot -pIdler < 备份文件路径
必须在一个database内进行还原
当source出现乱码时设置mysql字符集: mysql> set names utf-8(utf8,gbk);
三码一致:服务器端+传输过程中+客户端
云端服务器配置
===================================================