linux基础教程及常用配置

现在用Linux用户越来越多了,higrid从基础教程到以后问题的解决会汇总出来一点一点讲给大家。网上那么多教程,为什么还要做这个教程呢?主要作为知识总结和简单入门使用。

linux运行级别和启动流程

只有了解linux的启动流程才能更好的去优化和配置Linux,譬如说一台服务器我为什么要保证3,5启动软件即可,是怎么启动的呢?

  1. bios找到mbr主引导区,这个东西才512字节,深入的可以查询一下
  2. 进入grub界面找启动内核
  3. 读取kernel内核文件 /boot/vmlinuz-*
  4. 读取init的镜像文件 /boot/initrd-*
  5. init读取/etc/inittab
  6. 读取启动级别(id:3:initdefault)
  7. 读取/etc/rc.d/rc.sysinit,完成时间、主机名称,还要分区表/etc/fstab
  8. 读取/etc/rc.d/rc脚本,通过脚本转换3级别,然后启动/etc/rc.d/rc3.d/下所有S来头的服务,不启动目录下K开头的服务
  9. 进入登录界面

我们服务器设置的一般控制inittab来控制是图形界面还是终端 sudo init 0 关机

>vim /etc/inittab   #init启动时候加载的启动级别

0 关机
1 单用户
2 不支持nfs(网络文件系统)
3 终端页面
4 未被使用
5 图形界面
6 重启

当你是终端的时候你会发现你登录的是3级别,如果是X11图形界面的时候是5,可以修改id:3:initdefault,来修改启动级别 如何设置开机启动和开机启动的原理 我们如上还是终端启动,我们就进入/etc/rc.d/rc3.d 我们看到S开头和K开头,你可以理解成start和kill s开头的都启动K开头的都是不启动 ubuntu在 /etc/rc3.d/

#centos设置开机启动
>chkconfig mysql on             #设置开机启动
>chkconfig --list|grep mysql    #查看哪些启动级别,发现除了0,1,6关闭其他都开启
>cd /etc/rc.d && ls -l          #rcx.d是启动级别
>cd rc3.d && ll|grep mysql      #显示如下,当然你进入2,4,5也是一样的,这就是说为什么服务器要保证开机3,5启动
lrwxrwxrwx  1 root root 16 3月  14 19:22 S64mysqld -> ../init.d/mysqld

#ubuntu设置开机启动
>sudo apt-get install dialog rcconf     #安装rcconf
>sudo rcconf                            #出现图形界面可以设置

一般我们使用apt-get或者yum安装的,也就是仓库源安装的都可以使用service XXX start,其实这种东西存储在/etc/init.d/文件夹下,你可以自己写脚本,放到/etc/init.d/使用chmod a+x xxx给权限,然后service xxx start启动,譬如我们二进制安装的nginx,然后自己手动写个nginx启动脚本。

常用压缩与解压命令

一般需要会几个常用的压缩包的解压和压缩,解压是因为万一你有二进制包要安装,你带会解压吧!压缩-你要备份一个网站不可能一个文件一个文件备份吧~所以学习压缩,这里边我讲下常用的tar tar.gz常见,.tar.bz2我记得php下载官网好像就有这个格式,为什么还学zip,兄弟,因为windows平台对zip支持很好,万一你要下载网站日志到windows上分析呢~是吧~ higrid建议这几个必会,一般压缩成gz格式,那么压缩就是tar cvfz higridcms.tar.gz hicms/ 解压缩 tar xvfz higridcms.tar.gz

tar压缩包

>tar cf file.tar file
#联想记忆
#c create
#f file 

>tar xf file.tar -C /data
#x extract 记住x
#-C 这是解压到哪里去

#查看压缩包
>tar tf file.tar.gz

tar.gz压缩包

>tar czf file.tar.gz file
#联想记忆
#c create
#z gz
#f file 

>tar zxf file.tar.gz -C /data
#x extract 记住x
#-C 这是解压到哪里去

#查看压缩包
>tar tf file.tar.gz

zip压缩包

>yum install unzip zip -y #安装包
>unzip file.zip           #解压
>unzip -l file.zip        #查看压缩包中的内容
>zip  file.zip file       #压缩

tar.bz2

