linux基础

elear   清屏

帮组命令

man 选项  文件名(或者命令名)

结果里面:
NAME:命令功能
SYNOPSIS:选项的格式
DESCRIPTION:命令描述
OPTIONS:选项

 

 

>,覆盖写入
ls -l / >~/bbb

注意:
1、若写入的文件不存在就自动创建。
2、如果文件存在系统会将内容情况然后将这一次的内容写入。
3、命令不管执行成功或者失败都会将重定向文件中的内容清空。


>>,追加写入
ls -l />>~/yanhaijingzhentmshuai

注意:
1、如果文件不存在就先创建,如果存在就追加写入。
2、注意右边不要有空格。

 

重定向标准输出、标准错误输出:
[root@yanhaijing ~]# ls -l xxxxxxxxxxxx 1>test.txt
让命令执行正确的写入到test.txt中
[root@yanhaijing ~]# ls -l xxxxxxxxxxxx 2>test.txt
让命令执行错误的写入到test.txt中。

[root@yanhaijing ~]# ls -l / 1>t1.txt 2>t2.txt
如果命令执行成功写入到t1.txt如果执行失败写入到t2.txt

/dev/null “黑洞”所有写入到这里面的东西都将会被“吞噬”。
[root@yanhaijing ~]# ls -l /asdfasdfasdfsaf 1>t1.txt 2>/dev/null

注意:
1、默认时只会将号码1的重定向。
2、当命令执行完成后,这些号码就失效了。

 

 

计划任务:
单一计划任务(好比定时炸弹,到时候炸了就没了。)
格式:at 时间
时间格式:
HH:MM YYYY-MM-DD 时:分 年-月-日
HH:MM 时:分
now + minutes 多少分钟之后执行

当你输入之后进入到提示符at>里面。

注意:
1、写命令,每一行一条命令。
2、写完之后按ctrl + d 保存

选项:
-l,查看计划任务列表。
-c 序号,查看计划任务的内容。
-d 序号,删除计划任务

周期性计划任务(每个月1号联通都让我交话费。)

格式:
crontab 选项
选项:
-l,查看当前用户计划任务。
-e,编辑crontab的工作内容。
-r,删除所有的计划任务
进入到crontab中写的格式:
分 0~59
时 0~23
日 1~31
月 1~12
周 0~6
命令

其他符号
*,表示每个周期执行。
,,表示或者 10,15 表示10分或15分
-,表示一个时间段 1-5 表示从1点到5点每个小时。


5种日期、时间选项的关系。
分、时、天、月他们的关系是并且的。
分、时、月、周他们关系是并且的。

同时设置分、时、天、月、周这个时候 天和周的关系是或者的关系。

crontab

 

 

查找命令:
whereis 配置文件/命令
locate 关键字 
updatedb手动更新数据库,whereis 和locate都是从这个数据库中找这个数据。

 

查找文件的路径

which  文件(夹)

 

查找:

find 起始目录目录 -属性 属性值

属性:

-name      按照指定的文件名查找

find ./bbb/ -name aaa.txt

-user       按照指定的所有者查找

-group     按照指定的所属组查找

-size     按照指定的大小进行查找

find / -size 2M 表示查找2m的文件

find / -size +2M  表示查找大于2m的文件

find ./ -size -2M  表示查找小于2m的文件

-perm  按照指定的权限查找

find  ./bbb -perm 755

grep  在文件中搜索符合条件的字符串

gerp 要搜索的字符串 文件名 

grep javascript ./bbb/

管道符:   将命令1的结果作为命令2的参数

命令1|命令2

find / -name *passwd* | grep /etc/passwd          

 

 

 

 

ls:显示目录内容

    ls -a  显示隐藏文件

    ls -1  列显示

    ls -sh  以K M G显示

    ll  -sh  以长格式显示  相当 ls -lsh

创建目录:

    mkdir ./dir1 ./dir2 ./...

递归创建目录:

  mkdir -p ./parentDir/childDir

    mkdir -p ./parentDir/{childDir1,childDir2,...}

删除文件或目录

   rm -rf  ./dir         r递归  f不提示直接删除

创建文件           如果文件不存在则创建空文件 否则就更新文件的时间 

  touch ./filename

