通过配置一级命令提示符让你的终端色彩缤纷

如果您很容易使 shell 提示行变得色彩绚烂斓且带有更多信息,为什么还要坚持用单调的标准 shell 提示行呢?在这篇技巧中,Daniel Robbins 将说明如何获得符合您的意愿的 shell 提示行,并会说明如何动态更新 X 终端的标题栏。

  作为 Linux/UNIX 人,我们有很长的时间是在 shell 中工作,并且在许多情况下,下面这一行就是始终盯着我们的那个提示行:

  bash-2.04$

  如果您恰巧是超级用户 (root),您就有权使用下面这个美丽的标示“身份”的提示行版本:

  bash-2.04#

  这些提示行并不是十分漂亮。这也就难怪几种 Linux 版本对默认提示行进行了升级,在其中增加了颜色和更多的信息。但是,即便您恰好有一个本身带有很好的彩色提示行的新式版本,它也不可能是完美无缺的。您或许希望在提示行中增加或更改几种颜色,或者增加(或删除)一些信息。从头开始设计属于您自己的彩色的、经过装饰的提示行并不难。

  提示行基础

  在 bash 下,可以通过更改 PS1 环境变量的值来设置提示行,如下所示:

  $ export PS1=”> ”

  >

  更改会立即生效,通过将 “export” 定义放在您的 ~/.bashrc 文件中可将这种更改固定下来。只要您愿意,PS1 可以包含任意数量的纯文本:

  $ export PS1=”This is my super prompt > ”

  This is my super prompt >

  尽管这很有趣,但在提示行中包含大量静态文本并不是特别有用。大多数定制的提示行包含诸如用户名、工作目录或主机名之类的信息。这些花絮信息可以帮助您在 shell 世界中遨游。例如,下面的提示行将显示您的用户名和主机名:

  $ export PS1=”\u@\H > ”

  yoyojacky@bizsmooth >

  这个提示行对于那些以多个不同名称的帐户登录多台机器的人尤为有用,因为它可以提醒您:您目前在哪台机器上操作,拥有什么权限。

  在上面的示例中,我们使用了专用的用反斜杠转义的字符序列,藉此通知 bash 将用户名和主机名插入提示行中,当这些转义字符序列出现在 PS1 变量中时,bash 就会用特定的值替换它们。我们使用了序列 “\u”(表示用户名)和 “\H”(表示主机名的第一部分)。下面是 bash 可识别的全部专用序列的完整列表(您可以在 bash man page 的 “PROMPTING” 部分找到这个列表):

  序列 说明

  \a ASCII 响铃字符(也可以键入 07)

  \d “Wed Sep 06″ 格式的日期

  \e ASCII 转义字符(也可以键入 33)

  \h 主机名的第一部分(如 “mybox”)

  \H 主机的全称(如 “mybox.mydomain.com”)

  \j 在此 shell 中通过按 ^Z 挂起的进程数

  \l 此 shell 的终端设备名(如 “ttyp4″)

  \n 换行符

  \r 回车符

  \s shell 的名称(如 “bash”)

  \t 24 小时制时间(如 “23:01:01″)

  \T 12 小时制时间(如 “11:01:01″)

  \@ 带有 am/pm 的 12 小时制时间

  \u 用户名

  \v bash 的版本(如 2.04)

  \V Bash 版本(包括补丁级别) ?/td>

  \w 当前工作目录(如 “/home/yoyojacky”)

  \W 当前工作目录的“基名 (basename)”(如 “yoyojacky”)

  \! 当前命令在历史缓冲区中的位置

  \# 命令编号(只要您键入内容,它就会在每次提示时累加)

  \$ 如果您不是超级用户 (root),则插入一个 “$”;如果您是超级用户,则显示一个 “#”

  \xxx 插入一个用三位数 xxx(用零代替未使用的数字,如 “07″)表示的 ASCII 字符

  \\ 反斜杠

  \[ 这个序列应该出现在不移动光标的字符序列(如颜色转义序列)之前。它使 bash 能够正确计算自动换行。

  \] 这个序列应该出现在非打印字符序列之后。

  这样,您已经知道了 bash 中用反斜杠转义的全部专用序列。请稍微演练一下这些序列,以对它们的工作方式获得一些感性认识。在您做了一些测试之后,下面开始添加颜色。

  彩色化

  添加颜色相当容易;第一步是设计不带颜色的提示行。然后,我们所要做的只是添加终端(而不是 bash)可识别的专用转义序列,以使它以彩色显示文本的某些部分。标准 Linux 终端和 X 终端允许您设置前景(文字)颜色和背景颜色,如果需要,还可以启用 “bold” 字符。有八种颜色可供我们选择。

  颜色是通过在 PS1 中添加专用序列来选择的 — 基本上是夹在 “\e["(转义开方括号)和 "m" 之间数字值。如果指定一个以上的数字代码,则用分号将它们分开。下面是一个颜色代码示例:

  "\e[0m"

  如果将数字代码指定为零,则它就会通知终端将前景、背景和加粗设置重置为它们的默认值。您可能会在在提示行结束时使用这个代码,以使您键入的文字成为非彩色的。现在,让我们看一下这些颜色代码。请注意下面的抓屏结果:

  颜色表

  要使用这个表,首先请查找您要使用的颜色,然后查找对应的前景编号 (30-37) 和背景编号 (40-47)。例如,如果您喜欢黑底绿字,则可将编号分别设为 32 和 40。然后打开您的提示行定义并在其中添加适当的颜色代码。下面的定义:

  export PS1="\w> "

  变为:

  export PS1="\e[32;40m\w> "

  到现在为止,提示行尽管已经很不错了,但仍不太完美。在 bash 显示出工作目录以后,我们需要使用 "\e[0m" 序列将颜色重新设置为正常值。

  export PS1="\e[32;40m\w> \e[0m"

  这个定义将显示一个漂亮的绿色提示行,但我们仍需要做一些扫尾工作。我们不需要包括 "40" 这个背景颜色设置,因为它将背景设置为黑色,而黑色是默认颜色。此外,绿色还很暗;我们通过添加一个 "1" 颜色代码来修正这个问题,这将启用更亮的加粗文字。除了这个修改之外,我们还需要将全部非打印字符用专用的 bash 转义序列 "\[" 和 "\]” 括起来。这两个序列通知 bash,被括起来的字符不占用行上的任何空间,这样就使自动换行能够继续正常工作。没有这两个转义序列,尽管您有了一个非常漂亮的提示行,但是如果您键入的命令恰好到达终端的最右端,就会造成显示混乱。下面是我们最终的提示行:

  export PS1=”\[\e[32;1m\]\w> \[\e[0m\]”

  别担心在同一个提示行中使用几种颜色,就像下面这样:

  export PS1=”\[\e[36;1m\]\u@\[\e[32;1m\]\H> \[\e[0m\]”

  Xterm 中的乐趣

  我已说明了如何在提示行中添加信息和颜色,但您还可以更进一步。您可以通过在提示行中添加专用代码来使 X 终端(如 rxvt 或 aterm)的标题栏得到动态更新。您所要做的只是将下面的序列添加到您的 PS1 提示行中:

  ”\e]2;titlebar\a”

  只须用您希望其出现在 xterm 标题栏中的文字替换子串 “titlebar” 即可,现在已经一切就绪了!不必使用静态文字;您可以将 bash 转义序列插入标题栏中。请查看下面这个示例,它将用户名、主机名和当前工作目录显示在标题栏中,并定义了一个简短、明亮的绿色提示行:

  export PS1=”\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] ”

  这就是我在上面的抓屏结果中所用的那个提示行。我喜欢这个提示行,因为它将全部信息显示在标题栏上,而不是显示在终端上,终端对一行可以显示多少字符有限制。顺便提一句,确保用 “\[" 和 "\]” 将您的标题栏序列括起来(因为就终端而言,这个序列是非打印序列)。将大量信息放在标题栏中的问题是,如果您使用非图形终端(如系统控制台),则看不到这些信息。为了解决这个问题,可以在您的 .bashrc 中添加以下几行:

  if [ "$TERM" = "linux" ]

  then

  #we’re on the system console or maybe telnetting in

  export PS1=”\[\e[32;1m\]\u@\H > \[\e[0m\]”

  else

  #we’re not on the console, assume an xterm

  export PS1=”\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] ”

  fi

  这个 bash 条件语句将根据当前的终端设置动态设置提示行。为了获得一致性,您一定希望配置您的 ~/.bash_profile,以便它在启动时搜索 (source) 您的 ~/.bashrc。确保您的 ~/.bash_profile 文件中有以下这样一行:

  source ~/.bashrc

  这样,无论您开启一个登录 shell 还是一个非登录 shell,都会获得同样的提示行。

  好了,您已掌握了提示行魔术。现在尽情享受一下,制作一个漂亮的彩色提示行吧!

Posted in Linux | Tagged , , , , | Leave a comment

linux下的开源备份软件amanda

Amanda是由马里兰大学的James da Silva在1991年所开发的。它是一个复杂的网络备份系统,能够把LAN中的所有计算机备份到一台服务器的磁带驱动器、磁盘或光盘上。Amanda本身并不是备份程序,它其实只是管理其他备份软件的封装软件。它使用系统上的dump和restore命令作为底层的备份软件,同时也能够使用tar命令,针对于windows计算机,Amanda还能够使用smbtar命令来实现备份。
Amanda支持类型广泛的磁带驱动器,并且能够使用磁带驱动器中的硬件压缩功能,或者也可以在数据通过网络之前使用客户机的compress以及gzip命令来压缩备份。其次,Amanda能够使用临时保存磁盘作为备份存档的中间存储媒介,以优化磁带的写入性能并保证在磁带出错时也能备份数据。
下载地址:

http://www.amanda.org

Posted in Linux | Tagged , , | Leave a comment

linux安全防范措施

        伴随着信息化的普及和网络开放性的提高,黑客攻击和安全威胁屡见不鲜,网络安全问题日益突出。如何有效防止这些潜在威胁和恶意攻击呢? 这里引用工商局一句经典的话:要想打假,先学会造假!言下之意,在防守之前先学会如何攻击。现在网络攻击手法层出不穷,这里简单列举常用几个: 1)扫描攻击 先确定好目标主机,利用X-scan,Portscan之类端口扫描软件确定目标开放哪些端口和潜在威胁

2)安全漏洞攻击 比如OS本身的Bug,或缓冲区溢出等

 3)口令入侵 比如暴力破解、Sniffer数据包嗅探、管理员人为疏忽

4)木马程序 也就是利用人的好奇心或欺骗运行木马程序导致任人鱼肉

 5)电子邮件攻击 类似上一个

