您的位置:首页 > 运维架构 > Shell

Linux服务 、shell基础(命令)

2013-08-12 18:08 274 查看
FTP安全设置:

用户控制:

ftp用户控制的两个文件:

/etc/vsftpd/ftpusers

/etc/vsftpd/user_list

参数设置/etc/vsftpd/vsftpd.conf

/etc/vsftpd/ftpusers相当于一个黑名单,这里显示的用户不能登录ftp

如果想让某一个用户不能登录ftp,直接把用户名添加到/etc/vsftpd/ftpusers

/etc/vsftpd/user_list 这个中的用户可变的,这个文件要起作用,

必须userlist_enable=YES 参数设置为可为YES

userlist_deny 设置这个参数

YES:/etc/vsftpd/user_list相当与黑名单,即里面设置用户不允许登录。

NO:/etc/vsftpd/user_list相当与白名单,即里面设置用户允>许登录。

/etc/vsftpd/ftpusers和/etc/vsftpd/user_list两者之间冲突(一个用户两个文件中都有),以 /etc/vsftpd/ftpusers为准。

------------------------------------------

IP地址限制:

# vim /etc/vsftpd/vsftpd.conf

tcp_wrappers=YES 启动TCP wrappers控制

tcp_wrappers的两个控制文件:

/etc/hosts.allow 表示允许访问列表

/etc/hosts.deny 表示不允许访问列表

# vim /etc/hosts.allow 允许某一个IP登录

vsftd:2.2.2.128 2.2.2.111

服务器 允许访问的IP列表

# vim /etc/hosts.deny 不允许登录

vsftpd:all 不允许所有IP登录

/etc/hosts.allow和/etc/hosts.deny的工作流程:

用户登录过来的时候,首先看是否在/etc/hosts.allow中(被允许登录的用户),如果这个名单中允许的IP,就直接登录,跳过所有的判断,如果不在/etc/hosts.allow中,看是否在/etc/hosts.deny文件中,如果在就不允许登录。

-------------------------------------------------------

优化与限制:

修改配置文件的参数:#vim /etc/vsftpd/vsftpd.conf

local_max_rate=102400 限制本地用户最大传输速度

anon_man_rate 限制匿名用户最大传输速度

max_clients=5 同时链接的客户数

max_per_ip=5 单个用户的最大连接数

------------------------------------------------------------

http:

超文本传输协议(http)也是一种通讯协议

是目前使用最广泛的WEB服务器软件

------------------------------------

安装软件:

yum install httpd*

yum reinstall httpd*

yum install httpd* -y

--------------------------------

服务器名:

httpd

---------------------------------

使用端口

80

---------------------------------

配置文件:

# vim /etc/httpd/conf/httpd.conf

---------------------------------

http如何共享文件

# vim /etc/httpd/conf/httpd.conf

不去分大小写的搜索: set ic

--------------

DocumentRoot "/ule" 修改为自己共享的文件目录

-------------------

-------------------

<Directory/ule>

Options FollowSymLinks Indexes 表示列表的方式显示

AllowOverride All

</Directory>

# vim /etc/httpd/conf.d/welcome.conf

<LocationMatch "^/+$">

Options Indexes 去掉Indexes前面的—

ErrorDocument403 /error/noindex.html

</LocationMatch>

重启服务:service httpd restart

注意:如何出现443之类的错误:

# vim /etc/httpd/conf.d/ssl.conf

把443改成其他值。

之后就可以访问了

把自己的IP解析成域名

#vim /etc/hosts

2.2.2.133 localhost.localdomain

---------------------------------------------------

多站点的实现:

多站点就是在一个服务器上,架载多个WEB站点,。叫做虚拟主机方式,

虚拟主机的实现方式:

基于IP的方式 基于端口的方式 基于域名的方式

采用基于域名一种方式实现多站点访问

# vim /etc/httpd/conf/httpd.conf

NameVirtualHost *:80 前面的注释去掉

<VirtualHost *:80>

ServerAdminwebmaster@uplooking.com 表示邮箱

DocumentRoot /ule 共享文件

ServerName www.uplooking.com 域名

ErrorLoglogs/uplooking.com-error_log 错误日志

CustomLoglogs/uplooking.com-access_log common

</VirtualHost>

<VirtualHost *:80>

ServerAdmin webmaster@baidu.com

DocumentRoot /ule

ServerName www.baidu.com

ErrorLoglogs/baidu.com-error_log

CustomLog logs/baidu.com-access_logcommon

</VirtualHost>

客户端设置:

#vim /etc/hosts

添加一行:

2.2.2.133 www.uplooking.com

2.2.2.133 www.baidu.com

就是把www.uplooking.com解析到2.2.2.133

----------------------------------------------------

shell编程

shell是一个命令解释器,用于帧听用户输入的指令,并启动这些指令所启动的进程。

