‘Linux/GNU’ 分类下的文章
2009/1223

Ftp批量上传下载的Shell脚本, Linux Mac适用

分类:Linux/GNU | 发表评论 | 点击量:3915次

好久没写技术类文章啦,一直忙着实习。今天杭州阳光普照,心情很好,来点低技术含量的,分享两个脚本,都是在公司里经常用的。

FTP批量上传,ftput.sh:

#!/bin/bash
for filename in $@
do
ftp -nv 192.168.130.2 <<!
user username password
prompt off
bin
mput $filename
close
!
done

FTP批量下载,ftpget.sh

#!/bin/bash
for filename in $@
do
ftp -nv 192.168.130.2 <<!
user username password
prompt off
bin
mget $filename
close
!
done

适用方法:将代码修改下(FTP地址和用户名密码修改一下)保存成ftput.sh,把要上传的文件作为脚本参数执行之即可。如

sh ./ftput.sh *.jpg 123.txt config.xml

就是把所有jpg文件和23.txt config.xml两个文件上传到ftp。

[相关文章]
2009/0428

Linux可以完美运行影音风暴、PPlive、搜狗输入法哦

分类:Linux/GNU | 发表评论(8 条评论) | 点击量:1193次

Linux可以完美运行影音风暴、PPlive、搜狗输入法哦~

神奇吧~~?

有图有真相

影音风暴

screanshot.jpg

PPlive、搜狗输入法

creanshot3.jpg [相关文章]
2008/1229

linux使普通用户获得root权限的vmsplice系统调用漏洞分析

分类:Linux/GNU | 发表评论(1 条评论) | 点击量:709次
linux使普通用户获得root权限的vmsplice系统调用漏洞分析

2008期末课程小论文 之一

《linux使普通用户获得root权限的vmsplice系统调用漏洞分析》

vmsplice系统调用是linux内核2.6.17第一次引入的,随后被发现存在能让普通用户提升到root权限的漏洞。该漏洞影响的版本网络上笼统的说法是:2.6.17-2.6.24.1,实际上更确切的说是:2.6.17- 2.6.22.17,2.6.23-2.6.23.15 和 2.6.24-2.6.24.1.

关于这个漏洞,国内很少有人写过什么原创性的文章进行介绍,因为上研究生操作系统课的课程报告就是做这个,所以把它放上来。漏洞虽然已经补上,但学习其机理,还是比较有好处,有意思的。

一、预备知识

1. 本文的一些约定

这个颜色的代码来自攻击程序
这个颜色的代码来自内核
这个颜色表示重要的地方,或者安装程序逻辑,下一步要进入的函数
所提到的攻击代码是本文附带的exp.c

2. vmsplice()介绍

原型:long vmsplice(int fd, const struct iovec *iov, unsigned long nr_segs, unsigned int flags);
其中:

struct iovec
{
void __user *iov_base;
__kernel_size_t iov_len;
};

这个系统调用将用户空间的内存映射到内核空间,从而避免了实际的内存写操作,提高了系统效率。这个功能的是主要是通过fs/splice.c的do_vmsplice()来实现。

3. 有关Page的常量

#define PAGE_SHIFT 12
#define PAGE_SIZE (1UL << PAGE_SHIFT)
/*1UL:32位的unsigned int 1,左移12位,PAGE_SIZE=0×1000*/
#define PAGE_MASK (~(PAGE_SIZE-1))
/*PAGE_MASK=0×000*/

二、Splice系统调用漏洞考古

2006 Jun 18
在发布的Linux kernel 2.6.17中引入vmsplice(),用于提高性能。
没有人知道,对应的fs/splice.c中的get_iovec_page_array()函数存在漏洞。

[相关文章]
2008/1027

Shell中的export & sh & source

分类:Linux/GNU | 发表评论 | 点击量:2255次

今天做了几个实验总算把export+变量的用法给弄清楚了,过程不说,留下结果以备忘:

1. 当进程创建一个字进程时候,父进程并不会将普通变量的值传递给它的子进程。

而export就是解决这个问题用的。在父进程中export A 后,在子进程中就可以使用变量A了。

2. sh+脚本:重新建立一个子shell执行脚本里面的语句,该子shell继承父shell的变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。

可以这么理解:打开一个终端程序 = sh = 执行bash命令

3. source+脚本:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。

所以,假设one.sh里面的内容是:export test=123 ;two.sh里面的内容是:test=123 。

那么,sh ./one.sh 在效果上等同于 source two.sh

[相关文章]
2008/0831

synergy-两台电脑共享一套鼠标键盘-Linux&windows详细教程

分类:Linux/GNU | 发表评论 | 点击量:884次

前些天,我把自己的台式电脑搬到实验室,与实验室里分配给我的电脑一起用。为了方便使用,我尝试了下用软件的方法实现两台电脑公用一套鼠标键盘,并且共享剪切板。本着分享的精神,写下心得,希望对需要的人有所帮助。