>tar jxf file.tar.bz2      #解压
>>tar tf file.tar.bz2      #查看压缩包内容
>tar jcf file.tar.bz2 file #压缩

网络配置

1. 修改ip 只能暂时的,重启就失效了

ifconfig eth0 192.168.1.1
ifconfig eth0 192.168.0.2 netmask 255.255.255.0

#修改dns
route add default gw 192.168.1.1

2. 修改网络配置文件

现在用的最多的应该就是centos和ubuntu这两个吧,我就拿这两个做讲解,这个拖拖的你带会配置万一让你修改dhcp到static,我擦 修改错了,这个除了机房能控制,你购买的代理商都很难再弄上了~~~ #centos配置

cd /etc/sysconfig/network-scripts/

#centos配置

>vim /etc/sysconfig/netword-scripts/ifcfg-eth1 #针对自己的网卡

DEVICE=eth1                                 #网卡名称
TYPE=Ethernet                               #网卡类型
IPADDR=192.168.1.1                          #IP地址
NETMASK=255.255.255.0                       #子网掩码
GATEWAY=192.168.1.1                         #网卡
DNS1=202.102.224.68                         #DNS
DNS2=8.8.8.8
ONBOOT=yes                                  #主机启动加载 
NM_CONTROLLED=yes                           #实施生效,修改后不需要重启网卡立即生效
BOOTPROTO=static                            #静态ip

>service network restart                    #重启网卡

>vim  vim /etc/resolv.conf                  #修改DNS

nameserver 202.102.224.68
nameserver 8.8.8.8

#ubuntu 配置
>vim /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.108
netmask 255.255.255.0
gateway 192.168.1.1

#修改dns
vim /etc/resolv.conf
nameserver 8.8.8.8

#重启生效
/etc/init.d/networking restart

防火墙设置

iptables

#开启防火墙
>service iptables start

#开机启动
>chkconfig iptables on           

#保存策略文件在 /etc/sysconfig/iptables -- centos
iptabels [-t 表名] 
>iptables -t nat -L             #查看nat表
>iptables -L                    #查看防火墙,默认是filter
>iptables -F                    #删除防火墙 -X清除自定义链接 -Z清除所有链统计
>service iptables save      #保存防火墙策略
>service iptables restart   #重启
>iptables -I INPUT -s 0.0.0.0 -j ACCEPT
iptables 
    -A 追加规则链            再最后加入此规则
    -I INPUT            插入INPUT
    -D 链                删除链
    -P 如果策略值缺省就强制使用此策略链
    -i 输入网卡
    -o 输出网卡
    -p 协议
    -s 源 ip
    -d 目标ip
    -j 动作   

iptables -A INPUT -i eth0 -p all -s 源ip --sport 源端口 -d 目标ip --dport 目标端口 -j 动作

#常用模块状态
>iptables -I INPUT 1 -m state --state ESTABLISHED,RELATED -j ACCEPT

#允许192.168.1.109登录ssh端口 
>iptables -A INPUT -i eth0 -p tcp -s 192.168.1.109 --dport 22 -j ACCEPT

#禁止这个IP访问我的80端口
>iptables -A INPUT -i eth0 -p all -s 192.168.1.108 --dport 80 -j ACCEPT
>iptables -D INPUT 1                        #删除第一条规则
>iptables -A INPUT -m mac --mac-source 00:00:00:00:00  -j DROP #禁止mac地址访问我
>iptables -t filter -P INPUT DROP       #默认规则清除所有设置后的所有端口,注意哈,当初我学习的时候,第一个设置的,结果我自己上不去了(最后)

一般服务器简单设置实例

iptables -F
#内部网络使用
iptables -A INPUT -i lo -j ACCEPT           
#状态连接               
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许80端口
iptables -A INPUT -p tcp --dport  80 -j ACCEPT 
#允许ssh
iptables -A INPUT -p tcp --dport  22 -s x.x.x.x -j ACCEPT
#允许mysql
iptables -A INPUT -p tcp --dport  3306 -j ACCEPT
#允许ftp
iptables -A INPUT -p tcp --dport  21 -j ACCEPT
#允许邮件服务器
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
#关闭掉其他所有
iptables -P INPUT  DROP
#保存防火墙规则
service iptables save
#重启生效
service iptables restart
selinux
>sestatus                 #查看selinux的状态
>vim /etc/selinux/config
SELINUX=disabled          #禁用selinux
>reboot                   #重启服务器才能生效

