设置Linux系统的空闲等待时间TMOUT

为了增强Linux系统的安全性,我们需要在用户输入空闲一段时间后自动断开,这个操作可以由设置TMOUT值来实现。将以下字段加入到/etc/profile 中即可(对所有用户生效)。

export TMOUT=900    # 设置900秒内用户无操作就字段断开终端

readonly TMOUT     # 将值设置为readonly 防止用户更改

注意:设置了readonly 之后在当前shell下是无法取消的,需要先将/etc/profile 中设置readonly行注释起来或直接删除,logout 后重新login 。

$ export TMOUT=900

$ readonly TMOUT

$ unset TMOUT

-bash: unset: TMOUT: cannot unset: readonly variable

通过配置hosts.allow和hosts.deny文件允许或禁止ssh或telnet操作

示例:

[root@paph3 ~]# cat /etc/hosts.allow
#
# hosts.allow This file contains access rules which are used to
# allow or deny connections to network services that
# either use the tcp_wrappers library or that have been
# started through a tcp_wrappers-enabled xinetd.
#
# See ‘man 5 hosts_options’ and ‘man 5 hosts_access’
# for information on rule syntax.
# See ‘man tcpd’ for information on tcp_wrappers
sshd:192.168.3.80

[root@paph3 ~]# cat /etc/hosts.deny
#
# hosts.deny This file contains access rules which are used to
# deny connections to network services that either use
# the tcp_wrappers library or that have been
# started through a tcp_wrappers-enabled xinetd.
#
# The rules in this file can also be set up in
# /etc/hosts.allow with a ‘deny’ option instead.
#
# See ‘man 5 hosts_options’ and ‘man 5 hosts_access’
# for information on rule syntax.
# See ‘man tcpd’ for information on tcp_wrappers
#
ALL:ALL@ALL, PARANOID

1、登录主机,如果是普通账户先切换至root账号

su root

 

2编缉/etc/hosts.allow文件

vi /etc/hosts.allow
允许内容 书写格式(改成自自需要的IP或IP段)
ssh允许单个ip sshd:192.168.220.1
ssh允许ip段 sshd:192.168.220.
telnet允许单个ip in.telnetd:192.168.220.1
telnet允许ip段 in.telnetd:192.168.221.

以ssh允许192.168.220.1和telnet允许192.168.220网段为例,具体在/etc/hosts.allow加入内容如下:

 

 

3、编辑/etc/hosts.deny文件

vi /etc/hosts.deny

在文件中加入:

sshd:ALL
in.telnetd:ALL

具体在/etc/hosts.deny加入内容如下:

 

4、保存文件退出编缉后,重启ssh服务telnet服务可选

service sshd  restart
service  xinetd  restart

 

说明:

1.一个IP请求连入,linux的检查策略是先看/etc/hosts.allow中是否允许,如果允许直接放行;如果没有,则再看/etc/hosts.deny中是否禁止,如果禁止那么就禁止连入。

2.实验发现对/etc/hosts.allow和/etc/hosts.deny的配置不用重启就立即生效,但不管重启不重启当前已有会话都不会受影响;也就是说对之前已经连入的,即便IP已配置为禁止登录会话仍不会强制断开。不过不知是否所有linux都一样,由此第四步标为可选。

3.网上发现有些教程写成不是sshd而是in.sshd不是in.telnetd而是telnetd的,个人觉得应该是独立启的不用加in.托管于xinetd的需要加in.

pure-ftpd开启日志功能

vsftpd和pure-ftpd是 ftp传输的两个工具,第一个安全性高,配置后续配置简单。pure-ftpd是搭建简单,配置不简单啊。

由于工作关系,lamnp自带pure-ftpd,需要查看ftp日志时发现pureftpd.log是空的,这就尴尬了,虽然messages也有记录,可是这翻页的会慢死,脚本整理每次用也是烦,倒不如还是直接新建个ftp.log ,将ftp日志都写进里边

 

安装很简单,配置不简单,第一次看纯英文的帮助文档,当然偶尔也Google一下,但是发现关于pure-ftp的不是很多……

1)建立文件/var/log/pureftpd.log

2)修改/etc/rsyslog.conf

1>在这行的cron.none后面添加 ;ftp.none 使ftp的日志信息成私有

*.info;mail.none;authpriv.none;cron.none /var/log/messages为

*.info;mail.none;authpriv.none;cron.none;ftp.none /var/log/messages

2>在/etc/rsyslog.conf文件最后加上

#pureftp日志

ftp.*                                                                                    -/var/log/pureftpd.log

注意: 不要去掉/var前面的-号,否则日志会在/var/log/messages与/var/log/purefpd.log里各记录一份. 添加了-号,就只会记录在/var/log/purefptd.log内

3)使/etc/syslog.conf生效

重启系统日志     service rsyslog restart

重启puerftpd     service pure-ftpd restart

 

shell中变量自增的实现方法

Linux Shell中写循环时,常常要用到变量的自增,现在总结一下整型变量自增的方法。
我所知道的,bash中,目前有五种方法:
1. i=`expr $i + 1`;
2. let i+=1;
3. ((i++));
4. i=$[$i+1];
5. i=$(( $i + 1 ))
可以实践一下,简单的实例如下:

#!/bin/bash
i=0;
while [ $i -lt 4 ];
do
echo $i;
i=`expr $i + 1`;
# let i+=1;
# ((i++));
# i=$[$i+1];
# i=$(( $i + 1 ))
done

另外,对于固定次数的循环,可以通过seq命令来实现,就不需要变量的自增了;实例如下:

#!/bin/bash
for j in $(seq 1 5)
do
echo $j
done

 

svn报错:“Previous operation has not finished; run ‘cleanup’ if it was interrupted“ 的解决方法

今天改完代码提交时,提交接近完成但窗口还未关闭电脑蓝屏了。夏天来了,电脑比人还怕热啊~~~   心里咯噔一下,估计svn又会出一些莫名其妙的问题了。

果然,待电脑重启后开eclipse,文件还是新增状态,提交报错,提示需要执行clean up 。

但svn执行clean up命令时报错“Previous operation has not finished; run ‘cleanup’ if it was interrupted”。 无论你到那个父层次的目录执行“clean up “,都是报一样的错。后将代码删除,想重新check out 都不行。

此时测试还在催着交代码,真是屋漏偏逢连夜雨,越急越容易出错。

后上网搜索,本地.svn\wc.db数据库文件里面存储了svn的operation,表名是work_queue。

.db数据库文件可以用sqlite3打开。到网上下载sqlite3.exe,解压到D:\Offsite\.svn文件夹下,解压后的sqlite3.exe才475KB大小。

1. 运行cmd,进入到D:\Offsite\.svn文件夹下,执行sqlite3 wc.db,打开数据库

 

2. 执行.table 可以查看表名

 

3. 执行delete from work_queue; 命令。

 

4. 重试 clean up 操作,问题解决。