首先要说明的是我这两台都是装了Linux+windows xp的双系统的,目前,无论这两台机子各自开的是哪个系统,从出现登陆界面开始都能实现共享鼠键(比如,在鼠标当前在右边这台显示器上,将鼠标向左边移动,碰到屏幕左边边界再过去一点就到左边屏幕了,鼠标在哪个屏幕,键盘的输入也就针对那个屏幕),并且在一台电脑copy的文字能直接黏贴到另外一台电脑,但不能用这种Ctrl+C Ctrl+V的方式复制文件。

SNV31629

原理

synergy是个开源的软件,有Linux, Mac, windows三个版本,要想实现共享鼠标键盘,必须在所有机器上都安装这个软件,并进行相应的配置,有一台唯一的主机作为服务器端,其他主机作为客户端,要共享的那套鼠标键盘链接到服务器端。所有主机都必须连入同一个局域网,synergy会通过局域网交换鼠标键盘的输入信息,以实现其他主机共享使用这套鼠标键盘。

安装

[相关文章]
2008/0505

《full circl》简体中文第11期发布了,很开心

分类:Linux/GNU | 发表评论 | 点击量:1576次

下面红色字那篇我翻译的哦,看到我翻译的东西能被别人看到,很有满足感。

show出贴图哈哈:

full circle

本期内容摘要

  • Linux Mint 和 Ubuntu 比较
  • 如何在 Ubuntu 中使用 TrueCrypt 来保护重要的信息
  • 关于 LaTex 的入门介绍
  • 怎样架设自己的服务器 (之三)
  • iPod Classic + Amarok ,该文详细描述了在 Amarok 中使用 iPod Classic 的过程
  • 此外,本期杂志还对 Lenovo 3000 C200 笔记本电脑进行了评测。

下载地址:

[相关文章]
2008/0411

同时使用中文和英文man(shell帮助)

分类:Linux/GNU | 发表评论 | 点击量:1479次

我用的是英文版ubuntu,有时候用man查看shell命令的用法时候由于本上里面的参数含义不懂,还要用非母语看,理解起来非常吃力。如果干脆用中 文版又担心翻译得不到位,比较英文的权威性高点,同时多看英文man肯定会比只看中文的要好的。于是很矛盾了,昨天google了下,搞定了,很方便,分 享下。
sudo apt-get install manpages-zh       安装中文版男人
其实这样就已经可以使用了,比如查看中文版 ls 命令的man
man -M /usr/share/man/zh_CN ls 既可
只是这样稍显麻烦,给man -M /usr/share/man/zh_CN 建立个别名吧:
vim ./.bashrc
把下面这行添加进去就OK啦。
alias cman=’man -M /usr/share/man/zh_CN’
同样的道理可以添加
alias ll=’ls -l’
常用的比较常的命令+参数都可以这么搞

[相关文章]
2008/0408

7个例子快速入门shell通配符

分类:Linux/GNU | 发表评论 | 点击量:1410次


代表0个或多个字符

代表一个字符
例子1:
ls 11*2?3      显示11开头的接着是若干个字符,最后是2加一个字符和3结束的文件

[]
可以理解为一个字符,与?的区别是[]里面的内容限定了这个字符的范围
例子2:
[Cc]hange[Ll]og
将与 Changelog、ChangeLog、changeLog 以及 changelog 匹配。在需要大小写匹配的时候,使用括弧通配符很有用。
例子3:
ls /etc/[0-9]* 将列出 /etc 中以数字开头的所有文件。
ls /tmp/[A-Za-z]* 将列出 /tmp 中以大写字母或小写字母开头的所有文件。

[相关文章]
2008/0403

从ubuntu发行版代号到野生动物保护

分类:Linux/GNU, 杂杂的文 | 发表评论 | 点击量:1218次
开发代号 中文 发布版本
Intrepid Ibex 勇敢的野山羊 8.10
Hardy Heron 坚强的苍鹭 8.04
Gutsy Gibbon 胆大的长臂猿 7.10
Feisty Fawn 烦躁不安的小鹿 7.04
Edgy Eft 尖利的小蜥蜴 6.10
Dapper Drake 伶俐的公鸡 6.06
Breezy Badger 活泼的獾 5.10
Hoary Hedgehog 白发的刺猬 5.04
Warty Warthog 多疣的疣猪 4.10
[相关文章]
2008/0303

设置SCIM输入法默认输入状态为英文

分类:Linux/GNU | 发表评论 | 点击量:1533次

默认是一打开就是中文的,大多时候是需要输入英文的,需要按shift很麻烦.可以修改.
sudo ~/.scim/config
找到/FrontEnd/IMOpenedByDefault = true 改成false
重新加载设置一下就OK了.

[相关文章]