软件安装yum

光盘安装

这个如果是服务器的话,估计很少用到,也不可能谁没事就挂载个光盘来吧!当然你没事你可以做测试玩~

首先,你要挂载关盘
mount /dev/cdrom /media
修改源
#进入源仓库配置文件
cd /etc/yum.repos.d/

#移除根仓库源 不然会首先找这个
mv CentOS-Base.repo CentOS-Base.repo.bak

#修改配置信息

[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/
#关闭签名
gpgcheck=0              
#开启原件源仓库
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
安装软件
>rpm -ivh xxx.rpm  #软件的时候,可能依赖包没安装,最可能的是你安装的依赖会很多,所以我们用yum
>yum list          #查看软件列表
>yum install mysql #安装mysql 如果你感觉输入y比较烦,就yum install mysql -y
>rpm -qa|grep mysql#查看安装mysql的一些包和依赖包
>yum remove  mysql #卸载,可能卸载掉一些依赖库,但是这些依赖库可能对你还很有用
>rpm -e xxxx       #单个卸载 --nodeps 是强制卸载
修改镜像源

这个我们经常使用,因为我的服务器一般都在国内,一般安装好的都是centos的原有镜像,速度来说肯定没有国内快,所以我就换成国内的镜像源,一般我用的是163的,因为换太简单了,当然你也可以自己手动写,没有什么技术含量

>cd /etc/yum.repos.d/                                       #进入
>mv CentOS-Base.repo     CentOS-Base.repo.bak                   #备份
>wget http://mirrors.163.com/.help/CentOS6-Base-163.repo        #下载
>mv CentOS6-Base-163.repo  CentOS-Base.repo                 
>yum makecache                                              #清楚本地缓存


#按照这种格式就可以填写你自己的仓库源 其中$releasever是版本,我的环境是6,$basearch我的是i386
[base]
name=CentOS-$releasever - Base - 163.com                            #镜像源名称
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/ #镜像源地址
gpgcheck=1                                                      #gbk签名
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6     #gpk签名地址

#released updates 
[updates]
name=CentOS-$releasever - Updates - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6     

>yum makecache
>yum list               

查看服务器进程

>ps -ef |grep httpd   #查看进程
>pstrese | grep httpd #从进程树查看

>netstat -tunpl | grep 80 
-t  tcp
-u  udp 

>uptime #显示登录信息和平均负载
>who    #显示正在登录的用户
关闭进程
>pkill mysql
>kill -9 pid

修改主机名称

临时修改

hostname higrid

修改配置文件修改

vim /etc/sysconfig/network  

硬盘分区和挂载

这个很重要的了,如果你用云主机或者其它的服务器的时候肯定都待有分区和挂载,因为我发现大部分都不会给你挂载的,譬如阿里云、金山云、电信云等

1.分区表配置文件

>vim /etc/fstab         #分区配置文件表
/dev/cdrom  /media iso9660  defaults 0 0 

mount -a #测试光驱挂载是否成功

fdisk /dev/sdb
p #查看当前分区表
l #查看linux支持的文件系统
n #增加新分区
w #保存分区

>fdisk -l                               #查看文件分区,找到为分区的
>fdisk /dev/sdb                         #我们需要的分区/dev/sdb
>Command(m for help):m                  #寻求帮助

>Command action                         #增加一个分区,然后选择 e扩展分区 p主分区
   e   extended
   p   primary partition (1-4)
>p                                      #分为主分区
>Partition number (1-4): 1              #主分区number
>First cylinder (1-1044, default 1): 1  #设置柱面
>Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): +3076M #设置硬盘大小
>p                                      #查看系统分区
>t                                      #修改系统类型
>l                                      #显示系统类型
>w                                      #保存系统分区
>mkfs.ext4  /dev/sdb1                   #格式化硬盘
>mkdir /data && mount /dev/sdb1 /data   #挂载硬盘
>df -h                                  #查看硬盘挂载状况
>vim /etc/fstab                         #设置开机挂载硬盘,添加如下
/dev/sdb1  /data ext4   defaults  1 2   #这个和如下一一对应
fs_spec         fs_file     fs_type     fs_options fs_dump   fs_pass    
挂载的文件系统 挂载点位置   文件系统类型  参数选项     是否dump   无需启动扫描0 跟分区启动扫描1 其它2即可
>mount -a                               #测试一挂载,千万要测试,我记得我做的最低级错误就是写错了,结果主机重启了,你懂得起不来了,我擦 损失大了
>unmout /dev/sdb1                       #卸载硬盘分区