复制目录或者文件

cp [选项] 源文件  目标文件

当目标文件文件不是目录则表示重命名

当目标文件是目录则表示直接复制

选项: -p  表示保持源文件的原始属性(比如时间啥的)  -r 递归

重命名aaa.txt文件为bbb.txt :    cp ./aaa.txt    ./bbb.txt

复制aaa.txt文件到bbb目录下   cp ./aaa.txt   ./bbb

复制aaa目录到 bbb目录下    cp ./aaa   ./bbb      如果bbb文件夹不存在 那么会将aaa重命名为bbb

 

移动或者重命名文件/文件夹:

mv 源文件或者源目录 目标文件夹/             移动
mv 源文件或者源目录 目标文件                  移动并且重新命名

mv aaa/ ./bbb                                                   将aaa目录移动并重命名为bbb

mv aaa/ ./bbb/                                                  将aaa目录移动到bbb目录下

mv aaa.txt  ./bbb  或者mv aaa.txt  ./bbb/         将aaa.txt移动到bbb

mv aaa.txt  ./bbb/bbb.txt                                  将aaa.txt移动到bbb  并且重命名为bbb.txt

创建软连接和硬连接: ln

创建软连接(相当于windows的快捷方式,源文件被删除那么目标文件则失效) ln -S ./源文件 ./目标文件    删除软连接的时候注意去掉 后面的/

创建硬连接(相当于php中引用的概念,不能跨区只能超级用户创建,也不能是目录) ln ./源文件 ./目标文件

查看文件内容:

查看全部内容并且显示行号

cat -n  ./aaa.txt

分屏显示

less 

-f  强迫打开特殊文件

-i  忽略搜索时的大小写

-N  显示每行的行号

ps查看进程信息并通过less分页显示同时显示行号

ps -ef|less -N

浏览多个文件

less test2.log test.log

显示行号浏览完毕后自动退出:

less -eN ./aaa.txt

进入文件后的操作:

/字符串:向下搜索“字符串”的功能          按下/键输入文字再按enter键就是搜索了

?字符串:向上搜索“字符串”的功能

n:向下搜索             按下/键输入文字再按enter键然后按n是向下先试试搜索的字符串,N是向上

N:向上搜索

h  显示帮助界面

Q  退出less 命令

u  向上翻半页

d  向下翻半页

y              上一行

回车键     下一行

空格键    下一页

b            上一页

[pagedown]: 下一页

[pageup]:   上一页

 

从头显示

默认从上至下显示10行:

head ./aaa.txt

n为整数表示从前面显示多少行,负数表示从第一行开始到倒数多少行

head -n 3 ./aaa.txt           # 从第一行开始显示3行

head -n -3  ./aaa.txt        #显示从第一行到倒数三行

tail:从后面显示文件内容

   tail  -n m ../aaa.txt    #显示后面10行  

 

 

权限

角色:所有者、所属组、其他

权限:  r(4)、w(2)、x(1)  :可读   、 可修改文件内容|在文件夹中可可进行创建|删除|重命名|剪|”复制     、  可(进入目录)执行文件

755   rwx r-x r-x   所有者,所属组,其他

4.0K drwxr-xr-x 2 root root 4.0K Jul 10 00:50 bbb         文件类型(d:文件夹)文件夹aaa所有者权限文件aaa所属组的权限其他用户权限     文件aaa所有者   文件aaa所属组          文件

创建用户:        useradd 用户名

修改用户名:    passwd 用户名

修改角色权限

方法1:

chmod 755 ./aaa.txt       修改aaa.txt的权限

方法2:

chmod 角色 操作 权限

角色:u:所有者; g所属组; o其他

Linux系统中,预设的情況下,系统中所有的帐号与一般身份使用者,以及root的相关信 息, 都是记录在/etc/passwd文件中。每个人的密码则是记录在/etc/shadow文件下。 此外,所有的组群名称记录在/etc/group內!

操作:

+  :  在原有的基础上加上某权限

-  :  在原有的基础上减去某权限

=   : 不管原来什么权限 都改成 当前设置的权限

权限: r w x

chmod -go-rx   ./aaa.txt

