LINUX笔记

一、执行命令及一些小技巧

命令行格式:命令   -选项  参数

例:以长模式显示: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 [email protected] -X 

                              -X指x windows协议

远程执行命令:ssh [email protected] 'hostname' 用单引号

远程连接工具:xshell,  putty,  secureCRT

使用xshell远程连接:ssh  [email protected]

netstart  -antp 查看TCP端口

vi /etc/ssh/sshd-config 可修改ssh端口

locale查看当前系统编码

使用xshell远程时,要修改xshell编码,不然会出现乱码

在xshell窗口按Ctrl+alt+f打开xftp进行文件传输

linux间传输文件用 scp, rsync

①scp  /path1/xx  [email protected]:/path2/yy

若考贝目录可以加上-r,如下

  scp -r /path1/xx  [email protected]:~考贝到laduan家目录

②rsync使用命令行或配置成服务(详见rsync服务配置)

命令行:rsync  -avz  /path1/xx  [email protected]:/path2/

              rsync  -avz  /path1/xx  [email protected]:~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  [email protected]

这样可以直接访问服务器,不用再输入密码

ssh -v [email protected]    -v显示连接过程

利用ssh通过本地2000端口访问服务器80端口

ssh -Nf  -L  2000:127.0.0.1:80 [email protected]      

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/sshsshd-configssh-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文件共享

  1. sudo yum install samba samba-client  
  2. vim /etc/samba/smb.conf  
  3.   
  4. 找到security这行并将#注释符号去掉改成  
  5. security = share     #共享模式  
  6.   
  7. 添加如下代码:  
  8.   
  9. [share]  
  10. comment = share  
  11. path = /home/test          #设置共享文件夹目录  
  12. browseable = yes  
  13. guest ok = yes  
  14. writable = yes  
  15.   
  16. service smb start  
  17. 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)  //rootboot所在的分区,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,在内核信息后面加1s(单用户模式)回车,再按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' 

不能直接修改文件中的内容,如:tr 'a-z' 'A-Z' hosts 这样hosts将会损坏

要修改内容,分两步:tr 'a-z' 'A-Z' xx

                    mv xx  hosts

<<一般用在shell的HERE文档

如:cat >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 <

/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"

转载于:https://www.cnblogs.com/hhjwqh/p/8359055.html

你可能感兴趣的:(操作系统,开发工具,ldap)