用户权限管理

  1. ls -l
  2. chmod a+x xxx.sh
  3. sudo /usr/sbin/useradd higrid

文件权限

文件权限三种 r-w-x 可读,可写,可执行 ,针对与文件和目录是不同的

上边我们切割一下

d —文件类型 目录

rwx|rwx|r-xm,每三个分成一组

  • 第一组 是文件所有者,这里是root有可读可写可执行(u)
  • 第二组 是root组的其它用户有可读可写可执行 (g)
  • 第三组 是other用户,就是既不属于文件所有者用户也不属于用户所有组,可读可执行 (o) r w x —> 4 2 1 对应这4个值 ,你可以想成2的0次方,1次方,2次方

    对于目录来说 x 可执行权限意思是可以切换进入到这个目录 也就是cd /filedir 对于目录来说 w 可写就是创建文件的权限或者创建文件夹的权限 mkdir test 对于目录来说 r 可读就是列出目录的权限 譬如 ls -l

    对于文件来说 x 可执行,譬如.sh脚本有没有执行的权利 对于文件来说 w 可写,就是写入,譬如vi demo.txt必须有w权限 对于文件来说 r 可读权限,就是more cat less tail等能不能读取数据

chmod 给文件或者目录权限

>chmod 0777 test.txt              #test.txt的权限-rwxrwxrwx 
>chmod u+rwx,g+rwx,o+rwx test.txt #同上的权限 +给权限 -是删除权限
>chmod a+x                        #所有用户追加x权限
>chmod -R 777 dir                 #递归添加dir目录所有权限

chown 分配用户和组

>chown www:www /var/www/html     #给html目录 www用户和www用户组权限

id 查看用户信息

>id xiaowei 
uid=501(xiaowei) gid=501(xiaowei) groups=501(xiaowei)

>gpasswd -a xiaowei root #将xiaowei用户添加到root
>gpasswd -d xiaowei root #从root组中删除

>usermod -L xiaowei      #锁定xiaowei用户 
>usermod -U xiaowei      #解锁xiaowei用户

sudo 权限设置

>visudo 
>xiaowei localhost=/usr/sbin/useradd #添加到文件中,给xiaowei有useradd权限
>sudo useradd xiaowei1               #可以添加用户了

添加删除用户

>groupadd   xiaowei                 #添加用户组
>useradd -g xiaowei xiaowei         #添加用户并且添加到用户组
>userdel -r xiaowei                 #删除用户

ACL权限分配

一个公司里不可能让所有人都有root权限,所以在一些文件和文件夹处理,以及权限处理的时候就很棘手,这个时候我们就需要ACL给用户进行权限分配

1.加权限

>setfacl -m u:username:rwx filedir #设置ACL

2.查看权限

>getfacl filedir                   #获取ACL

# file: filedir
# owner: root
# group: root
user::rwx
user:username:rwx
group::r-x
mask::rwx
other::r-x

3.删除权限

>setfacl -b u:username filedir     #删除u这个用户的acl权限 
>setfacl -b filedir                #删除filedir的ACL所有权限

4.分配权限

nginx有时候就是因为权限的问题造成了nginx对cpu的负载过高,我们可以直接使用ACL对其分配权限

#nginx执行的用户是www,我们要www有nginx文件夹的所有权限
#nginx的安装目录是/usr/local/nginx
>setfacl -m u:www:rwx -R /usr/local/nginx #-R 文件递归

任务计划

我们有时候定时备份,或者说定时执行一些脚本这是我们必须会的

>crontab -e                   #编写定时计划
2  *  *  *  *  /sbin/init 0   #这里是每2分钟关机一次,当然你已经关机了
#分 时 日 月 周  脚本
>crontab -r                   #删除定时任务
>crontab -l                   #列出定时任务

随机文章 Random Posts