shell也是一种程序设计语言,他又变量、关键字、各种流程控制。

----------------------------

查看shell信息

ls /bin/*sh 查看所有的shell

echo $SHELL 查看本机支持的shell

----------------------------

bash的初始化过程:

从用户登录开始,用户一次执行的几个程序

/etc/profile->~/.bash_profile->~/.bashrc->/etc/bashrc

/etc:针对所有用户,每个用户启动的时候,都会启动这两个脚本

~:表示定义当前用户

例:

对配置文件输出一句话,切换用户看执行顺序。

---------------------------

用户退出执行文件

~/.bash_logout

------------------------------

用户的命令历史:

bash在工作的时候,会记录下用户输入的命令,共用户上下翻动查询,如果退出窗口后,会把这些命令保存起来,保存在~/.bash_history这个文件中

如何调用这些命令

1、方向键调用

2、ctrl+r

自动搜索历史命令,回车就可以执行,方向键进行修改

3、history 查看命令历史

!954 运行954号命令

!!: 运行最后一条命令

!-3:运行倒数第三条命令

!$: 最后一条命令的最后一个参数

与命令相关的文件:

vim /etc/profile

HISTSIZE=1000 内存中最大保留多少条命名

HISTFILESIZE=1000 历史文件中保留多少条命令

禁用历史命令:

方法一:HISTSIZE=0 内存没有,文件也就没有了。

方法二:rm~/.bsah_history

下次启动,会自动创建这个文件

---------------------------------------------

shell 变量

变量分类:

按作用域分:局部变量和环境变量

局部变量:

只在本shell中有效

环境变量:

在本shell及子shell中有效。

注意:在上级shell环境变量也不起作用。

-------------------------

显示环境变量:env

-----------------------------

变量定义:

定义局部变量:

变量名=值

定义环境变量:

export 变量名=值

-----------------------------

删除一个变量:

unset 变量名

------------------------------

查看所有的shell变量:

set

例:

echo $PS1 输出变量值

重新定义:PS1='[\u@\h \w \t]\$ '

\u:表示用户

\h:表示主机名

\W:表示当前路径

\w:表示绝对路径

\t:表示时间

参数在哪查找:man bash

输入/\/u /表示查找 \表示转义 /表示是参数

--------------------------------------------

变量取值:

$变量名

或者

${变量名}

用{}更安全两者之间的区别?

例: #a=apple

#echo "how are you" >$a_ode.txt 会产生.txt文件

并不是我们需要的结构

#echo "how are you" >${a}_ode.txt 则会产生apple_ode.txt

显示出我们需要的东西

#cat apple_ode.txt

则显示:howare you

---------------------------------------------

linux下的多条命令的执行:

1、无条件执行多条命令

命令之间用分号分割

mkdir a; touch b;cd /;ls

执行命令的时候,如果命令用()括起来,表示会在子shell中执行

cd /etc/xml;ls

(cd /etc/xml;ls)

()表示声明一个函数

例:

# aa() 函数声明

> {

> echo this is aa

> ls 函数体

> touch /test/ddd

> }

# aa 调用函数

------------------

2、有条件多命令执行

&&:前一个命令执行成功,才执行后一个命令

mkdir ff && ls 执行成功再执行后一个

ls /ttt && ls 执行不成功,后一个命令也不执行。

||:前一个命令执行不成功,才执行后一个命令

ls /ttt || ls

mkdir gg || ls

------------------

命令返回值

linux每执行一条命令的时候,都会有一个返回值,来表示该命令的执行状态,

获取返回值:echo$?

如果返回值为0:表示命令执行成功

不为0:表示执行不成功

返回给系统 exit

-------------------

命令执行的顺序:

;优先级最低

&& 和 ||具有相同的优先级,从左到右的顺序执行

()可以改变命令的执行顺序

--------------------------

运算符:

字符运算:

无需任何运算符,直接链接即可

例:

a="abc"

b="123"

echo $a$b

数值运算符:(linux不支持小数点运算)

$(())或者$[]

比较运算符

字符比较

= 等于

!= 不等于

\> 大于

\< 小于

-z string 字符是否为空(长度为0)

-n string 字符是否不为空(长度不为0)

数值比较:

等于 -eq

不等于 -ne

大于 -gt

大于等于 -ge

小于 -lt

小于等于 -le

文件测试:

-b file 文件是否存在,且是一个块设备文件

-c file 文件是否存在,且是一个字符设备文件

-d file 文件是否存在,且是一个目录

-e file 文件是否存在

-f file 文件是否存在,且是一个普通文件

-r file 文件是否存在,且当前用户可读

-w file 文件是否存在,且是可写

-x file 文件是否存在,且是可执行

-O file 文件是否存在,且当前用户为其属主

-G file 文件是否存在,且当前用户为其数组

-----------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: