CentOS 6配置LDAP允许用户自行修改密码

在LDAP中,默认情况下用户无权修改自己的密码,如果用户自行修改密码,会遇到Result: Insufficient access (50)的错误,因此我们需要打开用户修改自己密码的权限。本文基于CentOS 6。

vim /etc/openldap/slapd.conf

修改配置文件,在database config前添加如下内容(注意格式!)

access to attrs=userPassword
	by self write
	by anonymous auth
	by * none

access to * by * read

解释:
by self write表示允许登陆用户修改自己的userPassword属性;
by anonymous auth允许匿名用户(即non-authenticated用户)基于验证目的访问userPassword,而不是其它目的(例如搜索和读取等)
by * none是阻止所有用户访问该用户的userPassword属性

LDAP的访问实体说明:

Table 5.3: Access Entity Specifiers
Specifier Entities
* All, including anonymous and authenticated users
anonymous Anonymous (non-authenticated) users
users Authenticated users
self User associated with target entry
dn[.<basic-style>]=<regex> Users matching a regular expression
dn.<scope-style>=<DN> Users within scope of a DN

然后执行

$ rm -fr /etc/openldap/slapd.d/*
 
$ slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
#测试配置文件语法是否有错误,如果提示testing succeeded则可以进入下一步
 
$ chown -R ldap:ldap /etc/openldap/slapd.d/
$ /etc/init.d/slapd restart

参考文档:
centos 6.4 openldap 2.4 版本 系统认证无法更改密码
OpenLDAP ACL to allow users to change their password
LDAP Access Control

Ubuntu 14.04安装配置VNC桌面

Ubuntu 14.04安装配置VNC桌面的过程,记录一下。由于Ubuntu 14.04采用的新版Gnome对远程桌面支持的非常不友好,因此,网上的解决方案普遍是安装旧版gnome,或者安装xfce桌面,然后再开启VNC桌面。本文介绍的是前一种解决方案。如果想通过安装xfce桌面再开启VNC,可以参考这篇文章

$ sudo apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal vnc4server

$ vim ~/.vnc/xstartup    #新建文件输入以下内容
#!/bin/sh
   
export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
 
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
 
gnome-session &
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &
vncconfig -nowin &

#给予可执行权限

$ sudo chmod +x ~/.vnc/xstartup

然后开启桌面就行了

#开启桌面
$ vnc4server -geometry 1366x768 :1    #也可以把后面的:1省略(冒号也要省略),系统会自动分配

#杀死一个桌面
$ vnc4server -kill :1    #必须自着桌面ID号,这里是:1

如果服务器上有多个用户,可以写个脚本,来纠正大家的问题 继续阅读

配置Linux无需密码使用SSH登陆远程服务器

配置Linux免密码使用SSH登陆远程服务器的过程,记录一下。

两边的服务器,只需要用户名一样即可,不需要密码一样,也不需要uid/gid一样,不需要两个用户处在相同的用户组里。

本地服务器上生成公钥文件

$ ssh-keygen -t rsa    #连续三次回车,即在本地生成了公钥和私钥,不设置密码

将生成的.ssh/id_rsa.pub文件拷贝到远程服务器上。

远程服务器上导入公钥文件
将本地生成的id_rsa.pub拷贝到你想无密码登录的远程服务器的~/.ssh目录下,然后在远程服务器上作如下设置。

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh                    #必需设置,否则自动登录将不会生效
$ chmod 600 ~/.ssh/authorized_keys     #必需设置,否则自动登录将不会生效

然后,再次从本地服务器登陆远程服务器时,你就会发现服务器不会再向你询问密码了。

将id_rsa.pub公钥文件到服务器上并导入的过程可以用ssh-copy-id命令来完成,下面是命令使用列表

$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
$ ssh-copy-id -p 22 -i ~/.ssh/id_rsa.pub user@server

===============================================

补充:

配置Linux无须密码使用SSH登陆Windows服务器的过程,也记录一下,很显然,Windows方面需要安装WinSSHD工具,这里我们安装的是Bitvise SSH Server。

两个系统里,只要用户名一样即可,无需UID/GID一致,也不需要group name一样。

1,在Linux系统下生成SSH Key,同样需要将生成的.ssh/id_rsa.pub文件拷贝到Windows系统里。

2,在WinSSHD工具里导入公钥,参考下方图片
配置Linux无须密码使用SSH登陆远程服务器

配置Linux无须密码使用SSH登陆远程服务器

Port Forwarding & Port Triggering

发现一篇关于“端口触发”(Port Triggering)很有意思的的文章,转载过来记录一下。

在使用NAT的网络中,内部终端的IP地址为私网地址,发出去的IP包在NAT网关处进行地址转换,以公网地址与外部联系。在转换过程中,网关建立映射表,并维护对应连接的状态。当来自公网的包返回时,按照目的地址查找映射表,找到对应的私网地址,然后再次转换后发送给内部终端。这样,映射表中条目的增加是由内部发往外部的数据流触发的。因此,如果外部想直接访问内部是不可能的。

在实际应用中,被NAT网关隐藏起来的内网很可能架设FTP服务器、HTTP服务器、邮件服务器等等,那么如何从外部访问这些服务器呢?Port Forwarding提供了这样的机制。Port Forwarding根据来自公网的IP包的端口,将其转发到指定的内部IP地址上。例如,一个NAT网关的WAN侧地址为123.4.5.6,内部架设了一台FTP服务器,地址为192.168.0.8,端口21,及一台HTTP服务器,地址为192.168.0.9,端口8080。NAT网关(可能是路由器)上设置Port Forwarding规则:

路由器的WAN口inbound为流入,outbound为流出。

若Inbound的IP包目的地址为123.4.5.6,端口21,则将其地址转换为192.168.0.8,端口21,然后向内网转发;若Inbound的IP包目的地址为123.4.5.6,端口80,则将其地址转换为192.168.0.9,端口8080,然后向内网转发。

这样,通过设置Port Forwarding,从外网可以直接访问到内网的服务器。这里还有一个好处,对于某些linux服务器,只有root权限才可开放端口号小于1024的服务,而使用root帐号具有一定的风险,因此如上例,可设置内网HTTP服务器端口为8080,当外部采用常规的HTTP 80端口访问时,会映射到8080端口。

Port Triggering,是指当Outbound的流来自指定的内网端口(triggered port),自动打开网关WAN口的指定端口(forwarded port),并将指向forwarded ports的流转发到内网触发triggered ports的终端上。这里举一个例子,当内网的某机器(192.168.0.8)试图访问公网某IP(8.8.8.8)的某端口时,则自动打开WAN口(123.4.5.6)的指定端口(forwarded port)。这样,公网上的任意计算机(例如8.8.8.8)就可以通过WAN口(123.4.5.6)的指定端口访问位于内网的机器。这样的应用有时候会用到,最典型的就是XDMCP协议。 继续阅读

Open-Wrt设置PPPoE+永久修改网卡MAC地址

Open-Wrt永久修改Mac地址的过程,这里记录一下。

1,打开SSH远程管理
点击”System”-“Administration”,找到下面的”SSH Access”项(Dropbear就是Open-Wrt使用的SSH-Server程序),将下面对应的interface打开即可。这里我打开的是lan口。注意勾选下面的”Password authentication”和”Allow root logins with password”,然后”Save & Apply”;

2,设置PPPoE(宽带帐号)
之所以要先设置好网络,是因为如果先通过SSH修改网卡配置文件,然后再在Web页面设置PPPoE的话,会把先前网卡配置文件覆盖掉。所以需要先设置PPPoE。
点击”Network”-“Interfaces”,在下面找到Wan口,点击右边的”Edit”,将”Protocol”设置为”PPPoE”,下方填入帐号密码。如果知道MTU值,在”Advanced Settings”里将”Override MTU”改为想要的MTU值。其它的基本不用动,点击”Save & Apply”。

简单优化一下:
点击”Network”-“Firewall”,在下面的”Zones”里找到”Lan=>Wan”这一条,勾选右边的”MSS clamping”。该设置能普遍解决全国各地的电信运营商MTU值设置不当,导致手机WIFI连接时,QQ、微信等发不出去图片的问题。

3,永久修改网卡MAC地址
通过SSH连接上去,作如下修改

vi /etc/config/network
config interface 'wan'
        option ifname 'eth1'
        option _orig_ifname 'eth1'
        option _orig_bridge 'false'
        option proto 'pppoe'
        option username '宽带帐号'
        option password '宽带密码'
        option mtu '1488'
        option 'macaddr' '08:10:76:23:8B:19'  #添加这一行

vi /etc/rc.local  #添加如下几行
ifconfig eth1 down
ifconfig eth1 hw ether 08:10:76:23:8B:19
ifconfig eth1 up
exit 0

提示一下,如果要用WinSCP向Open-Wrt传输文件,文件协议需要选择SCP(不要选择默认的SFTP)。

配置DD-WRT的PPTP客户端

在DD-WRT上配置PPTP客户端的过程,记录一下,别问我为什么要干这个,我是为了跳过长城。该文章在小日本寄来的FC2免费路由器(对应型号:Buffalo WHR-G301N)上测试成功,刷的是2014.12.22号的DD-WRT版本

建议将DD-WRT升级至最新版,本文基于DD-WRT v24-sp2 (12/22/14) std版本配置成功。先前找个一个2013.11.20号版本的DD-WRT,结果总是配置失败,于是将DD-WRT升级至最新版,竟然一次成功。

1,将DDW-RT的防火墙和DMZ功能关闭
点击”Security”-“Firewall”,将”SPI Firewall”设置为”Disable”;
点击”NAT/QoS”-“DMZ”,将”use DMZ”设置为”Disable”;
点击”Services”-“Services”,将”SSHd”、”SSH TCP Forwarding”、”Password Login”全都设置为”Enable”

2,配置PPTP客户端
点击”Services”-“VPN”,找到”PPTP Client”,对其进行如下设置:
配置DD-WRT的PPTP客户端
其中,”MPPE Encryption”需要填写成”mppe required,no40,no56,stateless”,然后点击”Save”

3,配置开机自启动
点击”Administration”-“Commands”,将如下代码帖至”Commands”框内:

sleep 90
OLDGW=$(nvram get wan_gateway)
VPNSRV=$(nvram get pptpd_client_srvip)
VPNSRVSUB=$(nvram get pptpd_client_srvsub)
PPTPDEV=$(route -n | grep ^${VPNSRVSUB%.[0-9]*} | awk '{print $NF}' | head -n 1)
VPNGW=$(ifconfig $PPTPDEV | grep -Eo "P-t-P:([0-9.]+)" | cut -d: -f2)
route add -host $VPNSRV gw $OLDGW
route del default gw $OLDGW
route add default gw $VPNGW
ip route add 8.8.8.8 via $VPNGW
ip route add 8.8.4.4 via $VPNGW

然后点击下方的”Save Startup”

4,检测设置成功与否
在上一步的”Commands”页面,在下方的”Commands”框内输入reboot,然后点击下方的”Run Commands”,此时路由器会重启。
使用SSH连接上路由器,输入ps | grep pptp命令并回车,如果能看到如下进程,说明VPN已配置成功:
配置DD-WRT的PPTP客户端
有的DD-WRT版本不太稳定,SSH如果连接不上,可以将本地的SSH客户端(例如Xshell等)的登陆协议改为Telnet就可以登陆了。

补充说明:
1,第一次设置完成后,我并没有重启,导致笔记本地连接无线的时候提示连接到网络的时间超过了正常的时间,手机上也显示“正在分配IP地址”,但一直无法连接上。于是我找到”Setup”-“Basic Setup”,将”Use DNSMasq for DHCP”、”Use DNSMasq for DNS”全部取消(不启用),重启以后发现笔记本、手机均可以正常连接了。

2,经测试,在设置PPTP客户端时,MTU和MRU无须作特殊修改,保持默认的1450依然可以正常连接。

===================================
2015.02.04补充:
又换了一个路由器,刷了很多个版本的DD-WRT,用此方法,均不能成功连接。由此可见,DD-WRT非常不稳定,不建议新手使用。新手们还是去折腾Open-Wrt吧。

解决某些DD-WRT版本PPTP客户端拔号不正常的办法
在WEB界面,打开JFFS支持(详细介绍可以参考这篇文章):
点击”Administration”-“Management”-“JFFS2 Support”,勾选下方的”JFFS2″,不要勾选“Clean JFFS2″。然后”Save”,并且”Apply Settings”(即一定要重启,否则路由器上的/jffs分区不可写);
然后再参考这篇文章

补上一个DD-WRT永久修改MAC的方法:

nvram set wan_hwaddr=08:10:76:23:8B:1A
nvram set lan_hwaddr=08:10:76:23:8B:1C
nvram set et0macaddr=08:10:76:23:8B:1C
nvram set et0macaddr_safe=08:10:76:23:8B:1C
nvram commit   #等待10秒再运行下一条
reboot

索尼任意型号的手机制作ftf格式的固件+强刷教程

一,准备环境
1,安装JRE8.0(Java Runtime Enviroment 8.0,下载地址);
2,安装FlashTool(官网百度云下载地址),这里我们默认安装到C:\Flashtool目录;
3,安装C:\Flashtool\drivers\Flashtool-drivers.exe,安装界面需要勾选“Flashmode Drivers”、“Fastboot Drivers”、“Xperia 你的手机型号 driver”这三样;

二,下载固件
XDA上某大神制作了专门的索尼固件下载工具,名为Xperia Firmware Downloader & Checker,可以下载索尼全系列产品的固件。截止本文发出时,最新的版本是V3.1。

1,下载Xperia Firmware Downloader & Checker V3.1版(百度云下载地址XDA下载地址
2,解压,运行其中的XperiFirm.exe,界面如下图
索尼任意型号的手机制作ftf格式的固件+强刷教程 继续阅读