LAMP编程之Linux(3)
LAMP编程之Linux(3)
6、sudo(重点)
问题:reboot、shutdown、init、halt,在普通用户身份上都是操作不了,但是有些特殊的情况下又需要有执行权限。又不可能让root用户把自己的密码告诉普通用户,这个问题该怎么解决?
该问题是可以被解决的,可以使用sudo(switch user do)命令来进行权限设置。Sudo可以让管理员(root)事先定义某些特殊命令谁可以执行。
默认sudo中是没有除root之外用户的规则,要想使用则先配置sudo。
Sudo配置文件:/etc/sudoers
该文件默认只读,不允许修改,因此不能直接修改。
a. 配置sudo文件请使用“#visudo”(后不加任何内容),打开之后其使用方法和vim一致
b. 配置普通用户的权限
Root表示用户名,如果是用户组,则可以写成“%组名”
ALL:表示允许登录的主机(地址白名单)
(ALL):表示以谁的身份执行,ALL表示root身份
ALL:表示当前用户可以执行的命令,多个命令可以使用“,”分割
案例:使用admin这个用户,赋予其添加用户权限。
注意:在写sudo规则的时候不建议写直接形式的命令,而是写命令的完整路径。
路径可以使用which(whereis亦可)命令来查看
语法:#which 指令名称
Whereis会找出一些非可执行文件,建议使用which
在添加好对应的规则之后就可以切换用户,切换到普通用户admin,再去执行:
此时要想使用刚才的规则,则以以下命令进行:
#sudo 需要执行的指令(就是放权的指令名称)
此时输入的密码是当前执行sudo指令的用户的密码,而非root密码。
在输入sudo指令之后需要输入当前的用户密码进行确认的操作(不是root用户密码),输入之后在接下来5分钟内再次执行sudo指令不需要密码。
补充:在普通用户下怎么查看自己具有哪些特殊权限呢?
#sudo -l 表示list
最后:sudo不是任何Linux分支都有的命令,常见centos与ubuntu都存在sudo命令。
作业:使用sudu实现让普通用户具备添加、删除用户的权限。
二、运行级别
运行模式也可以称之为运行级别(Running Level)。
在linux中存在一个进程:init (initialize,初始化),进程id是1。
查看进程:#ps -ef|grep init
该进程存在一个对应的配置文件:inittab(系统运行级别配置文件,位置/etc/inittab)
文件的主要内容:
根据上述的描述,可以得知,Centos6.5中存在7种运行级别/模式。
0 — 表示关机级别(不要将默认的运行级别设置成这个值)
1 — 单用户模式(找回root密码的)
2 — 多用户模式,不带NFS(Network File Syetem)
3 — 多用户模式,完全的多用户模式(不带桌面的,纯命令行模式)
4 — 没有被使用的模式(被保留模式)
5 — X11,完整的图形化界面模式
6 — 表示重启级别(不要将默认的运行级别设置成这个值)
与该级别相关的几个命令(临时切换,立即生效):
#init 0 表示关机
#init 3 表示切换到不带桌面的模式(CLI 命令行模式)
#init 5 切换到图形界面(前提必须先确保已经安装了图形化界面)
#init 6 重启电脑
注意:init指令需要超级管理员的权限,普通用户无法执行。
这些命令其实都是调用的init进程,将数字(运行级别)传递给进程,进程去读配置文件执行对应的操作。
①切换到纯命令行模式下(临时切换,重启之后又恢复)
#init 3
切换之后需要输入用户名和密码,在输入密码的时候没有“*”提示输入,只要自己确认输入的密码没有错误,按下回车即可。
②回到桌面模式
#init 5
③设置模式永久为命令行模式
将/etc/inittab文件中的initdefault值设置成3,然后重启操作系统。
切换重启之后默认即命令行模式:
三、网络设置
1、ip地址查看
需要的场景:远程连接、配置相关软件时
指令:#ifconfig
得知的信息有:
①有2块网卡,一个叫eth0,另一个lo(本地回环网卡,本机ip)
②ip地址是 inet addr那一项
2、网卡配置文件
位置:/etc/sysconfig/network-scripts/ifcfg-*文件
ONBOOT:表示是否自动连接
BOOTPROTO(COL):网卡启动之后使用的协议,一般情况下是DHCP
HWADDR:硬件地址(mac地址,物理地址),计算机之间的通信都是依赖于mac地址
扩展:针对像网卡配置目录层次比较深的文件,如果需要频繁更改,可以将需要的文件设置一个快捷方式,将其放在经常操作的目录,以简化后续的打开文件操作。
语法:#ln -s 原始路径 快捷方式路径
案例:将ifcfg-eth0文件在root家目录下创建快捷方式。
#ln -s /etc/sysconfig/network-scripts/ifcfg-eth0 /root/wangka.conf
3、网络服务操作
可以通过service指令来对网络的服务进行重启/停止/启动等操作。
语法:#service network start/stop/restart (操作所有的网卡设备)
上述的指令还等价于:#/etc/init.d/network start/stop/restart
补充对于单个网卡的操作:
#ifdown 网卡名 停止某个网卡
#ifup 网卡名 启动某个网卡
注意:上述这些操作不要随意在服务器上运行。
四、ssh
1、简介
ssh(secure shell,安全外壳协议),该协议有2个常用的作用:远程连接、远程文件传输。
协议使用端口号:默认是22。
可以是被修改的,如果需要修改,则需要修改ssh服务的配置文件:#/etc/ssh/ssh_config
端口号可以修改,但是得注意2个事项:
a. 注意范围,端口范围是从0-65535;
b. 不能使用别的服务已经占用的端口(常见的不能使用:20,21,23,25,80,443,3389,3306,11211等等);
服务启动/停止/重启 {服务名中的d全称daemon,守护进程}
#service sshd start/stop/restart
#/etc/init.d/sshd start/stop/restart
Sshd服务一般默认就已经启动,不需要再去启动,可以在修改完其配置的情况下重启。
2、ssh的应用
2.1、远程登录(重点)
终端工具主要帮助运维人员连接远程的服务器,常见终端工具有:Xshell、secureCRT、Putty等。以putty为例:
①获取服务器ip地址,可以通过ifconfig命令进行查看,然后顺手测试ip的连接相通性
#ifconfig
此处获取的ip地址地址还是192.168.0.113
②打开putty,输入相关的信息
③在弹出key确认的时候点击“是”,以后不会再提示
④输入登录信息之前在虚拟机的centos中全部的指令在远程终端中都是可以得到执行的。
扩展:不借助第三方工具实现远程连接。
①打开Windows的cmd黑窗口(前提是Windows必须安装ssh服务,如果没有而需要这个功能,则自行安装openSSH)
②输入“ssh 需要登录的用户名@远程服务器的连接地址”回车
③输入密码
例如:
2.2、sftp文件传输
可视化的界面传输工具:Filezilla
安装好之后可以查看到桌面图标:
②点击“文件”菜单下方的“▽”选择需要连接的服务器,连接好之后的效果
③从本地windows上传文件到linux中方式
支持直接拖拽文件,也可以右键本地需要上传的文件,然后点选“上传”即可
④下载linux文件到本地
支持服务器文件直接拖拽到本地,也可以在右侧窗口选择需要下载的文件,右键,点选“下载”。
五、软件的安装方式
在Linux系统中,软件的管理方式有三种:rpm、yum、编译方式。
1、rpm
优点:对于软件包的操作比较简单,通过简单指令即可操作
缺点:
①安装时需要自行下载软件包
②安装、卸载软件时需要考虑到依赖关系
③软件的自定义性比较差,不适合有特殊需求的场景
语法:
①查询
#rpm -qa 关键词 (查询机器上是否有安装指定的软件包)
选项说明:
-q:query,查询
-a:all,所有
②卸载
#rpm -e 软件包全称 [--nodeps] (卸载软件,包的全称需要通过①去查询)
选项说明:
-e:卸载
--nodeps:忽略依赖关系
③安装
#rpm -ivh 软件包路径 (软件包的下载需要自行解决)
选项说明:
-i:install,安装
-v:显示安装过程
-h:以“#”形式显示安装过程
④更新(了解)
#rpm -Uvh 软件包路径 (软件包的下载需要自行解决)
选项说明:
-U:upgrade,升级
-v:显示安装过程
-h:以“#”形式显示安装过程
案例:查询、卸载、安装firefox浏览器。
查询:
卸载:
安装:
①查找FF31.1.0软件包
/media/CentOS_6.6_Final/Packages
②开始安装
2、yum安装(推荐)
优点:
①快速、傻瓜式的软件管理方式
②在联网情况下,自动从服务器上下载软件包(内、外网服务器均可)
③自动解决软件依赖关系
缺点:
因其底层实为rpm操作,所以也丧失了对软件的自定义功能
Yum常用语法:
①搜索/查询相关
#yum search [all] 关键词 (根据关键词搜索服务器上的包资源)
#yum list [关键词] (列出所有的包,包含已经安装的和可供安装的)
#yum list installed [关键词] (列出当前已经安装的包)
②安装
注意:操作指令(install)与-y选项可以颠倒,下同。
#yum [-y] install 关键词 (安装指定的软件)
③卸载
#yum [-y] remove 关键词 (卸载指定的软件)
④更新
#yum [-y] update (更新整个系统,包含内核)
#yum [-y] update 关键词
案例:使用yum方式快速安装LAMP环境。
建议采用PAM的安装顺序,原因是在安装php的时候,yum会顺带安装apache。
#yum install php
#yum install mysql-server
MySQL的初始化(设置root密码的):
#service mysqld start
#mysql_secure_installation
启动apache
#service httpd start
安装好的apache默认站点在:/var/www/html/位置
Apache配置文件位于:/etc/httpd/conf/httpd.conf
3、编译安装(难点)
优点:
①用户可选择需要的软件功能
②源码方式,有开发能力的用户,可对源码进行自定义
缺点:
①需要自行解决依赖关系
②编译时间较长
③容易出错,一旦出错,需要重新编译安装
编译安装步骤:
①下载源码包
②解压源码包
③进入解压目录
④配置安装
⑤编译
⑥安装
案例:编译安装Nginx。
类似于apache,是一款开源的web服务器软件,其默认用的端口号也是80。
①下载nginx包
下载地址:https://nginx.org/en/download.html
复制下载地址。
https://nginx.org/download/nginx-1.17.4.tar.gz
需要将下载地址在终端中输入,进行下载:
#cd /usr/local/src
#wget https://nginx.org/download/nginx-1.15.5.tar.gz
②解压压缩包
#tar -jxvf 路径(针对.tar.bz2格式)
#tar -zxvf 路径(针对.tar.gz格式) 【当前选这个】
#tar -zxvf nginx-1.15.5.tar.gz
③进入解压后的目录
#cd nginx-1.15.5
④配置安装
配置包含:指定安装的位置、需要的模块功能
指定位置使用:--prefix选项
例如:--prefix=/usr/local/nginx
# ./configure --prefix=/usr/local/nginx
需要安装2个依赖:
#yum install pcre-devel
#yum install zlib-devel
然后继续重新配置,确认没有问题会看到如下效果:
⑤编译&&完成安装
#make && make install
测试NGINX的使用:
#service httpd stop
注意:nginx编译安装之后不支持service指令进行操作,需要找到nginx的执行文件才能启动。
启动:/usr/local/nginx/sbin/nginx
重启:/usr/local/nginx/sbin/nginx -s reload