6)Dos攻击 拒绝服务攻击,消耗系统资源,导致目标主机宕机。像TCP SYN Flood攻击、死亡之ping ….

我们知道了黑客的攻击手法,下面就可以针对的进行防御了。这里我们以linux系统为例来看看常用的一些OS安全措施:

 1、对Root用户密码有效保护 Linux系统下,root用户的权利至高无上!若我们丢失ROOT密码后果不堪想象。因此我们建议root用户设置强密码策略(编辑/etc/pam.d/system-auth文件),并且针对系统引导程序GRUB设置密码保护(防止恶意用户从single用户模式进入强行拆除root密码)

 2、删除一些不必要的特殊用户和组 像lp,shutdown,halt,news,uucp,operator,games

 3、打开密码shadow文件保护功能

#chattr +i /etc/shadow //用户账户密码信息,在近期无账户变动情况下为该文件添加不可更改属性

4、取消不必要的服务 比如不安全的Telnet 远程连接服务

 5、屏蔽系统信息 默认用户连接上Linux主机会显示内核和发行版信息,这样容易给黑客提供方向。

建议屏蔽系统信息 #rm -rf /etc/issue*

 6、禁用ctrl+alt+del关闭系统 Linux下保留该热键,意思是重启系统(有别于windows系统)。为了避免不必要的业务障碍和损失,建议禁用 vi /etc/inittab文件,将下面这行注释掉 #ca::ctrlaltdel:/sbin/shutdown -t3 -r now

7、禁止随意通过su命令将普通用户提升为Root用户 编辑/etc/pam.d/su文件,加入以下内容:

 auth sufficient /lib/security/pam_rootok.so debug

 auth required /lib/security/pam_wheel.so group=wheel

说明:wheel是系统中隐含的组,只有该组的成员才能用su命令切换root身份。比如: gpasswd -a li4 wheel //将li4加入wheel组

 8、iptables防火墙 lINUX内核自带防火墙,具有包过滤和基于状态检测的功能,后续重点介绍。

 9、关注内核最新版本、应用程序强化 uname -a //查看内核版本信息

 10、采取SSH安全连接 安全的远程连接

当然网络安全涉及面广,应用灵活,责任重大。在企业当中网络安全防范应该是分布式的、层次式的!包括设备安全、操作系统安全、应用程序安全。而常用的安全产品有:Firewall、IDS、IPS、CA、防病毒网关等。

Posted in 网络安全 | Tagged , , , , | Leave a comment