一、执行命令及一些小技巧
命令行格式:命令 -选项 参数
例:以长模式显示:ls -l /home/
以长模式显示所有信息:ls -al /home/
显示别名:alias
计算器:bc 默认保留整数,如果想保留小数位数,输入bc回车后
再输入scale=4保留小数点后4位有效数字
显示哪个用户登录终端:whoami
cat /etc//shells 查看当前系统下有哪些shell
vim /etc/passwd 用户名后的shell为默认shell
sudo dpkg-reconfigure bash修改默认shell
终端命令行常用操作
按ESC松开或不松开后,按一点.就可以调出上一个命令行最后一部份
Ctrl+a 将光标移到命令行开头
Ctrl+e 将光标移到命令行结尾
Ctrl+k 从当前光标位置删到命令行结尾
Ctrl+u 从当前光标位置删到命令行开头
Ctrl+c 中断当前进程任务
Ctrl+z 暂停当前进程任务(可用fg调出进程)
Ctrl+s 停止键盘响应(放入缓存)
Ctrl+q 释放停止时键盘的输入
Ctrl+l 清屏
Ctrl+d 终止当前输入(退出终端)
Ctrl+Shift+t 打开多个终端 Ctrl+Pageup/Pagedown切换多个终端
touch aa 创建文件aa
^aa^bb重新执行上面的命令,将aa换成bb
history 查看历史记录,使用历史记录时,记录过多,可以按Ctrl+r搜索
su - -c'whoami' 切换用户并执行whoami命令
jobs 查看后台有哪些程序
bg 1 激活后台第一个程序
fg 1 将后台第一个程序拿到前台
kill -9 %1 杀死进程第一个程序
nohup 程序名 打开程序不依赖终端
sleep 3 休眠3秒钟
hwclock -s 根据硬件时间设置系统时间
二、在字符界面如何使用帮助
1、whatis
例:whatis ifconfig; whatis passwd
如果输入whatis回车后报错,输入makewhatis重做whatis库
2、help
例:ls --help
3、man
例:man -k clock查找所有包含clock的命令
三、网络设置
1、命令行配置IP
查看IP信息: ifconfig
查看第一张网卡的信息:ifconfig eth0
配置网卡(临时生效)
ifconfig eth0 192.168.0.2 netmask 255.255.255.0 up
暂停网卡:ifconfig eth0 down
激活网卡:ifconfig eth0 up
关闭网卡:ifdown eth0
启用网卡ifup eth0
查看网关:route 为防止反向解析用:route -n
设置网关:route add default gw 192.168.0.1 dev eth0
删除网关route delete default gw 192.168.0.1 dev eth0
查看DNS:nslookup回车后再输入server
设置DNS :nslookup回车后再输入server 192.168.0.1
查看主机名:hostname
修改主机名:hostname www.rhcc.com
修改主机名vi /etc/sysconfig/network
hostname=www.rhcc.com
解析主机名vim /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.1.61 blog.infernor.net blog
这样,我就可以通过blog或者blog.infernor.net来访问本机
2、图形化界面配置IP
1)、使用NetworkManager(直接手动配置网卡)
必须开启服务:service NetworkManager start
2)、使用setup命令打开图形化界面
3、使用配置文件ifcfg-eth0配置IP
vim/gedit /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=dhcp/static/none是否启用协议
NM_CONTROLLED=yes是否启用Networkmanager进行管理
ONBOOT=yes 系统启动时,是否启动网卡
IPADDRES=192.168.0.2
NETMASK=255.255.255
可加入网关与服务器地址
DNS1=192.168.0.1
DNS2=192.168.1.1
DNS3=192.168.2.1
GATEWAY=192.168.0.1
DNS可在全局DNS设置文件/etc/resolv.conf中配置
nameserver 192.168.0.1
nameserver 192.168.1.1
nameserver 192.168.2.1
search rhce.cc 搜索路径
克隆网卡
mv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network
-scripts/ifcfg-eth1重建eth1,修改ifcfg-eth1中的DEVICE="eth1"
修改/etc/udev/rules.d/70-persistent-net.rules中NAME="eth1"
修改后运行 udevadm trigger
重启网卡 service network restart
四、RHEL的目录结构及常用命令
bin目录:存放二进制可执行命令
whereis ls 与which ls 用于查看命令ls的位置
boot目录:存放系统启动文件,包括内核等
dev目录:存放硬件设备,通过dev访问硬件设备
etc目录:存放系统配置文件
home目录:用户家目录
lib与lib64目录:存放库文件、模块文件
media目录:默认挂载点
mnt目录:挂载点,默认为空
proc目录:内核信息(一般内核调优,调整里面的值)
sbin目录:存放和系统相关的命令
sys目录:存放一些设备
tmp目录:存放临时文件
usr目录:存放一些安装包
var目录:存放数据库、日志文件,最好单独划分逻辑分区
路径:分绝对路径 与 相对路径
绝对路径:从根"/"开始算起,如:/etc/sysconfig/
相对路径:如点"."当前路径; 点点".."上一层; ../..上一层的上一层
直接输入cd回车:回到自己的家目录和cd ~一样,~指用户家目录
例:cd ~laduan 回到laduan的家目录
cd - 回到上一次使用的目录
ls -ld /boot/ 查看boot自身的属性
ls -R /boot/ 递归,层层显示
考贝命令cp
cp /path1/xx /path2/yy 将xx考贝到yy目录下,若yy不存在,将 xx重命名为yy
cp /path1/xx /path2/yy /opt 考贝多个文件到opt下
cp不能直接考贝目录,要考贝目录使用:cp -rf /etc/ /opt/
或者cp -a /etc/ /opt/
mv剪切
mv a.sh b.sh重命名
touch aa 与mkdir aa不能在同一目录下创建名称相同的aa文件与aa目录
rm删除
rm -rf /etc强制删除
rm -rf /etc/*强制删除etc下所有文件
mkdir创建目录
mkdir /rc/xx -p
rmdir /rc 删除目录,但不能删除非空目录
touch 创建文本文件
touch file 如果文件存在,则将更新文件时间
touch -t 201212211330 file 更新时间
file /bin/ls 查看文件类型
五、使用命令配置权限的设置
(又称DAC:主动访问控制)
1、UGO的权限
ls -l services
- rw- r-- r-- . 1 root root
文件类型 U的权限 g的权限 o的权限 硬链接数 用户名 用户组名
开头"-"表示普通文件,d表示目录,l表示软链接,b设备文件,c表示设备文件字符
touch aa
ln -s aa bb 为aa创建软链接bb
修改权限chmod
chmod a+rwx services== chmod ugo+rwx services
chmod u+r,g+w,o+x services
chmod a=--- services 去掉所有权限
chmod -x services 对所有用户减去执行权限
权限表示:r→4, w→2, x→1
创建目录和文件默认权限为755和644,原本为777与666,通过umask权限(022)过滤后,变为755和644;若将umask 值修改为011,刚默认权限将过滤为766和666,并非相减
在命令行写多个命令时用分号隔开
特殊权限:s位与t位
s位权限一般位于所有者U和所有组G,t位权限位于其他用户O
当s位位于所有者U上时(一般用于命令),当别人执行这个命令时将具所有者的权限
例如:/usr/bin/passwd 权限为-rwSr-xr-x 1 root root
root能修改,其他用户也能修改
一个命令嵌套在另一个命令里面写法:echo aa `hostname` bb 反引号
或 echo aa $(hostname) bb
当s位位于所有组G上时(一般用于目录),在该目录里,无论谁创建的目录或文件,都会继承该目录的所有组
t位一般用在目录的O(other位置)位上,该目录除了所有者和root外,其他用户不能删除这个目录
chmod 0666 aa
chmod 4666/2666/1666 aa
chmod 7666 aa
4代表所有者U位置上有个S位.2代表所有组G位置上有个S位,1代表other位置上有个t位
chmod -R 修改目录内所有文件和目录的权限,-R递归
2、ACL访问控制列表
查看某个文件是否具有ACL权限
getfacl file
ACL语法:
对用户:getfacl -m u:用户名:权限(rwx) file
取消: getfacl -x u:用户名:权限(rwx) file
对组:getfacl -m g:用户名:权限(rwx) file
取消: getfacl -x g:用户名:权限(rwx) file
对other:getfacl -m o:用户名:权限(rwx) file
取消: getfacl -x o:用户名:权限(rwx) file
默认权限:getfacl -m d:u:用户名:权限(rwx) file
取消: getfacl -x d:u:用户名:权限(rwx) file
对于原用户有ACL默认权限的目录,任何用户在应该目录下创建的文件,对于原用户都具有acl权限,取消默认权限,对已存在的文件无影响
对分区挂载,要给分区指定ACL,这样才能设置acl权限
如:对分区挂载/zz: mount -o remount,acl /zz
3、隐含的权限
chattr +a file1 只能添加不能删除
chattr +c file1 允许这个文件能被内核自动压缩/解压
chattr +d file1 在进行文件备份时,dump程序将忽略这个文件
chattr -a file1去掉a权限
chattr +i file1 设置成不可变文件,不能被删除、修改,重命令或链接
chattr +s file1 允许一个文件被安全地删除
chattr +S file 一旦应该程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘
chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件
lsattr -d file 查看特殊权限
ehco bb >>text 将bb写入文件text中
chown root file 改变文件所有者
chown root:root file 改变所有者和所有组,与chown root.root file同等
chgrp root file 单独改变所有组,改变目录加上 -R递归
六、RHEL下远程连接、及压缩和备份等
1、远程shell访问
ssh远程访问:ssh 192.168.30.251默认使用当前用户(本地),两边用 户同时存在时用
指定用户访问:ssh -l laduan 192.168.30.251
使用邮件方式访问:ssh laduan@192.168.30.251 -X
-X指x windows协议
远程执行命令:ssh laduan@192.168.30.251 'hostname' 用单引号
远程连接工具:xshell, putty, secureCRT
使用xshell远程连接:ssh root@192.168.30.251
netstart -antp 查看TCP端口
vi /etc/ssh/sshd-config 可修改ssh端口
locale查看当前系统编码
使用xshell远程时,要修改xshell编码,不然会出现乱码
在xshell窗口按Ctrl+alt+f打开xftp进行文件传输
linux间传输文件用 scp, rsync
①scp /path1/xx laduan@192.168.30.251:/path2/yy
若考贝目录可以加上-r,如下:
scp -r /path1/xx laduan@192.168.30.251:~考贝到laduan家目录
②rsync使用命令行或配置成服务(详见rsync服务配置)
命令行:rsync -avz /path1/xx laduan@192.168.30.251:/path2/
rsync -avz /path1/xx laduan@192.168.30.251:~tom/
a表示归档,v表示过程,z压缩
在xshell时,在linux安装lrzsz,可直接将文件拖到命令窗口,文件将会存到当前目录下
常用文件传输工具:filezilla,winscp
加密方法:①对称加密,②非对称加密,③哈希函数
非对称加密(加密数据,数字签名)
使用非对称加密访问服务器
先生成密钥对:ssh-keygen -N "" -N使用空密码(在roo用户下)
id-rsa私钥(解密) id-rsa.pub公钥(加密)
考贝公钥到服务器:
ssh-copy-id -i .ssh/id-rsa.pub root@192.168.30.251
这样可以直接访问服务器,不用再输入密码
ssh -v laduan@192.168.30.251 -v显示连接过程
利用ssh通过本地2000端口访问服务器80端口
ssh -Nf -L 2000:127.0.0.1:80 laduan@192.168.30.251
2、压缩和备份
文件打包(归档):tar cvf aa.tar /etc/service /home/*
c创建,v过程,f指令归档后的名字
解档:tar xvf aa.tar
向归档文件追加文件:tar uvf aa.tar grup.conf
归档后删除原文件:tav cvf aa.tar * --remove-files
创建一个100M的文件
dd if=/dev/zero of=file1 bs=1M count=100
dd备份工具,if输入,/dev/zero没有大小的文件,of输出文件file1,bs指定每个zero的大小,count最大值
常用压缩工具 gzip,bzip2,zip
压缩: gzip file1 解压:gzip -d file1.gz
bzip2 file1 bzip2 -d file1.bz2
zip file1.zip file1 uzip file1.zip
`gzip -9 file1 最大程序压缩
rar a file1.rar test_file 压缩一个叫做file1.rar的包
rar a file1.rar file1 file2 dir1 同时压缩几个文件和目录
rar x file1.rar 或unrar x file1.rar解压
压缩并归档
tar zcvf file.tar.gz file 使用gzip
tar jcvf file.tar.bz2 file --remove-files 使用bzip2压缩归档
tar -tf file.rar 显示包中的内容
zip -r file.zip file1 file2 dir1将几个文件和目录同时压缩成一个zip包
解压包
tar xvf file.rar
tar xvfz file.rar.gz 解压一个giz格式的包
tar xvfj file.rar.bz2 解压一个bzip2格式的包
tar xvf file.rar -C /tmp将压缩包解压到tmp目录下
七、服务启动以及远程桌面连接
1、服务启动
setup 或serviceconf启动图形化界面管理系统服务
cd /etc/ssh中sshd-config与ssh-config配置
sshd-config作为服务器配置文件,修改后重启服务
service sshd restart
vi /etc/ssh/sshd-config
permintRootLogin yes是否允许使用root远程登录
passwordAuthentication是否允许密码远程登录
ssh-config作为客户端配置文件
vi /etc/ssh/ssh-config
StrictHostkeychecking no连接时是否写know目录
2、使用VNC远程桌面
yum list \*vnc\*查看vnc安装包
yum install \*vnc\*安装vnc
配置vnc访问密码
输入vncserver回车后,提示输入密码,密码保存在家目录的vnc/passwd
vncserver -list 查看开启桌面。
在windows下,用vnc连接,输入192.168.30.251 :1 空格:1连接第一个桌面。
在linux下安装tiggerVNC
yum install tigger\* -y
使用tiggervnc远程连接
打开连接工具输入192.168.30.251 :1
vncserver :2开户第二个桌面
vncserver -kill :1杀死一个桌面
linux远程连接windows工具rdesktop
yum install rdesktop安装远程工具
远程连接:rdesktop 192.168.0.1 -u administrator
rdesktop -g 90% 192.168.0.1 -u administrator远程桌面90%显示
八、磁盘管理
1、常规磁盘管理
查看磁盘状态(root身份)
fdisk -l 具体某块磁盘用:fdisk -l /dev/sda
查看分区的卷标:tune2fs -l /dev/sda1或e2label /dev/sda1
修改分区卷标名:tune2fs -L xx /dev/sda1或e2label /dev/sda1 yy
⑴、对磁盘分区
输入fdisk /dev/sda 回车后,再输入m查看帮助:
d删除一个分区,l列出分区类型、可查看分区类型ID,n添加一个新的分区,p显示分区列表,q退出不保存,w保存退出,t改变一个分区类型ID
输入n创建分区,然后选择分区类型p(主分区),再输入分区号,选择分区开始位置,再输入结束位置(或可以输入+500M),分区完成后输入w保存退出
对系统所在磁盘sda进行修改,要让其生效需输入partx -a /dev/sda进行强制刷新,对其他磁盘分区进行刷新,使用 partprobe /dev/sdb
⑵、格式化分区
mkfs -t ext4 -b 4096 /dev/sda3或mkfs.ext4 -b 4096 /dev/sda3
(-b 4096指定块大小blocks)
⑶、挂载
创建挂载目录:mkdir /kvm
挂载:mount /dev/sda3 /kvm (临时挂载)
永久挂载:vi /etc/fstab
/dev/sda3 /kvm ext4 defaults 0 0
⑷交换分区管理
查看交换分区:swapon -s
①使用磁盘创建交换分区
mkswap /dev/sda3
让其生效:swapon /dev/sda3
永久生效:vi /etc/fstab
/dev/sda3 swap swap defaults 0 0
关闭 swapoff /dev/sda3
②使用文件创建交换分区
dd if=/dev/zero of=file bs=1M count=100
mkswap file
swapon file
swapon -s
⑸扩展分区
扩展分区不能直接使用,只有在扩展分区划分逻辑卷后才能使用,每个分区类型都有一个id,我们做逻辑卷,创建分区后,要将分区类型修改成逻辑卷的id:8e
输入fdisk /dev/sda回车,再输入t,再输入分区类型id:8e(可通过输入l查询分区类型id),然后输入w保存退出,输入partx -a /dev/sda刷新
(fdisk /dev/sda只能作用于小于2T的硬盘,大于2T的用parted)
格式分区:mkfs.ext4 -b 4096 /dev/sda3 (-b 4096指定块大小blocks)
挂载:mount /dev/sda3 /xx
永久挂载:vi /etc/fstab
/dev/sda3 /xx ext4 defaults 0 0
mount -a 刷新,重新挂载
blkid 获取每个分区文件系统的id(UUID)
⑹加密分区
加密的分区不能直接使用,先加密码再存放数据,加密过程也是格式化过程
cryptsetup luksFormat /dev/sda3 加密
回车后,大定YES确认,输入密码,加密后不能直接使用,不能直接挂载,先做一个映射文件(解密分区)
映射文件存放路径,通过ls /dev/mapper 查看映射文件存不存在
做映射
cryptsetup luksOpen /dev/sda3 rhce(临时生效,名字可改),输入密码
先格式化映射
mkfs.ext4 -b 4096 /dev/mapper/rhce
再挂载 mount /dev/mapper/rhce /xx
用完后卸载unmount /xx
关闭映射 cryptsetup luksClose rhce
开机映射
vi /etc/crypttab
rhce /dev/sda3 /root/key(授权文件)
在root目录下生存一个4k的文件
dd if=/dev/zero of=key bs=1k count=4
授权:cryptsetup luksAddKey /dev/sda3 key
第一次使用映射文件的时候,需要格式化才能用,不是对分区本身格式化,是对映射文件格式化
mkfs.ext4 /dev/mapper/rhce
挂载:mount /dev/mapper/rhce /xx
不用时 unmount /xx
关闭映射 cryptsetup luksClose rhce
下次使用时映射 cryptsetup luksOpen /dev/sda3 rhce(再次使用不用格式化)
挂载:mount /dev/mapper/rhce /xx
查看使用状态:cryptsetup status rhce
开机自动挂载vim /etc/fatab
/dev/mapper/rhce /xx ext4 defaults 0 0
2、逻辑分区管理
⑴、创建逻辑卷
①先创建分区(sdb1,sdb2,sdb3)
fdisk /dev/sdb
②将创建的普通分区的分区类型id修改为逻辑分区id:8e,w保存退出,使用partprobe /dev/sdb刷新
查看物理卷pvscan或pvs
③初始化成物理卷
pvcreate /dev/sdb{1,2,3}
将物理卷转化成普通卷
pvremove /dev/sdb(1,2,3)
查看卷组:vgscan或vgs
④创建卷组(组成卷组的最小单PE,默认大小4M)
vgcreate vg0 /dev/sdb{1,2}
查看卷组具体信息:vgdisplay vg0
扩展卷组:vgextend vg0 /dev/sdb3
从卷组中移出物理卷:vgreduce vg0 /dev/sdb3
更改卷组名:vgrename vg0 mm
删除卷组: vgremove vg0
创建卷组并设置最小单位
vgcreate -s 8 vg0 /dev/sdb{1,2}
⑤创建逻辑卷(200M必须为PE 的整数倍,否则会自动修改为PE的整数倍)
lvcreate -n lv0 -L 200M vg0 或lvcreate -n lv0 -l 25 vg0
使用剩余空间创建:lvcreate -n lv1 -l 100%free vg0
删除逻辑卷:lvremove /dev/vg0/lv0 或lvremove /dev/vg0/lv0 -f 强制
使用前,先格式化:mkfs.ext4 /dev/vg0/lv0
创建挂载点:mkdir /yy
挂载逻辑卷:mount /dev/vg0/lv0 /yy
⑥逻辑卷扩展:lvextend -L +160M /dev/vg0/lv0
增加后刷新文件系统(可以不用重新挂载):resize2fs /dev/vg0/lv0
⑦宿小逻辑卷(最好使用图形化界面system-config-lvm)
1)、先卸载:unmount /yy
2)、fsck检查分区:fsck -f /dev/vg0/lv0
3)、减少文件系统:resize2fs /dev/vg0/lv0 80M(减小到80M)
4)、减少逻辑卷
vgreduce -L -280M /dev/vg0/lv0 (280 M为文件系统减去的大小,挂载可以查看文件系统的总大小)
5)、再挂载(在有LV和pv的情况下不能重复使用物理分区,并且不能格式化物理分区)
⑵给逻辑卷做快照
lvcreate -n lvspt -L 8M -s /dev/vg0/lv0(8M仅仅是你能改变(增加)的大小,删除快照对原文件无影响)
创建挂载点:mkdir /zz
做好快照的LV不需要格式化(访问lvspt时,实际是访问lv0)
mount /dev/vg0/lvspt /zz
可以取消挂载 unmount /zz
删除快照:lvremove -f /dev/vg0/lvspt
3、RAID(软RAID)
RAID0 几块硬盘同时写入数据(条带stripe,磁盘使用100%,只要有一个硬盘坏,数据全丢失,至少两块盘)
RAID1镜像盘(未提高写与速度,几块硬盘就有几份数据,至少两块盘)
RAID5 至少需要三块磁盘(条带,)
做RAID5
将分区的类型改为id=fd 即raid
查看是否有raid: cat /proc/mdstat
创建RAID5
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb{1,2,3,5}
-C创建 -a组合(是否组合) -l 组合级别 -n几块磁盘 –x备份 1个做备份
查看:mdadm -D /dev/md0
删除:mdadm /dev/md0 -f /dev/sdb1(模拟磁盘坏了一个)
取消挂载unmount /yy
再删除:mdadm /dev/md0 -r /dev/sdb1
换一个再添加硬盘:mdadm /dev/md0 -a /dev/sdb1
再挂载:mount /dev/md0 /yy
修改权限:mount –o rw, remount /yy
关掉:mdadm -s /dev/md0
激活:mdadm -As
查看哪个用户在用:fuser -mv /yy
九、文件挂载
1、镜像挂载
mount -o loop rhel.iso /mnt
永久挂载vi /etc/fstab
光盘镜像/dev/cdrom /iso iso9660 defaults 0 0
镜像文件/root/rhel.iso /iso iso9660 defaults,loop 0 0
2、linux目录共享
通过NFS共享
先清空防火墙:iptables -F
修改共享:vim /etc/exports
加入:/xx *(ro,sysnc) ro只读,sysnc同步;
/xx 192.168.3*(ro,sysnc) 共享给哪个网段
重启nfs:service nfs restart
showmount -e 192.168.1.2 在客户端查看共享了什么文件
在另一客户端挂载
创建挂载目录:mkdir /nfs
mount 192.168.1.2:/xx /nfs
永久挂载
vim /etc/fstab
192.168.1.2:/xx /nfs nfs defaults 0 0
3、访问window共享
1)、使用smbclient访问
查看共享哪些目录
smbclient -L //192.168.1.2 -U administrator
访问共享:smbclient //192.168.1.2/影视 -U administrator%222
2)、挂载window共享
创建挂载点:mkdir /smb
mount -t cifs -o user=administrator%222 //192.168.1.2/影视 /smb
或者
mount -o user=administrator%222 //192.168.1.2/影视 /smb
3)、永久生效
vim /etc/fstab(挂载时必须有cifs驱动,查看cifs驱动yum list \*cifs\*,卸载yum remove cifs-u*)
//192.168.1.2/影视 /smb cifs defaults, user=administrator%222 0 0
挂载所有配置文件fstab下的配置
mount -a
4、安装LINUX文件共享
- sudo yum install samba samba-client
- vim /etc/samba/smb.conf
- 找到security这行并将#注释符号去掉改成
- security = share #共享模式
- 添加如下代码:
- [share]
- comment = share
- path = /home/test #设置共享文件夹目录
- browseable = yes
- guest ok = yes
- writable = yes
- service smb start
- service smbd start (ubuntu)
5、访问时自动挂载
1、将光盘或共享文件挂载到/zz/cdrom1
编辑vim /etc/auto.master
加入行:/zz /etc/auto.aa 后辍可自定(挂载后zz下面东西自动隐藏)
若加入行:/- /etc/auto.aa(不隐藏zz下的文件)
创建auto.aa 文件:cp /etc/auto.misc /etc/auto.aa
①若auto.master中写入的是/zz /etc/auto.aa
修改vim /etc/auto.aa
加入行:cdrom1 -fstype=iso9660 :/dev/cdrom (cdrom1挂载点可不指定路径)
/zz/* -fstype=nfs,rw 192.168.1.2:/& (多个文件挂载,*与&对应)
挂载后zz下面的东西都会自动隐藏
配置好后,重启服务:service autofs restart
②若auto.master中写入的是/- /etc/auto.aa
修改vim /etc/auto.aa
加入行:/zz/cdrom1 -fstype=iso9660 :/dev/cdrom (/zz/cdrom1挂载点须指定路径)
/zz/* -fstype=nfs,rw 192.168.1.2:/& (多个文件挂载,*与&对应)
挂载后zz下面的东西都不会自动隐藏
配置好后,重启服务:service autofs restart
十、系统的启动顺序
1、系统启动过程
系统启动时,BIOS先自检(检查硬件,硬盘是否有问题),自检没问题激活MBR→GRUB运行→生成微系统→读取主要配置文件(grup.conf)→grup查找、并将硬盘中内核加载到内存
硬盘的MBR:512B,其中64B用于记录分区表,446B用于grub系统引导,2B用于纠错
GRUB配置:vim /boot/grub/grub.conf
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-[generic-]version.img (boot不单独分区时,表示为/boot/ini trd-[generic-]version.img)
#boot=/dev/sda
default=0 //默认第一个内核
timeout=5 超时时间5秒
splashimage=(hd0,0)/grub/splash.xpm.gz //引导界面背景
hiddenmenu 隐藏菜单(隐藏启动时系统选择列表)
#多个内核有多个title
title Red Hat Enterprise Linux Server (2.6.32-573.7.1.el6.x86_64) 可修改名字
root (hd0,0) //root是boot所在的分区,hd0第一块硬盘,0第一个分区
kernel /vmlinuz-2.6.32-573.7.1.el6.x86_64 ro root=UUID=fd97f491-58e5-4953-aa93-f52df8c1bad2 rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=zh_CN.UTF-8 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet
initrd /initramfs-2.6.32-573.7.1.el6.x86_64.img
2、运行级别修改:vim /etc/inittab
id:5:initdefault: 5为运行级别
查看运行级别:runlevel
/etc/rc.d/init.d/与/etc/init.d区别:
/etc/rc.d/init.d/包含所有的服务
/etc/init.d为/etc/rc.d/init.d/的软链接,内容相同
运行级别:0、指什么服务都不运行,关机。对应文件/etc/rc.d/rc0.d
1、指单用户模式。对应文件/etc/rc.d/rc1.d
2、多用户模式。对应文件/etc/rc.d/rc2.d
3、字符界面。对应文件/etc/rc.d/rc3.d
4、未定义。对应文件/etc/rc.d/rc4.d
5、X11图形界面。对应文件/etc/rc.d/rc5.d
6、reboot重启。对应文件/etc/rc.d/rc6.d
(单用户模式windows的安全模式,linux进入时不需要密码),多用户模式不能用NFS
运行级别目录下的所有服务都软链接到/etc/rc.d/init.d/中,级别目录下以k开头的文件都是开机不运行、以s开头都是运行的
在3级别里机运行startx,开启X服务,当5级别已开启时,运行startx没反应
init 5 切换到5级别(图形化界面)
Linux共6个控制台:F1到F6
F1、图形化界面,
F2至F6字符界面
控制台通过Ctrl+Alt+Fn(n为1到6)切换,若已开起图形化界面,Ctrl+Alt+F1将开启第7个控制台(图形界面)
将3级别改成图形化界面:vim /etc/init/prefdm.conf
只需将里面的数字改为3即可
3、系统启动时执行的文件:
/etc/fstab 自动挂载
/etc/rc.d/rc.sysinit 系统初始化脚本
/etc/rc.local 系统开机后会自动执行里面的脚本,类似于windows里 面的"启动"
系统启动后会自动运行/etc/profile这个脚本,里面是一些变量
系统登录后,会自动执行用户家目录下的脚本:.bash_profile
.bash_profile修改后,要执行..bash_profile 或者source .bash_profile生效
4、对root用户密码破解及加密
系统启动时按任意键,在内核选项列表按E, 再按E,选择kernel行再按E键,在内核信息后面加1或s(单用户模式)回车,再按B,进入boot进行引导,进行单用户模式,按正常修改密码,再输入exit退出
对用户密码加密
获取密码的字符串:grub-md5-crypt
编辑grub:vim /etc/grub/grub.conf
加入行: password --md5 grub-md5-crypt获取的字符串
如果加密后忘掉root密码
须进入救援模式
开机按ESC,选择从光盘引导→进入救援模式(选择Rescue installed system)→选择English→选择键盘USA→选择光盘→是否需要网络(否)→选择continue→一路ok最后选择shell start shell→
切换到硬盘里面的系统:chroot /mnt/sysimage
修改grub.conf: vim /boot/grub/grub.conf
删除加密行:password --md5 grub-md5-crypt获取的字符串
运行sync
退出exit
然后重启
最后按照密码破解方法破解
5、服务器管理
1)、系统服务存放位置/etc/init.d
如:/etc/init.d/httpd.d start 服务开启
/etc/init.d/httpd.d stop 服务停止
(启动停止只是临时生效)
/etc/init.d/下的服务均可用service开启与停止
/etc/init.d下可手动创建一些服务
2)、查看服务运行级别是否关闭(共七个运行级别)
chkconfig --list
3)、修改运行级别:chkconfig --level 5 httpd on
chkconfig --level 5 httpd off
设置开机自动运行::chkconfig httpd on
十一、vim编辑器的使用
每个分区中都有一个inode记录每个文件在分区中的id,同一个分区中的inode只能记录同一分区的文件,硬链接只能记录在同一个分区文件
显示文件inode的id: ls -i file
为文件file做硬链接 ln file xx
做软链接 ln -s file xx
vim三种模式:命令行模式、插入模式、末行模式
1、命令行模式:可按连接两个大写ZZ或shift+z(两次)保存退出;
在该模式下按数字后再按G,跳到多少行;
连续两个小g跳到第一行;
yy复制当前行,nyy从当前光标向下复制n行(n为数字),再按p粘贴到当前光标的下一行。
dd剪切当前行,ndd从当前光标向下剪切n行。u撤销,ctrl+r恢复修改;
x删出光标所在字符;
按r后再输入要替换的字符,将光标所在字符替换。
按R后再输入要替换的字符,将光标所在字符替换,光标又会自动跳到下一个字符继续替换。
ctrl+v移动光标选择部份内容,再按y复制,按x可删除(可用于删除#)。
ctrl+v 移动光标选择部份内容,再按I,再输入#注释选中内容,按esc退出。
在命令模式,连续按两下!!再输入ls /boot/vm*就会将查询内容插入光标处。
2、插入模式:
i,由当前光标进入插入;
a,从当前光标所在位置的下一个位置插入;
o,在光标当前所在行的下一行插入空白行开始插入;
I,将光标退到光标所在行的开头进行插入;
A,将光标退到光标所在行的末尾进行插入;
O,在光标当前所在行的上一行插入空白行开始插入。
插入模式不能保存。
3、末行模式:由命令模式进入到末行模式 按冒号:或按 / 。
/查找模式
/跟查找内容,进行查找,按小写的n从上往下查找,N从下往上查找。
帽号:模式,可用于保存、退出、替换、定义、设置属性等
:w仅仅保存
:w /etc/filename另存为
:wq等于:x保存退出
:q!退出不保存 :q未做修改退出
:set nu设置行号
:set nonu去掉行号;
:s/old/new/替换光标所在行的第一个old;
:s/old/new/g替换光标所在行所有的old; (g就是global全部)
:4,8s/old/new/g替换第四行到第八行所有的old,;
:.,$s/old/new/g替换当前行到最后一行所有的old; ( $表示最后一行)
:.,$-2s/old/new/g替换当前行到到数第三行所有的old;
:%s/old/new/g替换所有的old; (%表示所有)
:%s/\/old\//new/g替换文中所有的/old/,在关键字/前加上\;
:%s/\/old\//new/g等同于:%s#/old/#new#g 非关键字/可以用#等字符换替换;
:%s#/old/##g或:%s#/old/# #g 去年所有的/old/;
:%s/^/#/行首注释掉; (^行首)
:%s/^#//行首注释号去掉。
:3切换到第几行。
在末行模式,输入:sp将窗口切分,通ctrl+两下w切换光标位置
(以上注意各字符的应用,及相应变化使用)
十二、通配符、管道、重定向
1、通配符
[]匹配的是一个字符
[a-z]表示一个字母(不分大小字)
[0-9]表字一个数字
?表示一个任意字符
^[^0-9]或^[!0-9]表示开头不能是数字
*表示任意多个字符
[[:upper:]] 表示一个小写字母
[[:lower:]] 表示一个大写字母
\去除特殊意义
*与?不能匹配隐藏文件
例如:查找文件,文件名第一个字符是字母第二个是数字第三个任意第四个不能是数据字,后面任意,文件类型是txt的文件
表示方法: ls [a-z][0-9]?[!0-9]*.txt
touch a*更新以a开头的文件的更新时间
当touch a\* 这时*就是一个普通字符
通配符 正则表达式
? 表一个字符 . 表一个字符
. 没意义 ?表前面的字符出现一次或0次
*表任意多个字符 *或前面的字符出现0次或多次
2、grep作用
从文件里找到满足条件的行,表达式:grep 关键字 file
grep aa file从某个文件中找到含有aa的行
grep aa file --color以颜色显示查找行中关键字
grep ^aa file以aa开头
grep也支持正则表达式,正则表达式用单引号
grep ‘^r…:’file
grep -n‘^r…:’file 显示所在原文件的行数
grep -n -i aa file -i忽略大小写
grep -n -A3 aa file显示包含aa行的后面三行
grep -n -B3 aa file表示前面三行
grep -n -v aa file 显示不包含aa的行 (-v排出)
ifconfig eth0 |tee xxx |grep 'inet addr' 将前面结果保存在xxx文件里
ifconfig eth0 |grep 'inet addr'|egrep -o '192.+10'过滤IP
egrep扩展 .+10中间任意字符以10结尾
grep ^$ passwd --color -n 显示passwd中空白行,并以颜色显示行号
egrep '^\s+'^$ passwd --color -n \s+有多个空格的空白行
cat /proc/cpuinfo 获取cpu信息
grep -i name /proc/cpuinfo 查看电脑有几颗CPU
grep vmx /proc/cpuinfo 查看cpu是否支持虚拟化vmx(inter)/emx(AMD)
egrep 'vmx|emx' /proc/cpuinfo 查看cpu是否支持虚拟化
grep lm /proc/cpuinfo 查看电脑是否支持64位
3、重定向
ifconfig eth0 >aa写入aa文件,若存在aa文件,会清空里面数据
ifconfig eth0 >>aa 追加到aa文件
> >>只能重定向正确的结果,不能重定向错误的结果
2> 2>>只能重定向错误的结果,不能重定向正确的结果
&> &>>都可重定向
xxxx >aa 2>&1 错误也同样重定向
tr 'a-z' 'A-Z'将小写字母转换成大写字母
将hosts中的小写字母转换成大写字母
tr 'a-z' 'A-Z' <hosts等于cat host |tr 'a-z' 'A-Z'
不能直接修改文件中的内容,如:tr 'a-z' 'A-Z' <hosts >hosts 这样hosts将会损坏
要修改内容,分两步:tr 'a-z' 'A-Z' <hosts >xx
mv xx hosts
<<一般用在shell的HERE文档
如:cat >aa <<EOF 将EOF内容写入aa中
十三、本地用户管理(命令行)
1、LINUX用户和密码的相关文件
/etc/passwd和/etc/shadow
/etc/passwd存放用户信息
/etc/shadow存放用户密码(影子密码)
grep laduan /etc/passwd显示laduan用户的密码信息
laduan: x : 500 : 500 :: /home/laduan: /bin/bash
用户名 密码账符 UID GID 家目录 shell
2、创建用户及用户管理
创建组:groupadd group_name
删除组:groupdel group_name
创建用户:useradd 或者adduser
查看用户是否存在:passwd -S lduan
useradd user1 创建用户时,使用系统默认设置/etc/default/useradd
创建一个属于"admin"用户组的用户:
useradd -c "Im user1" -g admin -d /home/user1 -s /bin/bash user1
-c注释信息,全名;-g用户组;-d家目录; -s指shell
若用户同时属于两个组可写成:
useradd -c "Im user1" -g admin -G root -d /home/user1 -s /bin/bash user1(若一行命令太长,可用\换行)
删除一个用户:userdel -r user1 ('-r'排除主目录)
修改用户属性:usermod -c "I user1" -g root -d /ftp/user1 -s /bin/nologin user1
修改单个属性:usermod -g admin user1
修改密码:passwd user1
清空密码:passwd -d user1
查看密码是否设置:passwd -S user1
查看用户属性:finger user1
锁定用户:usermod -L user1 或passwd -l user1
解锁用户:usermod -U user1 或passwd -u user1
查看用户属于哪个组:groups user1
rm -rf .** 删除隐藏文件
将用户添加到组:gpasswd -a user1 admin(将user1添加到admin组)
将用户移出组: gpasswd -d user1 admin(将user1移出admin组)
当创建用户时,系统会自动从/etc/skel下考贝东西到家目录下
修改用户的家目录:usermod -d /home/user1 user1
修改或删除用户的家目录后,用户无法登录,这时要在home下创建user1家目录:mkdir /home/user1,再将/etc/skel/下的隐藏文件考贝到/home/user1/下:cp -a /etc/skel/.[!.]* /home/user1 (说明.[!.]*第一个字符是点第二个字符不能是点),然后改变所有者和所有组:chown -R user1.admin /home/user1,这样就可以登录。
创建多个用户:
vim aa 创建文件aa
user1:redhalt:501:501::/home/user1:/bin/bash
user2:redhalt:502:501::/home/user2:/bin/bash
user3:redhalt:503:501::/home/user3:/bin/bash
创建好后,运行newusers aa 这样就创建了三个用户
tail -3 /etc/passwd 查看最后三行内容
chage -E 2017-12-31 user1 设置用户口令失效期限
chage -l user1查看口令状态
chage -d上一次修改密码的时间,-E 密码过期时间,-l查看密码信息,-I密码到期激活的天数,-m密码到期后最小使用天数据,-M密码到期后最大使用天数。
下次登录强制修改密码:
sudo passwd -e hhj1984 或 sudo chage -d0 hhj1984
默认密码策略:/etc/login.defs修改这个文件后,只影响以后创建的 用户
十四、安装和管理软件
包的安装有三种方式:rpm、yum、tar源码包
1、rpm包管理(安装、查询、升级、验证、卸载)
rpm -qa 查询系统中安装了哪些包(-q查询,-a所有)
查询系统中是否安装了vsftpd包:
rpm -qa |grep vsftpd或者rpm -qa vsftpd
安装vsftp包(-i在第一位置,表示安装,-v过程,-h效验):
rpm -ivh vsftpd\*.rpm
卸载软件包:rpm -e 包名 (包名不能跟后缀)
查看包安装到了什么地方:rpm -ql 包名 (包名不能跟后缀)
rpm -qi 包名(包名不能跟后缀)i不是第一位置时,表示查看包的相关信息
查看包安装后产生了哪些配置文件:
rpm -qc 包名 或者rpm -qd 包名
rpm -qip xx.rpm 查看未安装包的相关信息
rpm -qg "System Environment/Daemons" 显示一个组件的rpm包
rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表
rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列 表
rpm -q package_name --whatrequires 显示与一个rpm包存在依赖关 系的列表
rpm -q package_name --whatprovides 显示一个rpm包所占的体积
rpm -q package_name --scripts 显示在安装/删除期间所执行的脚本rpm -q package_name --changelog 显示一个rpm包的修改历史
rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包 所提供
rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列 表
rpm -F xx.rpm 更一个确定已经安装的rpm包
rpm -Uvh xx.rpm 更新包,不改变其配置文件
对于一般软件来说,不能多版本共存,内核以及内核相关软件可以多版本共存;升级内核时,不要用rpm -Uvh kernel*,用rpm -ivh kernel,升级内核后,系统会以新的内核启动
查看当前系统的内核版本:uname -r
在家目录下创建一个隐藏文件 vim .vimrc
加入:set nu 这样以后每次打开文件都会有行号
rpm -V 包名(包名不能跟后缀) 查看包生成的文件是否被修改过
rpm -K xx.rpm 验证数字签名
要验证数字签名必须先导入RHEL公钥:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
查看有没有公钥:rpm -qa |grep gpg-pubkey
rpm -ivh --nodeps xx.rpm不依赖包安装(一般不用这种方式安装)
2、yum源配置及使用
配置RHEL6使用CentOS6的yum源
源网站:https:pkgs.org
在服务器上安装了RHEL6,没有购买RHN服务,所以使用CentOS的源。
按以下顺序安装
(1)、客户端配置
先安装运行Shell代码
1. rpm -aq|grep yum|xargs rpm -e --nodeps 卸载已安装的yum
2. rpm -ivh http://mirrors.163.com/centos/6/os/x86_64/Packages/python -iniparse-0.3.1-2.1.el6.noarch.rpm
3. rpm -ivh http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
4. rpm -ivh http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-3. 2.29-69.el6.centos.noarch.rpm http://mirrors.163.com/centos/6/os/x 86_64/Packages/yum-plugin-fastestmirror-1.1.30-30.el6.noarch.rpm
5.cd /etc/yum.repos.d/
6.删除/etc/yum.repos.d/下原有repo文件
7. wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
8. sed -i "s/\$releasever/6/" CentOS6-Base-163.repo 或者重新配置
9.编辑repo文件:vim /etc/yum.repos.d/xx.repo(名字随便,里面可以有多个源):
[base] //名字随便
name=aa //名字随便
baseurl=ftp://192.168.0.2/pub //yum源路径,pub指/var/ftp/pub;这个地方可写本地源如file:///iso(iso为挂载点)
enabled=1 //yum源是否启用
gpgcheck=0 //是否验证签名
10. yum clean all 清理缓存
11. yum makecache 将服务器上的软件包信息 现在本地缓存,以提高 搜索 安装软件的速度
12. yum update //更新系统
如果使用yum安装时报错的话,请编辑/etc/yum.repos.d下的rhel-source.repo,将所有的enable都设置为0,这样就没有问题了。
yum list \*samba*\ 从前从后查找包含samba的文件(在yum上)
yum search samba查找所有包含samba的
(2)、服务端配置
安装vsftpd,并启动vsftpd服务
①、挂载光盘到/var/ftp/pub:
mount /dev/cdrom /var/ftp/pub
②、本地源var/ftp/pubbet(自建源)
需安装createrepo
再执行createrepo -v puppet/ //生成包关系报告
(3)、yum的使用
查看yum有几个源:yum repolist
禁用指定yum源或者目录
例:yum list samda --disablerepo=base,aa,/var/ftp/puppet
yum install package_name 下载并安装一个rpm包
yum localinstall package_name.rpm 将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系
yum update package_name.rpm 更新当前系统中所有安装的rpm包
yum update package_name 更新一个rpm包
yum remove package_name 删除一个rpm包
yum list 列出当前系统中安装的所有包
yum search package_name 在rpm仓库中搜寻软件包
yum clean packages 清理rpm缓存删除下载的包
yum clean headers 删除所有头文件
yum clean all 删除所有缓存的包和头文件
yum info package_nam查看包的信息
yum whatprovides */system-config-selinux 查看该命令是由哪个包安装 产生的
yum list samba* 在当前shell下解析,查找
yum list samba\* 在yum源中去解析,查找
yum install subscript\* -y 会导致系统弹出红帽阅读服务,一般不安装
yum remove rhn-check与yum remove subscription-manager删除订阅
(4)、桌面安装
yum grouplist '*desktop*' 查询桌有哪些组件
yum groupinfo 组件名 查看组件含哪些包
yum install package_name.rpm 安装相关包
还要安装X window窗口
yum grouplist 'X window*'
安装完成后,修改默认启动级别
vim /etc/inittab
id:5:initdefault:
十五、SELinux
(强制访问控制)
1、并非所有的 Linux distributions 都支持 SELinux
目前 SELinux 支持三种模式,分别如下:
•enforcing:强制模式,代表 SELinux 运作中,且已经正确的开始限 制 domain/type 了;
•permissive:宽容模式:代表 SELinux 运作中,不过仅会有警告讯 息并不会实际限制 domain/type 的存取。这种模式可以 运来作为 SELinux 的 debug 之用;
•disabled:关闭,SELinux 并没有实际运作。
2、查看SELinux的模式
# getenforce
3,查看 SELinux 的政策 (Policy)
[root@master oracle]# sestatus
SELinux status: enabled <==是否启动 SELinux
SELinuxfs mount: /selinux <==SELinux 的相关文件资料挂载点
Current mode: enforcing <==目前的模式
Mode from config file: enforcing <==设定档指定的模式
Policy version: 21
Policy from config file: targeted <==目前的政策为何
4、通过配置文件调整SELinux的参数
[root@www ~]# vi /etc/selinux/config
SELINUX=enforcing <==调整 enforcing|disabled|permissive
SELINUXTYPE=targeted <==目前仅有 targeted 与 strict
注:strict策略更趋向于最大化使用SELinux所有特性,为大部分程序提供强壮的安全保护,而targeted策略的目标是隔离高风险程序,使用targeted策略的好处是一方面可以向Linux系统添加大量的安全保护,改变了策略须重启系统,由 SELinux 关闭 (disable) 的状态到开启的状态也需要重新开机。
5、通过命令行调整SELinux的参数
[root@www ~]# setenforce [0|1]
选项与参数:
0 :转成 permissive 宽容模式;
1 :转成 Enforcing 强制模式
将 SELinux 在 Enforcing 与 permissive 之间切换与查看
[root@www ~]# setenforce 0
[root@www ~]# getenforce Permissive
[root@www ~]# setenforce 1
[root@www ~]# getenforce Enforcing
加到系统默认启动里面
echo "/usr/sbin/setenforce 0" >> /etc/rc.local
如果要启动SELinux必须满足以下两个点:
所以,如果你要启动 SELinux 的话,请将上述的 SELINUX=enforcing 设定妥当,并且指定 SELINUXTYPE=targeted 这一个设定, 并且到 /boot/grub/menu.lst 这个文件去,看看核心有无关闭 SELinux 了呢?
[root@www ~]# vi /boot/grub/menu.lst
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-92.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet selinux=0
initrd /initrd-2.6.18-92.el5.img
# 如果要启动 SELinux ,则不可以出现 selinux=0 的字样在 kernel 后面!
6、SELinux 的启动、关闭与查看
ps –auxZ -Z查看标记,如ls –ldZ /etc/ 查看目录的标记
7、修改标记
chcon -R -t httpd_sys_content_t /www/ 或者
chcon -R –reference=/var/www/html/ /www/
reference引用/var/www/html/上下文(标记)修改/www/上下文
还原标记
restorecon -R /www/
8、查看哪布尔值会受selinux影响
getsebool -a
9、开启布尔值
setsebool httpd_sys_content_t on加-P永久生效
setsebool -P httpd_sys_content_t on
10、关闭布尔值
setsebool -P httpd_sys_content_t off
11、打开图形化界面
system-config-selinux
查询selinux图形化界面包
yum whatprovides */ system-config-selinux
安装查询出来的包
yum install policycoreutils-gui-2.0.83-24.el6.x86_64
12、安装selinux故障排查工具
yum list *shoot\*
yum install *shoot* -y
打开selinux故障排查工具
sealert -b
发现服务一启动,马上停止,找到安装时要先禁用SELinux,再安装MySQL,步骤是:
1. 关闭SELinux,重启系统;
2. 安装MySQL(MySQL server应该可以启动了);
3. 启用SELinux,重启系统,之后MySQL server就可以正常启动了
十六、Linux下LDAP Server/Client配置
1、服务器安装
1)、安装LDAP服务
yum install openldap-* -y
OpenLDAP 使用Berkely-DB来作为数据库存储信息,我们可以去官网下载解压到本地安装。But,用Yum的话,应该会帮我们做好这一切事情。 我们只要在安装完后检查一下是否安装了db4*相关的rpm包就可以了。If true,那恭喜,我们可以进行下一步了。If not,请用yum命令安装。
查看rpm安装包的命令:rpm -qa | grep db4
2)、拷贝LDAP配置文件到LDAP目录
cp -a /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
3)、创建LDAP管理员密码:slappasswd
这里我输入的密码是redhat,输入完密码后,返回一串密文,先保存到剪贴板,之后要复制到LDAP配置文件中使用: {SSHA}pfAJm JJa4ec2y8GjTc8uMEJpoR5YKLy
4)、编译配置文件
vim /etc/openldap/slapd.conf
# enable server status monitoring (cn=monitor)
database monitor
access to *
by dn.exact='gidNumber=0 uidNumber=0,cn=peercred,cn=external,cn=auth' read
by dn.exact='cn=admin,dc=test,dc=com' read
by * none
#######################################################################
# database definitions
#######################################################################
database bdb
suffix 'dc=test,dc=com'
checkpoint 1024 15
rootdn 'cn=admin,dc=test,dc=com'
# Cleartext passwords, especially for the rootdn, should
# be avoided. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
# rootpw secret
# rootpw {crypt}ijFYNcSNctBYg
rootpw (这之间只能用TAB键,不能用空格){SSHA}pfAJm JJa4ec2y8GjTc8uMEJpoR5YKMn
.......
保存退出。
5)、拷贝DB_CONFIG文件到指定目录
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
删除默认/etc/openldap/slapd.d下面的所有内容,否则后面在使用ldapadd的时候会报错:
# rm -rf /etc/openldap/slapd.d/*
6)、启动LDAP的slapd服务,并设置自启动:
# service slapd restart
# chkconfig slapd on
赋予配置目录相应权限:
# chown -R ldap:ldap /var/lib/ldap
# chown -R ldap:ldap /etc/openldap/
7)、测试并生成配置文件:
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
返回config file testing succeeded,则配置成功。
赋予生成的配置文件予权限并重启:
# chown -R ldap:ldap /etc/openldap/slapd.d
# service slapd restart
8)、创建一个账号,以备客户端测试登陆
mkdir /ldaphome
# useradd -d /ldaphome/ldapuser1 ldapuser1 # 创建ldap测试用户,ldap用户是基于服务端本地的用户。
至此,这些用户仅仅是系统上存在的用户(存储在/etc/passwd和/etc/shadow上),并没有在LDAP数据库里,所以要把这些用户导入到LDAP里面去。但LDAP只能识别特定格式的文件 即后缀为ldif的文件(也是文本文件),所以不能直接使用/etc/passwd和/etc/shadow。 需要migrationtools这个工具把这两个文件转变成LDAP能识别的文件。
9)、安装配置migrationtools
# yum install migrationtools -y
10)、进入migrationtool配置目录
# cd /usr/share/migrationtools/
首先编辑migrate_common.ph
# vi migrate_common.ph
...
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = 'test.com';
# Default base
$DEFAULT_BASE = 'dc=test,dc=com';
.......
保存退出。
11)、下面利用pl脚本将/etc/passwd 和/etc/shadow生成LDAP能读懂的文件格式,保存在/tmp/下
# ./migrate_base.pl > /tmp/base.ldif
# ./migrate_passwd.pl /etc/passwd > /tmp/passwd.ldif
# ./migrate_group.pl /etc/group > /tmp/group.ldif
12)、下面就要把这三个文件导入到LDAP,这样LDAP的数据库里就有了我们想要的用户
# ldapadd -x -D 'cn=admin,dc=example,dc=com' -W -f /tmp/base.ldif
# ldapadd -x -D 'cn=admin,dc=example,dc=com' -W -f /tmp/passwd.ldif
# ldapadd -x -D 'cn=admin,dc=example,dc=com' -W -f /tmp/group.ldif
过程若无报错,则LDAP服务端配置完毕
13)、重启slapd完成配置:# service slapd restart
14)、现安装NFS,并把ldapuser1的家目录做NFS共享.
默认REDHAT已安装
# yum install nfs* -y
配置NFS共享:
# vi /etc/exports
--------------
/ldaphome *(rw,no_root_squash)
--------------
重启nfs服务:
# service rpcbind restart
# service nfs restart
PS.本地需要做ldap控制的账号都要导入到LDAP DB中,否则客户端配置无法正常识别登录。
2、 配置ldap client端
配置setup内容,建议使用setup命令直接配置。
[root@node2 ~]# yum install setuptool -y # 安装setup包
[root@node2 ~]# setup # 直接运行setup进行配置
Authentication configuration
安装这样的选项
缺少什么就安装什么 yum install /lib64/security/pam_fprintd.so -y
这里不使用 TLS Server为服务器地址,DN为主配置文件中的配置
setup配置完成就可以尝试登录ldapuser1
[root@node2 ~]# su - ldapuser1
su: warning: cannot change directory to /ldaphome/ldapuser1: No such file or directory
-bash-4.1$
这里已经登录成功,表示ldap服务工作正常了,只是在客户端登录没有找到家目录。这里通过autofs方式,登录时自动挂载家目录
[root@node2 ~]# yum install nfs-utils -y # 安装nfs-utils 使用showmount 查看服务器共享目录
[root@node2 ~]# showmount -e 192.168.118.14 # 查看到node1共享了/ldaphome
Export list for 192.168.118.14:
/ldaphome 192.168.118.0/24
[root@node2 ~]# yum install autofs -y # 安装autofs包
[root@node2 ~]# vim /etc/auto.master
/ldaphome /etc/auto.nfs # 添加一条新的规则
[root@node2 ~]# vim /etc/auto.nfs # 添加自动挂载的规则
* -fstype=nfs,rw,async 192.168.118.14:/ldaphome/& # 挂载192.168.118.14:/ldaphome/到本地的/ldaphome
[root@node2 ~]# service autofs start # 启动autofs服务
Loading autofs4: [ OK ]
Starting automount: [ OK ]
[root@node2 ~]# su - ldapuser1 # 直接测试
[ldapuser1@node2 ~]$ pwd
/ldaphome/ldapuser1
[ldapuser1@node2 ~]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root
18003272 838212 16243872 5% /
tmpfs 502384 0 502384 0% /dev/shm
/dev/sda1 487652 33246 428806 8% /boot
/dev/sr0 3803432 3803432 0 100% /mnt/iso
192.168.118.14:/ldaphome/ldapuser1
18003328 802432 16279680 5% /ldaphome/ldapuser1
LDAP服务器搭建脚本ldap.sh
#!/bin/bash
iptables -F
echo
read -p "确保yum源已经设定好了(y/n): " ams
case $ans in
n|no)
echo "请重新设置好YUM"
exit 1
esac
sleep .5
echo -n "正在安装LDAP,请稍后...."
#------------ 创建LDAP服务器------------
ldapdir=/etc/openldap
migdir=/usr/share/migrationtools/
mdir /ldaphome
useradd -d / ldaphome/ldapuser -u 1000 lduan100
( yum install openldap\* -y) &> /dev/null
sleep 1
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
cp /usr/share/openldap-servers/slapd.conf.obsolete ${ldapdir}/slapd.conf
echo -n "redhat" > /tmp/aa
chmod 400 /tmp/aa
passwd=`slappasswd -T /tmp/aa`
cat > /tmp/sedfile <<EOF
/suffix/c\suffix "dc=hhj84,dc=cc"
/^rootdn/a\rootdn "cn=Manager,dc=hhj84,dc=cc"
/secret/a\rootpw ${passwd}
/dn.exact/c\ by dn.exact="cn=Manager,dc=hhj84,dc=com"
EOF
sed -i -f /tmp/sedfile ${ldapdir}/slapd.conf
chown -R ldap:ldap ${ldapdir}/slapd.d
chown -R ldap:ldap /var/lib/ldap
( service slapd restart ) &> /dev/null
( yum install migr\* -y ) &> /dev/null
sed -i -e '/^$DEFAULT_MAIL_DOMAIN/c\$DEFAULT_MAIL_DOMAIN ="rhce.cc";' -e '^$DEFAULT_BASE/c\$DEFAULT_BASE="dc=rhce,dc=cc";' ${migdir}/migrate_common.ph
grep ldapuser /etc/passwd /tmp/passwd
grep ldapuser /etc/group /tmp/group
${migdir}/migrate_base.pl /tmp/base.ldif
${migdir}/migrate_passwd.pl /tmp/passwd /tmp/passwd.ldif
${migdir}/migrate_ group.pl /tmp/ group /tmp/ group.ldif
rm -rf ${ldapdir}/slapd.d/*
( slaptest -f ${ldapdir}/slapd.conf -F ${ldapdir}/slapd.d/ ) &> /dev/null
chown -R ldap:ldap ${ldapdir}/slapd.d
(service slapd restart) & > /dev/null
sleep 1
chkconfig slapd on
(ldapadd -x -D "cn=admin,dc=rhce,dc=cc" -W -y /tmp/aa -f /tmp/base.ldif ) &> /dev/null
(ldapadd -x -D "cn=admin,dc=rhce,dc=cc" -W -y /tmp/aa -f /tmp/passwd.ldif ) &> /dev/null
(ldapadd -x -D "cn=admin,dc=rhce,dc=cc" -W -y /tmp/aa -f /tmp/group.ldif ) &> /dev/null
#-----------------------------------------------------------------------------
echo
echo "LDAP已设置完毕!"
sleep .5
echo
echo "在客户端上检查是否存在用户:laduan100 基准DN:dc=rhce,dc=cc"