每个极客都应该知道的Linux技巧(1)(5)
41:自动执行USB装置
难度:高级
应用程序:hotplug脚本
当添加一个特殊的外设时想要运行一个指定的应用程序?USB hotplug后台进程可以帮你!当有USB装置添加到系统中时,这个服务就会得到通知。对于需要内核驱动的装置,hotplug后台进程将在/etc/hotplug/usb/下调用一个同名的脚本,例如,这里的一个名为usb-storage的脚本。你可以直接在这个脚本的后面添加你自己的命令或者更好的是,在它的最后添加一行来让脚本在别的地方执行)。那么你就可以播放音乐,autosync文件译注:影像文件),搜寻图片或者其他什么的。
对于不依赖于内核驱动的装置,有一个检查表,可以用来匹配USB产品和制造商ID。很多发行版已经设置好去做一些事情,但是你可以依据你的需要定制这些脚本。到http://jphoto.sourceforge.net/ selected=sync去看一个我们能做什么的例子。
42:重命名和调整图片大小
难度:高级
应用程序:bash
很喜欢你的新相机但是不能容忍那个糟糕的名字?你也想要准备发布它们到网上吗?没问题,一个简单的bash脚本真是你所需要的:
- #!/bin/sh
- counter=1
- root=mypict
- resolution=400x300
- for i in `ls -1 $1/*.jpg`; do
- echo "Now working on $i"
- convert -resize $resolution $i ${root}_${counter}.jpg
- counter=`expr $counter + 1`
- done
保存这个脚本到一个名为picturename.sh的文件中,然后用一下命令执行它:
- chmod u+x picturename.sh
然后在你的某个路径下存储它。现在,如果你在directory /path/to/pictdir下有一堆.jpg文件,所有你需要做的就是执行这个:
- picturename.sh /path/to/pictdir
而在当前的目录下你会发现 mypict_1.jpg, mypict_2.jpg之类的,它们是你初始图片调整大小后的版本。你可以根据你的需要改变脚本,或者,你只是期待一个超级简单的图片大小调整,试着看看mogrify命令和它的-geometry参数。
43:安全登出
难度:简单
应用程序:bash
当你在一台共享机器上使用一个控制台,或者甚至只是在你自己的桌面使用控制台,都可能会发现当你登出时,屏幕仍然会显示谁已经登入正在做什么的痕迹。大多数发行版本将会清屏,但是有些不会。你可以通过编辑你的 ~/.bash_logout文件然后增加这个命令来解决问题:
- clear
你也可以添加任何其他的有用命令在这里。
44:传输文件但不使用ftp或者scp
难度:简单
应用程序:netcat
需要传输一个目录给其他服务器但是没有FTP或者SCP使用权?那么这个小技巧将会帮助你使用netcat功能。在目的服务器上运行:
- nc -l -p 1234 | uncompress -c | tar xvfp -
并且在发送服务器上运行:
- tar cfp - /some/dir | compress -c | nc -w 3 [destination] 1234
现在你就可以不需要FTP并且不需要root权限,就能传送文件了。
45:备份一个Debian包清单
难度:简单
应用程序:Debian
如果你正在运行Debian并且找不到你正在运行的包,为你当前正在安装的包做一个备份是非常有用的。你可以运行如下得到一个清单:
- dpkg --get-selections > debianlist.txt
这将把全部的清单放到debianlist.txt中,这样你就可以通过如下代码在不同的计算机上安装相同的包。
- dpkg --set-selections < debianlist.txt
当你复制你的系统到一个新的计算机上时,你要记住你还需要从/etc中复制配置文件。
要实际安装这些选项,使用如下指令:
- apt-get -u dselect-upgrade
46:强化ssh
难度:简单
应用程序:ssh
尽管SSH是一个非常安全的连接服务器的方式,这里还有两个简单的改变,可以让你进一步增强它的安全性。首先,你当然不希望别人直接以root用户登入——他们应该以普通用户登陆,然后使用su命令来转换。你可以在/etc/ssh/ssh_config 文件中通过添加如下代码改变这个件事:
- PermitRootLoginno
现在唯一能得到root特权的方式是通过su,这意味着入侵者现在需要破解两个密码来得到全部的使用权。当你编辑这个文件时,找到这样一行:
- Protocol 2, 1
然后把它改为如下:
- Protocol 2
这将消除最初的SSH协议中的撤销选项,现在被认为是非常易于攻击的。
47:停止回应ping
难度:简单
应用程序:sysctl
ping在找出网络拓扑结构时是非常有用的命令,缺点是它只能做这件事,而且会使得网络上的黑客们更容易瞄准现场服务器。但是你可以告诉Linux忽略所有的ping服务器将不会回应。这里有很多的方法来实现它,但是最好的是使用sysctl。关掉ping回应:
- sysctl -w net.ipv4.icmp_echo_ignore_all=1
想要打开它,使用:
- sysctl -w net.ipv4.icmp_echo_ignore_all=0
关掉ping对你来说是非常严重的,看看接下来的技巧。
48:降低ping速率
难度:简单
应用程序:sysctl
可能你想要保持服务器回复ping的功能,但是又想从被熟知的“ping flood”封包洪流)的攻击中保护自己。那么你要如何完成这一壮举呢?最简单的方法是降低回应ping服务器的速率。它们仍然是有效的,但不会使服务器过载。
- sysctl -w net.ipv4.icmp_echoreply_rate=10
当回复被当作一个信号地址发送时,这将会降低速率。
49:当登出的时候清理KDE
难度:简单
应用程序:bash
在Windows中有很多程序会做一些清除网络缓存,移除临时文件事情。Linux上如果也可以这样是不是很cool呢?使用KDE,你甚至不需要安装任何新的软件,startkde脚本将会自动的执行你放在特殊地方的脚本。
首先,你需要在你的.kde目录下创建一个命令shutdown的目录:
- mkdir /home/username/.kde/shutdown
现在创建一个脚本,用来在关机时执行一些你想要的事情。这里是一个例子:
- #!/bin/bash
- #clear up temp folder
- rm -rf ~/tmp/*
- #clear out caches
- rm -rf ~/.ee/minis/*
- rm -rf ~/.kde/share/cache/http/*
- # delete konqueror form completions
- rm ~/.kde/share/apps/khtml/formcompletions
现在确保你设置了正确的权限:
- chmod ug+x ~/.kde/shutdown/cleanup.sh
或者随便你叫它什么)。可以清除敏感文件,也可以通过将脚本放在你的默认KDE文件夹中有一个名为shutdown的子文件夹里,给所有用户一个全局的关机脚本。找出你的默认KDE目录在哪里,试一下:
- kde-config --path exe
50:无密码的ssh
难度:中等
应用程序:ssh
厌烦了每次登陆你的服务器时都要输入密码?ssh也支持密钥,所以当你登陆桌面时你只能输入你的密码。在你的桌面机器上生成一个密钥对:
- ssh-keygen -t dsa -C your.email@ddress
为你的密钥输入一个口令。这会将密钥放到 ~/.ssh/id_dsa and the public key in ~/.ssh/id_dsa.pub中。现在看看你是否有了一个正在运行的ssh-agent。
- echo $SSH_AGENT_PID
如果安装了ssh-agent,大部分窗口管理器都会自动运行它。如果没有安装,开启一个:
- eval $(ssh-agent)
现在,告诉这个代理你的密钥:
- ssh-add
然后输入你的口令。你需要在每次登陆时都输入口令,如果你是使用X,尝试添加:
- SSH_ASKPASS=ssh-askpass ssh-add
到你的.xsession文件。你可能需要安装ssh-askpass)现在为每个你需要登入的服务器都创建这个目录 ~/.ssh,然后复制这个文件~/.ssh/id_dsa.pub into it as ~/.ssh/authorized_keys 。如果你是手动开启ssh-agent,当你登出时,使用如下代码终止它:
- ssh-agent -k
评论暂时关闭