浏览模式: 标准 | 列表全部文章

Redhat/CentOS下安装freenx

同事推荐谁nomachine nx 不错,记录下安装使用过程。

freenx是linux下远程X访问的一个服务端程序的开源实现
项目地址:http://freenx.berlios.de

redhat/centOS下Server端安装相对简单
yum    -y    groupinstall    "KDE    (K    Desktop    Environment)"    --nogpgcheck(剽窃某家伙的,安装全套kde环境)

yum install freenx nx

客户端直接去nomachine nx官方下载他的客户端就可以了:
http://64.34.161.181/download/3.4.0/Windows/nxclient-3.4.0-5.exe

下载安装

接下来有个关键的地方,需要下载服务器上nx用户下的client.id_dsa.key到客户端进行导入
大致的原因如下:
nxclient通过key认证登录到服务器的nx用户(安装过程自动添加)上。所以本地需要一个私钥来完成这个认证。默认安装freenx的时候会生成一对密钥,公钥已经放入/var/lib/nxserver/home/.ssh/authorized_keys2中,我们需要做的只是把这里面的私钥导入客户端:
configure - general - key - import  选择下载回来的client.id_dsa.key导入即可。
注:如果不行请检查/etc/shadow中的nx用户是否被锁定,如果锁定请解锁即可。

完成后直接连接,除了默认的KDE比较挫点,别的貌似还不错

[zz]linux中的信号量详解

工作需要用到这个,顺便收集一份列表以备后查。

» 阅读全文

fvck urllib

Python的比较雷人的urllib

» 阅读全文

用山寨的方式让twiki支持客户端证书登录

twiki官方站上有一个插件:X509UserPlugin,看说明是用来支持证书登录的。不过鼓捣了半天还是没成效,直接报错说viewauth没权限。几天还是没啥进展,直接火大,决定山寨解决。

首先配置twiki的服务器支持SSL,用SSL来获取客户端证书并验证客户端证书的有效性。

与twiki相关配置如下:

twiki.conf:


SSLCACertificateFile /etc/pki/tls/certs/test.crt

SSLOptions 
+FakeBasicAuth +StrictRequire +OptRenegotiate

SSLVerifyClient 
require

SSLVerifydepth 1

其中 test.crt为签发客户端证书的有效根证书,用于在ssl中验证客户端证书的有效性。

然后就是twiki本身。由于twiki是后台使用perl实现的无数据库wiki,本身的用户权限关系比较简单,直接是用当前的用户名和保存的权限列表比较,在里面则有权限,所以只需要验证的时候判断是来自证书的用户名并且ssl证书验证成功(废话一句,ssl通过数据才会到达程序处理),则跳过密码验证即可。

twiki的登录管理为:./lib/TWiki/LoginManager, 在此目录下新建一个perl的LoginManager 就可以通过https://twikisite/bin/configure 设置登录使用该LoginManager进行。

这里因为希望实现证书登录和密码登录并存,使用原生的TemplateLogin.pm复制一份进行修改满足需要(cp TemplateLogin.pm X509TemplateLogin.pm & 新文件的权限和属主与原文件相同)。

里面修改的关键代码如下:

---+ package TWiki::LoginManager::X509TemplateLogin package TWiki::LoginManager::X509TemplateLogin; my $origurl $query->param'origurl' );

# 以下为修改部分,判断是否为证书登录,是则用户名取用证书中的用户名:DN_CN

my $loginName "";

if(
$ENV{'SSL_CLIENT_VERIFY'} && $ENV{'SSL_CLIENT_VERIFY'eq 'SUCCESS'){

     
$loginName $ENV{'SSL_CLIENT_S_DN_CN'};

}else{

     
$loginName $query->param'username' );

}
if( $loginName ) {

#以下为修改部分,判断如果是证书登录,则跳过密码验证并且认证结果为成功。

#由于ssl已经确认了证书的合法性,此处不需要重复进行证书合法性验证。

my $validation;

if(
$ENV{'SSL_CLIENT_VERIFY'} && $ENV{'SSL_CLIENT_VERIFY'eq 'SUCCESS'){

         
$validation 1;

}else{

         
$validation $users->checkPassword$loginName$loginPass );

         
$error $users->passwordError();

}

然后去http://twikisite/bin/configure 中修改 security setup中的LoginManager为TWiki::LoginManager::X509TemplateLogin,保存。

使用方式:

使用https://twikisite/ 进行访问,如果本地有合法的客户端证书,则点击登录按钮后直接用证书身份登入wiki.权限设置使用证书中的DN_CN名作为用户名即可。

不足:如果希望使用原有的用户名密码登录。目前只能通过http://twikisite/访问进行。暂时还没有更好的想法。

有不足之处或者对证书和密码并存登录twiki有更好的想法,请诸位多多留言指点。。

python类的两种静态方法申明方式

一种看起来比较优雅:
e.g.
12         @staticmethod

13         def init
(host,databasename):

14             return pg.connect(dbname=''+databasename+'',host=''+host+'''')

即在方法名前加入@staticmethod做修饰即可,不过这种方式仅支持python2.4及以上的版本

在2.3中,则要用一种比较猥琐的写法了
e.g.
13         def init(host,databasename):

14             return pg.connect(dbname=''+databasename+'',host=''+host+'''')

15         init staticmethod(init)

即通过手工的用staticmethod函数对原先的自定义函数进行一个包装来进行。

BT4 硬盘启动initrd.gz更新(bugfix)

去除了启动脚本中无用的41apt_cdrom
这个脚本在/cdrom为非光驱的mount的时候没有进行判断,
在使用光盘启动的时候不会有问题,修改为硬盘镜像启动后,
某些时候会导致系统启动过程陷入死循环的等待中。
偷懒没做修改,直接去除,主要是因为更新是的话也是走网络,没有CDROM中读取源。
修正后解决启动时出现死循环黑屏的问题。
详细使用请参考

修改initrd实现BackTrack 4 Pre 从硬盘ISO文件启动

initrd.gz

阿里巴巴集团漏洞报告邮箱

广而告之:

我们集团设计了一个专门接收漏洞报告的邮箱:

security@service.alibaba.com

如果有任何关于我们集团(阿里巴巴,淘宝,支付宝,雅虎口碑,阿里软件,阿里妈妈)安全方面的漏洞,请通知我们。我们将确认后附赠精美小礼品一份,非常感谢您对我们的帮助和支持。

Records:21412345678910»