chmod u+x,g+w ./f01  //为文件f01设置自己可以执行,组员可以写入的权限
chmod u=rwx,g=rw,o=r ./f01
chmod 764 ./f01
chmod a+x ./f01  //对文件f01的u,g,o都设置可执行属性

 

修改所属组:

chgrp 选项 新所属组名 文件(夹)名

chgrp -R  root ./bbb/

同时修稿所有者和所属组

chown 所有者用户名:所属组名 文件(夹)

chwon -R root:root ./bbb/

 

压缩和解压缩

gzip压缩 :压缩后源文件就没有了   不能压缩文件夹 最多只能通过 gizp -9v ./dir/* 将文件里面的文件依次压缩

选项 -# (#表示1-9)1压缩快但是压缩比差 9压缩比最好但是也是最慢的  默认的是6

-v  显示压缩比信息

gzip -9v aaa.txt

gzip 解压: -d 选项就是解压

gzip -dv aaa.txt.gz

bzip2 压缩    和gzip一样就是多了一个保留源文件 -k 参数 

压缩
bzip2 -9kv ./aaa.txt    

解压
bzip2 -dv ./aaa.txt.bz2

 

tar安装

yum install -y tar

tar打包  可以压缩多个文件   可以压缩文件夹

tar打包时默认的时候没有压缩功能,压缩是后面的选项-z -g

默认解压是解压全部 可以后面跟要解压的文件名,就能将某个文件解压出来

 

选项

压缩

 

-c   创建打包文件

-f 新建文件名

-t 查看

解压

-x 解压

-C 这里的大写C配合-x使用将包解压到指定位置

其他

-v 显示解压过程

-z gzip压缩方式 

-j bzip2压缩/解压缩方式

 

-c:建立一个压缩文件的参数指令(create 的意思);
-x:解开一个压缩文件的参数指令!
-t:查看 tarfile 里面的文件!
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

可选参数

-z:有gzip属性,即需要用 gzip 压缩
-j:有bz2属性,即需要用 bzip2 压缩
-Z:有compress属性的
-v :压缩的过程中显示文件(显示所有过程)!这个常用,但不建议用在背景执行过程!
-O:将文件解开到标准输出
-f :使用档名,请留意,在 f 之后要立即接档名!不要再加参数!例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成『 tar -zcvPf tfile sfile』才对喔!
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
--exclude FILE:在压缩的过程中,不要将 FILE 打包!
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。


# tar -cf all.tar *.jpg // 这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
# tar -rf all.tar *.gif // 这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
# tar -uf all.tar logo.gif // 这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
# tar -tf all.tar // 这条命令是列出all.tar包中所有文件,-t是列出文件的意思
# tar -xf all.tar // 这条命令是解出all.tar包中所有文件,-x是解开的意思

 tar [-cxtzjvfpPN] 文件与目录 ....

        tar -cf archive.tar foo bar         # 将foo 和 bar打包成archive.tar
        tar -tvf archive.tar                   # 详细列出archive.tar中的所有文件
        tar -xf archive.tar                    # 从archive.tar中提取(解压)所有文件.

 

tar 选项 新包名 打包文件(夹)注意f后面不能有其他的选项了 

tar -c -f xxoo.tar  file1 file2 file3                将file1、file2、file3打包到 xxoo.tar文件中

tar -x -c ./bbb -f xxoo.tar file1                    提取xxoo.tar 中的file1文件 并移动到当前路径的bbb文件夹内

tar -c -f xxoo.tar.bz2 -j file1 file2 file3          将file1、file2、file3用bzip2方式压缩并打包到 xxoo.tar.bz2文件中

tar -j -x -f xxoo.tar.bz2 -C ./ccc/                  将xxoo.tar.bz2 解压到ccc文件夹


tar -cjfv lichiuha.tar.bz2 parentDir 将parentDir压缩打包成lichiuha.tar.bz2

 

          

 

挂载:

/dev为linux的设备  直接是访问不到这里的设备的  如cd /dev/cdrom 提示cdrom不是目录   我们要用这个设备必须将这个设备挂载到一个存在的文件目录上

查看挂载设备:

    直接输入mount 回车是查看已挂载的设备

挂载设备:

  mount [选项] 外部设备 挂载点(挂载点是一个存在目录 必须是一个空目录否则已有的文件会被暂时覆盖)

选项:  -t  挂载类型

如 mount -t 9600 /dev/cdrom /media/

 

卸载设备

mount /media/   (必须突出带/media/以外的目录才能成功,否则会提示 device is busy)

 

 软件包安装

程序员将程序写好,然后在编译成电脑能读懂的而二进制程序执行,

Linux中最标准的程序语言C,所以使用C语言的语法进行源代码的编写,写完之后,在LInux标准的C语言编译器(GCC)中来进行编译,让编译器生成可以使用二进制程序。

所以装完linux系统记得安装gcc

 

软件包安装方式: 详细的教程

LAMP源码安装

 

centos 编译安装php7.1 mysql nginx

 

 

1)、源码包,tarball,将所有的软件源文件以tar打包在进行压缩,常见格式为*.tar.gz
*.tar.bz2,所以tarball是一个软件包,通常里面有源代码的软件、检测程序文件、说明(Install或README)

源码包的特点:
优点:开源自由定制。
缺点:
1、编译时间长。
2、一旦报错,很难解决。
3、需要知道这个软件需要哪个子程序的支持。

2)、二进制包:RPM包(Linux下都是二进制包,和windows中一样),由于tarball不容易管理、安装,所以各个厂商开始向办法,让它更加容易使用。
厂商先将软件在固定的硬件平台、操作系统上安装编译好。然后将这个软件所有相关文件打包成一个特殊格式的文件,这个文件内还包含了预先检测软件的脚本,并提供记录该软件所有文件的信息。

客户取得这个文件后只需要通过特定的命令来进行安装。

RPM是红帽开发出来的。很多Linux都使用这种机制。CentOS Fedora

RPM的优点:
    1、避免重新编译。
    2、安装之前,会预先检查。可以避免文件被错误的安装。
    3、RPM文件本身提供软件版本信息,依赖的子程序的文件名、软件的用户说明。

RPM的缺点:
    1、不能自动解决软件依赖关系。还是必须要先安装子程序。
    2、用户不用重新编译,缺少自定义性。

3)、YUM安装方式,(实际上这种包也是使用RPM包)
YUM是通过分析RPM的数据后,根据软件的相关制作信息,找出各个部分的依赖,然后自动解决。

和RPM包相同但是自动的解决了依赖关系。

YUM是通过分析RPM数据后,根据各个软件相关信息制作出软件各个的依赖部分。

在一个服务器中的文件夹中包含所有软件包,当客户端要安装一个软件的时候,先发送请求到服务器,说明要安装这个软件,这个时候服务器会自动去找和该软件相互有依赖的包,然后将要装的软件和所有该软件相互依赖的包一起发送到客户端(只是将这些依赖包放在客户端的缓存中),客户端进行安装(安装完成后会将放在客户端的缓存删除掉)

 

 

 

 

 

 

 

源码安装php7

下载php安装包解压

tar -xjcf  php-7.0.tar.bz2

进入解压后的php目录 找到configure工具shell脚本主要编译安装源代码库软件可以检测依赖关系

configure --prefix=/home/work/study/soft/php

编译源码

configure

make

mak install

 

 

 

进程管理:
1、什么是进程?进程是程序在运行的时候在内存中一种体现。程序开启会消耗一定的CPU和内存。

ls命令是否会产生进程?既然是命令,命令也是程序,程序运行就会将产生进程,只不过向这种进程结束的很快。

2、进程和程序的区别:进程是动态的,程序是静态的,程序如果没有运行不会消耗内存和CPU,程序在运行的时候产生了进程会消耗内存和CPU。进程会使用编号标记出来。这个进程的编号我们叫PID

进程的作用:

查看系统中的所有进程。
格式:ps 选项
功能:查看进程
选项:(选项没有-)
a,显示所有进程
u,显示进程的所有者
x,更加详细的显示。

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2872 1420 ? Ss 10:38 0:01 /sbin/init


user:该进程属于哪个账号。
pid:进程号
%CPU:该进程使用掉CPU资源的百分比
%MEM:该进程所占用的物理内存百分比
VSZ:使用掉的虚拟内存的数量。
RSS:该进程占用的固定内存两。
TTY:该进程在那个终端上面运行。
?表示与终端无关内核正常调用。
tty1-tty6 在本机上面的登录者。
pts,有网络连接的进程。

STAT:该进程目前的状态,R(正在运行),S(正在休眠),Z(僵尸进程,进程已经终止但是没有办法消除。要么重新启动要么直接杀死。)
START:该进程被触发的时间。
TIME:该进程实际使用了CPU的时间。
COMMAND:该进行的实际命令。


判断服务器的健康状态。一般来说CPU和内存占用超过80%就是高负载了。使用进程可以查看到谁占用了这么多的内存和CPU
动态的显示当前系统中的进程:
格式: top

默认的时候是3秒抓取一次。

选项:
-d 数字,进程多少秒刷新


top - 12:02:06(系统时间) up 1:23(系统运行了多长时间), 1
user(登录了多少个用户), load average: 0.00, 0.00, 0.00(平均负载
1分,5分,15分)
Tasks: 116 total(总共116个进程), 1 running(1个运行), 115
sleeping(115个休眠), 0 stopped(0个停止), 0 zombie(0个僵尸进程)
Cpu(s): 0.3%us, 0.7%sy, 0.0%ni, 99.0%id(CPU空闲率), 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3484300k total, 999692k used, 2484608k free, 62064k buffers
Swap: 3620856k total, 0k used, 3620856k free, 763676k cached

看着1、5、15的负载和CPU的空闲率。


杀死进程:所有进程都有正确的终止手段。只有使用正确的关闭进程的方式不好使的时候才会杀死进程。
格式:kill -信号 PID
信号:
-1,重启服务
-9,强制中断
-15,以正常的结束进程来终止该进程。

可以使用ps aux 查看pid号


格式:killall -信号 进程名
信号:
-1,重启服务
-9,强制中断
-15,以正常的结束进程来终止该进程。


注意:一般使用killall,如果已经知道了进程ID那么使用kill 来进行杀死。

 


服务管理:

 

 

服务-----》软件运行的时候提供给客户的功能。
windows里面也有服务。 msconfig

 


服务:服务的状态,服务的启动。

 


服务:
RPM包安装的服务:RPM包是默认安装的服务(Linux装系统的时候,有很多东西都是使用RPM包安装出来的,所以Linux将会将RPM包安装的成为默认服务)

 

独立服务:独立服务可以自己单独启动的服务,这种类型的服务可以让用户自主决定是否启动。不必通过其他的管理机制。他的特点:服务一启动就加载到内存中,一直占用内存资源。这样当有请求过来的时候可以快速响应。
chkconfig --list 来查看RPM包安装的服务以及,自启动状态。

 

[root@lichihua ~]# chkconfig --list
结果如下:
NetworkManager 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
系统运行的级别:0:关机 1:单用户 2:单用户,但是不带文件共享 3,文字界面 4:未使用(预留) 5:图形界面 6:重启

 

开启、关闭、重新启动
格式:service 服务名 动作

 

动作:start 开启 stop 停止 restart 重新启动服务。

 


比如:service network restart 重新启动网络服务

 

注意:也可以使用/etc/init.d/服务名
动作来进行处理,因为service命令也是从/etc/init.d中查找指定的服务名。

 

 

 

独立服务的自启动:
方法1:chkconfig [--level 运行级别] 服务名 on|off

 

chkconfig --level 12 vsftpd on ===》 让vsftpd这个服务在1和2运行级别中自启动。

 

chkconfig vsftpd off ===》让vsftpd这个服务在2345中关闭自动启动。
注意:--level如果省略表示的是2345运行级别

 


方法2:使用vtsysv命令管理(红帽专有)

 


方法3:在/etc/rc.local文件中写入开启的命令

 

 

 

 

 


(了解内容)非独立服务:(现在用的太少了),基于xinetd的服务。xinetd他是一个独立服务。其他的这些非独立服务由他来调用。
就相当于你去银行排号,办理某种业务。

 

源代码包安装的服务:

 

要启动或者要停止,看安装目录中的服务名。
/Apache/bin/Apachectl start
/apache/bin/apachectl start (apachectl最后的1是1234的1不是L)

 

自启动-----》在/etc/rc.local文件中写入开启的命令

 

 

 

tarball(源码包)安装的软件这些服务能够用service开启或者关闭吗?可以
/etc/init.d里面没这个东西。 现在我有一种方法。我给这个源码包安装的服务软连接到/etc/init.d中。

/Apache/bin/Apachectl

 

ln -s /Apache/bin/apachectl /etc/init.d/apache

 


service apache start
service apache stop

 

 

 


系统运行级别:
0,关机
1,单用户
2、单用户,但是不带文件共享
3、文字界面
4、未使用
5、图形界面
6、重启。

 


init 0
init 6

 

runlevel 查看当前运行级别 第二个是当前的运行级别,第一个是当前运行级别的上一个运行级别。

 


网络配置
网卡信息:
Linux中普通有线网卡使用eth表示。无线网卡使用wlan表示。
0表示第一张网卡,1表示第二章网卡。

 

eth0

 

查看、配置网卡信息:ifconfig
格式:ifconfig [选项] [网卡名]

 

默认的时候查看,已经激活的可用的网卡信息。

 

-a,查看所有的网卡的信息。

 

ifconfig eth0 查看eth0的网卡信息。

 


eth0(网卡名) Link encap:Ethernet HWaddr 00:0C:29:0E:15:70(网卡的Mac地址)
inet addr:192.168.186.86(IPv4) Bcast:192.168.186.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe0e:1570/64(IPv6) Scope:Link
UP(网卡状态) BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1803 errors:0 dropped:0 overruns:0 frame:0
TX packets:1001 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:179917 (175.7 KiB) TX bytes:209314 (204.4 KiB)(从开机到现在已经发送了多少包)
Interrupt:19 Base address:0x2000

配置网络:
/etc/sysconfig/network-scripts/ifcfg-eth0

 

[root@lichihua network-scripts]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
UUID="242cb6db-e380-4e0f-86da-7a6fa381575c"
HWADDR=00:0c:29:0a:bf:46
DEFROUTE=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
IPADDR=192.168.200.2
NETMASK=255.255.255.0
GATEWAY=192.168.200.1
USERCTL=no

 

DEVICE 网卡名
BOOTPROTO 这张网卡通过什么方式来获得IP地址(none,通过手工获得。static,静态获得。dhcp,动态获得)
HWADDR=00:0c:29:0e:15:70 (MAC地址)
ONBOOT=yes(系统或网络重新启动时候是否直接自动启动。)
IPADDR=192.168.186.86 (你设置的IP地址)
DNS1=202.106.0.20(配置主DNS地址,可以最多有3个 第二个DNS2 DNS3)

 


DNS:domain name server,将主机名转换为IP地址或将IP地址转换为主机名

注意:设置完配置之后一定要重新启动网络让新的配置生效。
service network restart

 

 

 

查看当前网络开启的端口
netstat 选项。

 

选项:
-n,不将IP地址解析成主机么一
-t,查看tcp情况
-u,查看udp的情况
-l,查查看监听的端口
-p,显示端口对应的进程。

 

netstat -ntulp

 

注意:
如果Apache开启的话 80 httpd


 


ipconfig/all(windows)

 

文件服务器:
FTP服务器:
FTP:文件传输协议,用于在inter上控制文件的双向传输(上传、下载)。

 

FTP的工作原理:
FTP服务器开启以后,会开启两个端口:20和21
20,用来传输数据。
21,用来传输信令,验证信息。

 


FTP两种模式来进行工作:
主动模式,客户端使用M端口(1024),来连接服务器的21端口,验证完成之后服务器通过20端口和客户端的N端口进行链接,也就是说FTP会主动链接到客户端的N端口。
被动模式,客户端使用M端口连接FTP的21端口,客户端同时告诉FTP传输数据使用N端口进行传输,也就是说FTP服务器根据客户端提供的端口来进行数据传输。

 


vsftpd:vervy secure ftp daemon 非常安全的FTP,VSFTP是一个在Unix操作系统上运行的FTP服务器的名字。

 


安装:

 

yum install vsftpd
注意:安装完成后会自动创建一个ftp用户和一个ftp组

 


开启服务:
service vsftpd start
service vsftpd stop | restart

 


注意:做实验的时候要把防火墙和seLinux的关掉。

 

setenforce 0 让seLinux暂停 临时关闭

 

进入到/etc/selinux/config
SELINUX=disabled

 


[root@yanhaijing Packages]# rpm -q vsftpd
vsftpd-2.2.2-11.el6.i686

 


VSFTPD的设置
vsftpd的配置文件:/etc/vsftpd/vsftpd.conf
匿名用户
anonmous_enables,是否启用匿名用户登录
注意:
1、匿名用户默认的时候是进入到/var/ftp这个目录中。
2、如果你用匿名用户登录,登录的时候用户名ftp
3、匿名用户没有密码。

 

anon_root,更改匿名用户的用户根目录。
注意:
1、要修改ftp这个用户的家目录为你anon_root的值。
usermod -d 目录 用户名 修改用户的家目录

 

2、修改配置之后重新启动服务

 

anon_upload_enable,匿名用户是否可以上传
注意:
1、ftp这个用户一定要对这个目录有写权限。
2、vsftpd不能直接匿名根目录。

 

anon_mkdir_write_enable,匿名用户是否可以创建新目录
anon_other_write_enable,匿名用户是否可以删除、重命名。

 

本地用户
local_enable,是否允许本地用户登录
注意:本地用户登录后目录是/home/用户名 ,用户的家目录。

 

write_enable,是否设置本地用户可写。
/×虚拟用户×/

 

chroot选项:
什么是chroot,他让你的ftp的根目录定位在你设定的目录中不能往上走。也就是说,如果你是使用本地用户登录只能最上层只能是/home/用户名
这个就是你的ftp的根目录

 

chroot_local_user,是否启用本地用户的chroot
chroot_list_enable,让某些用户可以改变目录。
chroot_list_file,写在这个文件中的用户可以进行改变目录。
注意:在这个里面每一行写一个用户名。写在这个里面的可以进行改变目录。

 

SAMBA
三八服务器。

 

我们如果能够让文件直接在服务器上面进行修改。

 

在Linux和Linux之间可以使用NFS服务器。
windows和windows之间可以使用网上邻居。CIFS
windows和Linux之间怎么通信?
在1991年的时候有个小伙子发明了SMB(server Message Block)让Linux和windows进行通信,但是在注册商标的时候SMB没有办法通过,因为SMB没有文字意义。正好SAMBA中有了SMB这三个字母就使用了SAMBA

 


安装yum
yum install samba

 


注意:
1、SAMBA主要使用两个服务
nmbd:用来进行解析工作(链接到那个地址)开启137和138端口。
smbd:用来管理分享的目录,开启139端口。

 


开启:
service smb restart|start|stop
service nmb restart|start|stop

 

samba的主要配置文件
vi /etc/samba/smb.conf

 

注意:
1、#号开始和;开始都是注释信息。
;号开始表示的选项,#号开始表示的是描述。

 

2、[global] => 全局生效的东西
包括工作组、主机名、字符编码、是否使用密码,密码使用的机制。

 

格式:参数=参数对应的值

 

3、[分享资源名]=>针对开放的目录进行权限方面的设定
格式:参数=参数对应的值

 


注意:
1、workgroup必须和windows中的设定的工作组一样。
WORKGROUP

 

 

 

2、interface监听那个网卡(哪个端口)

 


3、security通过什么形式来进行验证。
share(分享的数据不需要密码) user(使用SAMBA本身的密码)

 


匿名用户登录SAMBA
windows-》Linux

 

1、确保Linux和Windows能够ping通
2、workgroup和windows的group一定要一样。
3、将security=share
4、加入分享名字。
[lamp129]
path = /lamp129//分享的服务器上面的路径
writeable = yes//是否可写
public =yes//匿名用户是否可以访问。

 


注意:一定要关闭seLinux

 

注意:
1、如果不能写入通常注意三个方面:
1、服务器设置是否可写。
2、是否有这个目录的权限。匿名用户是目录里面的其他人(nobody),那么其他人必须有w的权限。
3、seLinux问题。

 

 

 


 

打印机和传真。

 

进行验证的SAMBA 登录

 

posted @ 2018-07-10 00:54  虚无缥缈的云  阅读(267)  评论(0编辑  收藏  举报