#apt-get install netselect-apt
#mv sources.list sources.list.bak //backup
#man netselect-apt //获取详细的用方?br />
# netselect-apt -s testing
//下蝲http: //www.debian.org/mirror/list-full文g,q根据其内容试|络,生成sources.list
也可下载http://www.debian.org/mirror/list-full手动下蝲到本? q同q参?-i 指定
同样可以通过 -o 参数指定输出文g而不是默认的sources.list
/usr/local/mysql/lib/mysql |
wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.9.tar.gz |
wget http://www.castaglia.org/proftpd/modules/proftpd-mod-quotatab-1.2.11.tar.gz |
tar zvxf proftpd-1.2.9.tar.gz tar zvxf proftpd-mod-quotatab-1.2.11.tar.gz cp mod_quotatab/*.c proftpd-1.2.9/contrib/ cp mod_quotatab/*.h proftpd-1.2.9/contrib/ |
./configure " --prefix=/usr/local/proftpd " --with-modules=mod_sql:mod_sql_mysql:mod_quotatab" :mod_quotatab_sql " --with-includes=/usr/local/mysql/include/mysql " --with-libraries=/usr/local/mysql/lib/mysql make make install |
/usr/local/proftpd/sbin/proftpd |
vi /usr/local/proftpd/etc/proftpd.conf |
AllowRetrieveRestart on AllowStoreRestart on |
cp proftpd-1.2.9/contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd |
chmod 755 /etc/rc.d/init.d/proftpd |
/usr/local/proftpd/sbin/ftpshut |
ftpshut [ -l min ] [ -d min ] time [ warning-message ... ] |
ftpshut -l 20 -d 10 +30 "FTP Server Will shutdown at time" |
ftpshut -R |
Q全局讄 讄目1 参数1 讄目2 参数2 Q某个目录的讄 <Directory "路径?> ... ... </Directory> Q关于匿名用L讄 <Anonymous "匿名登陆的目?> ... ... <Limit 限制动作> ... ... </Limit> </Anonymous> |
CMDQChange Working Directory 改变目录 MKDQMaKe Directory 建立目录的权?br /> RNFRQ?ReName FRom 更改目录名的权限 DELEQDELEte 删除文g的权?br /> RMDQReMove Directory 删除目录的权?br /> RETRQRETRieve 从服务端下蝲到客L的权?br /> STORQSTORe 从客L上传到服务端的权?br /> READQ可ȝ权限Q不包括列目录的权限Q相当于RETRQSTAT{?br /> WRITEQ写文g或者目录的权限Q包括MKD和RMD DIRSQ是否允许列目录Q相当于LISTQNLST{权限,q是比较实用?br /> ALLQ所有权?br /> LOGINQ是否允许登陆的权限 |
AllowUser 针对某个用户允许的Limit DenyUser 针对某个用户止的Limit AllowGroup 针对某个用户l允许的Limit DenyGroup 针对某个用户l禁止的Limit AllowAll 针对所有用L允许的Limit DenyAll 针对所有用L止的Limit |
TransferRate STOR|RETR 速度QKbytes/sQ?user 使用?/td> |
group add ftpusers useradd -d /home/kaoyan -g ftpusers -s /bin/fales kaoyan useradd -d /home/kaoyan -g ftpusers -s /bin/fales upload chown -R kaoyan:upload /home/kaoyan chmod -R 775 /home/kaoyan |
ServerName "Frank's FTP Server" ServerType standalone DefaultServer on Port 21 Umask 022 MaxInstances 30 #最多有30个proftpd的PID User nobody Group nobody TimeoutStalled 10 MaxClients 10 #最多允?0个用户在U?br /> MaxClientsPerHost 1 "对不P一个IP只允怸个连? AllowStoreRestart on #允许断点l传Q上传)Q断点箋l(下蝲Q是默认支持的,不用讄 DisplayLogin welcome.msg #Ƣ迎词文?br /> ServerIdent off #屏蔽服务器版本信?br /> DefaultRoot ~ ftpusers #讄ftpusersl只能访问自q目录 <Directory /> AllowOverwrite on </Directory> <Directory /home/kaoyan> <Limit WRITE> #不允许写 DenyUser kaoyan </Limit> <Limit RMD RNFR DELE RETR> #不允许删除,改名Q下?br /> DenyUser upload </Limit> TransferRate RETR 50 user kaoyan TransferRate STOR 100 user upload </Directory> |
<Anonymous ~kaoyan> ... ... </Anonymous> <><Anonymous ~upload> ... ... </Anonymous> |
%T 目前的时? %F 所在硬盘剩下的定w %C 目前所在的目录 %R Client 端的L名称 %L Server 端的L名称 %U 使用者帐户名U? %M 最大允许连接h? %N 目前的服务器q接人数 %E FTP服务器管理员?email %i 本次上传的文件数? %o 本次下蝲的文件数? %t 本次上传+下蝲的文件数?/td> |
Ƣ迎?UQ?q是Frank的测试FTP服务器; 目前旉是:%TQ?br /> 本服务器最多允?M个用戯接数Q?br /> 目前服务器上已有%N个用戯接数Q?br /> 目前你所在的目录?C; 目录所在的盘q剩?F字节?/td> |
AllowForeignAddress on PassivePorts 49152 65534 #端口也可自己指定喜欢?/td> |
RootLogin on |
<Limit LOGIN> Order deny,allow Deny from 10.1.1. Allow from all </Limit> |
<VirtualHost 210.51.0.124> ServerName "Frank FTP Server" Port 5555 ... <Directory 目录> ... <Limit 动作> ... </Limit> ... </Directory> </VirtualHost> |
touch /home/kaoyan/ratio.dat touch /home/kaoyan/ratio.tmp chmod -R 666 /home/kaoyan |
Ratios on SaveRatios on RatioFile /home/kaoyan/ratio.dat RatioTempFile /home/kaoyan/ratio.tmp |
UserRatio ftp1 0 0 2 1000 #UserRatio "使用者帐? fileratio filequota byteratio bytequota # fileratio Q以文g为基的比率,通常不限Ӟ故ؓ 0 # filequota Q预讄能下载多文Ӟ不限制时?0 # byteratio Q就是上?下蝲的比?如果数字?Q表C?:2 # bytequota Q预讄能下载多?KBytes 的文?br /> #上面讄的就?Q?的比率,默认只允怸?M的文?/td> |
groupadd -g 5500 ftpgroup adduser -u 5500 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser |
mysql mysql -uroot -ppassword create database ftpdb grant select, update on ftpdb.* to proftpd@localhost identified by 'password' use ftpdb CREATE TABLE `ftpgroup` ( `groupname` varchar(16) NOT NULL default '', `gid` smallint(6) NOT NULL default '5500', `members` varchar(16) NOT NULL default '', KEY `groupname` (`groupname`) ) TYPE=MyISAM COMMENT='ProFTP group table'; INSERT INTO `ftpgroup` VALUES ('ftpgroup', 5500, 'ftpuser'); CREATE TABLE `ftpquotalimits` ( `name` varchar(30) default NULL, `quota_type` enum('user','group','class','all') NOT NULL default 'user', `per_session` enum('false','true') NOT NULL default 'false', `limit_type` enum('soft','hard') NOT NULL default 'soft', `bytes_in_avail` float NOT NULL default '0', `bytes_out_avail` float NOT NULL default '0', `bytes_xfer_avail` float NOT NULL default '0', `files_in_avail` int(10) unsigned NOT NULL default '0', `files_out_avail` int(10) unsigned NOT NULL default '0', `files_xfer_avail` int(10) unsigned NOT NULL default '0' ) TYPE=MyISAM; CREATE TABLE `ftpquotatallies` ( `name` varchar(30) NOT NULL default '', `quota_type` enum('user','group','class','all') NOT NULL default 'user', `bytes_in_used` float NOT NULL default '0', `bytes_out_used` float NOT NULL default '0', `bytes_xfer_used` float NOT NULL default '0', `files_in_used` int(10) unsigned NOT NULL default '0', `files_out_used` int(10) unsigned NOT NULL default '0', `files_xfer_used` int(10) unsigned NOT NULL default '0' ) TYPE=MyISAM; CREATE TABLE `ftpuser` ( `id` int(10) unsigned NOT NULL auto_increment, `userid` varchar(32) NOT NULL default '', `passwd` varchar(32) NOT NULL default '', `uid` smallint(6) NOT NULL default '5500', `gid` smallint(6) NOT NULL default '5500', `homedir` varchar(255) NOT NULL default '', `shell` varchar(16) NOT NULL default '/sbin/nologin', `count` int(11) NOT NULL default '0', `accessed` datetime NOT NULL default '0000-00-00 00:00:00', `modified` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) TYPE=MyISAM COMMENT='ProFTP user table'; |
ServerName "Frank's FTP Server" ServerType standalone DefaultServer on Port 21 Umask 022 MaxInstances 30 MaxLoginAttempts 3 User nobody Group nobody MaxHostsPerUser 1 "Sorry, you may not connect more than one time." MaxClientsPerUser 2 "Only one such user at a time." MaxClientsPerHost 3 "Sorry, you may not connect more than one time." RootLogin off RequireValidShell off TimeoutStalled 10 MaxClients 10 AllowForeignAddress on AllowStoreRestart on ServerIdent off DefaultRoot ~ ftpgroup SQLAuthTypes Backend Plaintext #Backend表示用户认证方式为MySQL数据库的认证方式 #Plaintext表示明文认证方式Q排在最前面的ؓ最先用的方式 SQLAuthenticate users* groups* # databasename@host database_user user_password SQLConnectInfo ftpdb@localhost proftpd password SQLUserInfo ftpuser userid passwd uid gid homedir shell SQLGroupInfo ftpgroup groupname gid members SQLHomedirOnDemand on #如果用户ȝ录不存在Q则pȝ会根据此用户在用h据表中的homedir字段的值新Z个目?br /> # Update count every time user logs in SQLLog PASS updatecount SQLNamedQuery updatecount UPDATE "count=count+1,accessed=now() WHERE userid='%u'" ftpuser # Update modified everytime user uploads or deletes a file SQLLog STOR,DELE modified SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser QuotaEngine on QuotaDirectoryTally on QuotaDisplayUnits Mb QuotaShowQuotas on QuotaLog "/var/log/quota" SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avai l, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'" SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_i n_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'" SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_ out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquota tallies SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies QuotaLimitTable sql:/get-quota-limit QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally |
INSERT INTO `ftpuser` VALUES (1, 'test', 'ftppasswd', 5500, 5500, '/home/test', '/sbin/nologin'); |
quotalimits? nameQ?- 用户帐号 quota typeQ?- user, group, class, all (we use user) per_sessionQ?- true or false (we use true) limit_typeQ?- 限?or 软限?(我们一般用限? bytes_in_availQ?- 允许上传的字节数 bytes_out_availQ?- 允许下蝲的字节数 bytes_xfer_availQ?- 允许传输的字节数Q包括上?下蝲Q?br /> files_in_availQ?- 允许上传的文件数 files_out_availQ?- 允许下蝲的文件数 files_xfer_availQ?- 允许传输的文件数Q包括上?下蝲Q?/td> |
修改注册表,定义键位映射Q不仅可以交换某几个键位的位|,q可以增强键盘的功能Q比如把右alt键、右win键等讄整音量大等?/p>
实在受不了在latex中反复的按\键,x的负担太重了Q所以我把capslock键换成了\Q又把右侧的win键换成了capslock。方法是定义scancode的mappingQ重定义q两个键的scancode?/p>
正文Q?/strong>
打开注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard LayoutQ新建Scancode Map键,cdZq制倹{在输入键g前,先在U怸把整个数据按ơ序写一下:
00000000 header version (zero) 必须?
00000000 header flags (zero) 必须?
00000003 number of entries (including terminator) 映射个数?
003A002B map CAPSLOCK (0x3A) to \ 一个映?br />
E05C003A RWin to capslock 另一个映?br />
00000000 null terminator map 必须?
每个映射中,前半部分是原先按键的scancodeQ后半是要改成的scancode。所有按键的scancode在最后的表中列出?/p>
注意不能直接输入上面的倹{注册表中,二进制D把每个字节高低位重新排一下,如:
00000000 00000000 03000000 2B003A00 3A005CE0 00000000
再输入。输入之后看h是这P
最后重启机器就可以?img style="cursor: pointer" onclick="javascript:window.open(this.src);" src="http://www.blog.edu.cn/images/emot/face8.gif" onload="rsimg(this,500)" alt="" />
可以定义别的映射Q比如把右altQE038Q设为静?E020){。要注意修改W?个字节中的映个数倹{?/p>
最后,我还x[]和{}互换Q但q不能用q种Ҏ来做Q估计必M改kbdus.dllQ定义自q语言才行。还没找到怎么改kbdus.dll的方?#8230;…
Update:
l于扑ֈ了修攚w位的软gQKEYBOARD LAYOUT MANAGERQ主|
http://www.klm.freeservers.com
我下的是medium版,现在可以修改[]和{}了:Q?/p>
q是׃n软gQ但它的原理不过是是生成新的kbdus.dll而已Q我惛_要把\windows\system32\kbdus.dll拷出来做个备份就可以了吧?/p>
Keyboard Scan Codes Set 1 |
|||||
KEY Name | Define Value (decimal) | Label | Additional Label | MAKE (hex) | BREAK (hex) |
Escape | 1 | Esc | 0x01 | 0x81 |
|
1 | 2 | 1 | ! | 0x02 | 0x82 |
2 | 3 | 2 | @ | 0x03 | 0x83 |
3 | 4 | 3 | # | 0x04 | 0x84 |
4 | 5 | 4 | $ | 0x05 | 0x85 |
5 | 6 | 5 | % | 0x06 | 0x86 |
6 | 7 | 6 | ^ | 0x07 | 0x87 |
7 | 8 | 7 | & | 0x08 | 0x88 |
8 | 9 | 8 | * | 0x09 | 0x89 |
9 | 10 | 9 | ( | 0x0A | 0x8A |
0 | 11 | 0 | ) | 0x0B | 0x8B |
Minus | 12 | - | _ | 0x0C | 0x8C |
Equal | 13 | = | + | 0x0D | 0x8D |
BackSpace | 14 | BackSpace | 0x0E | 0x8E |
|
Tab | 15 | Tab | 0x0F | 0x8F |
|
Q | 16 | Q | 0x10 | 0x90 |
|
W | 17 | W | 0x11 | 0x91 |
|
E | 18 | E | 0x12 | 0x92 |
|
R | 19 | R | 0x13 | 0x93 |
|
T | 20 | T | 0x14 | 0x94 |
|
Y | 21 | Y | 0x15 | 0x95 |
|
U | 22 | U | 0x16 | 0x96 |
|
I | 23 | I | 0x17 | 0x97 |
|
O | 24 | O | 0x18 | 0x98 |
|
P | 25 | P | 0x19 | 0x99 |
|
LBrace | 26 | [ | { | 0x1A | 0x9A |
RBrace | 27 | ] | } | 0x1B | 0x9B |
Enter | 28 | Enter | 0x1C | 0x9C |
|
LCtrl | 29 | Ctrl (left) | 0x1D | 0x9D |
|
A | 30 | A | 0x1E | 0x9E |
|
S | 31 | S | 0x1F | 0x9F |
|
D | 32 | D | 0x20 | 0xA0 |
|
F | 33 | F | 0x21 | 0xA1 |
|
G | 34 | G | 0x22 | 0xA2 |
|
H | 35 | H | 0x23 | 0xA3 |
|
J | 36 | J | 0x24 | 0xA4 |
|
K | 37 | K | 0x25 | 0xA5 |
|
L | 38 | L | 0x26 | 0xA6 |
|
SemiColon | 39 | ; | : | 0x27 | 0xA7 |
Quote | 40 | ' | " | 0x28 | 0xA8 |
Tilde | 41 | ` | ~ | 0x29 | 0xA9 |
LShift | 42 | Shift (left) | 0x2A | 0xAA |
|
BackSlash | 43 | \ | | | 0x2B | 0xAB |
Z | 44 | Z | 0x2C | 0xAC |
|
X | 45 | X | 0x2D | 0xAD |
|
C | 46 | C | 0x2E | 0xAE |
|
V | 47 | V | 0x2F | 0xAF |
|
B | 48 | B | 0x30 | 0xB0 |
|
N | 49 | N | 0x31 | 0xB1 |
|
M | 50 | M | 0x32 | 0xB2 |
|
Comma | 51 | , | < | 0x33 | 0xB3 |
Period | 52 | . | > | 0x34 | 0xB4 |
Slash | 53 | / | ? | 0x35 | 0xB5 |
RShift | 54 | Shift (right) | 0x36 | 0xB6 |
|
KP_Multiply | 55 | * | 0x37 | 0xB7 |
|
LAlt | 56 | Alt (left) | 0x38 | 0xB8 |
|
Space | 57 | SpaceBar | 0x39 | 0xB9 |
|
CapsLock | 58 | CapsLock | 0x3A | 0xBA |
|
F1 | 59 | F1 | 0x3B | 0xBB |
|
F2 | 60 | F2 | 0x3C | 0xBC |
|
F3 | 61 | F3 | 0x3D | 0xBD |
|
F4 | 62 | F4 | 0x3E | 0xBE |
|
F5 | 63 | F5 | 0x3F | 0xBF |
|
F6 | 64 | F6 | 0x40 | 0xC0 |
|
F7 | 65 | F7 | 0x41 | 0xC1 |
|
F8 | 66 | F8 | 0x42 | 0xC2 |
|
F9 | 67 | F9 | 0x43 | 0xC3 |
|
F10 | 68 | F10 | 0x44 | 0xC4 |
|
NumLock | 69 | NumLock | 0x45 | 0xC5 |
|
ScrollLock | 70 | Scroll Lock | 0x46 | 0xC6 |
|
KP_7 | 71 | 7 | Home | 0x47 | 0xC7 |
KP_8 | 72 | 8 | ArrowU | 0x48 | 0xC8 |
KP_9 | 73 | 9 | PgUp | 0x49 | 0xC9 |
KP_Minus | 74 | - | 0x4A | 0xCA |
|
KP_4 | 75 | 4 | ArrowL | 0x4B | 0xCB |
KP_5 | 76 | 5 | 0x4C | 0xCC |
|
KP_6 | 77 | 6 | ArrowR | 0x4D | 0xCD |
KP_Plus | 78 | + | 0x4E | 0xCE |
|
KP_1 | 79 | 1 | End | 0x4F | 0xCF |
KP_2 | 80 | 2 | ArrowD | 0x50 | 0xD0 |
KP_3 | 81 | 3 | PgDn | 0x51 | 0xD1 |
KP_0 | 82 | 0 | Ins | 0x52 | 0xD2 |
KP_Decimal | 83 | . | Del | 0x53 | 0xD3 |
F11 | 84 | F11 | 0x57 | 0xD7 |
|
F12 | 85 | F12 | 0x58 | 0xD8 |
|
PrintScreen | 86 | Print Screen | SysRq | 0xE0 0x2A 0xE0 0x37 | 0xE0 0xB7 0xE0 0xAA |
Pause | 87 | Pause | Break | 0xE1 0x1D 0x45 0xE1 0x9D 0xC5 | -NONE- |
KP_Enter | 88 | Enter | 0xE0 0x1C | 0xE0 0x9C |
|
RCtrl | 89 | Ctrl (right) | 0xE0 0x1D | 0xE0 0x9D |
|
KP_Slash | 90 | / | 0xE0 0x35 | 0xE0 0xB5 |
|
RAlt | 91 | Alt (right) | 0xE0 0x38 | 0xE0 0xB8 |
|
Home | 92 | Home | 0xE0 0x47 | 0xE0 0xC7 |
|
ArrowU | 93 | ArrowU | 0xE0 0x48 | 0xE0 0xC8 |
|
PageUp | 94 | Page Up | 0xE0 0x49 | 0xE0 0xC9 |
|
ArrowL | 95 | ArrowL | 0xE0 0x4B | 0xE0 0xCB |
|
ArrowR | 96 | ArrowR | 0xE0 0x4D | 0xE0 0xCD |
|
End | 97 | End | 0xE0 0x4F | 0xE0 0xCF |
|
ArrowD | 98 | ArrowD | 0xE0 0x50 | 0xE0 0xD0 |
|
PageDown | 99 | Page Down | 0xE0 0x51 | 0xE0 0xD1 |
|
Insert | 100 | Insert | 0xE0 0x52 | 0xE0 0xD2 |
|
Delete | 101 | Delete | 0xE0 0x53 | 0xE0 0xD3 |
|
LWin | 102 | LWin | 0xE0 0x5B | 0xE0 0xDB |
|
RWin | 103 | RWin | 0xE0 0x5C | 0xE0 0xDC |
|
Menu | 104 | Menu | 0xE0 0x5D | 0xE0 0xDD |
|
Power | 105 | Power | 0xE0 0x5E | 0xE0 0xDE |
|
Sleep | 106 | Sleep | 0xE0 0x5F | 0xE0 0xDF |
|
Wake | 107 | Wake | 0xE0 0x63 | 0xE0 0xE3 |
|
NextTrack | 108 | Next Track | 0xE0 0x19 | 0xE0 0x99 |
|
PreviousTrack | 109 | Previous Track | 0xE0 0x10 | 0xE0 0x90 |
|
Stop | 110 | Stop | 0xE0 0x24 | 0xE0 0xA4 |
|
Play_Pause | 111 | Play_Pause | 0xE0 0x22 | 0xE0 0xA2 |
|
Mute | 112 | Mute | 0xE0 0x20 | 0xE0 0xA0 |
|
VolumeUp | 113 | Volume Up | 0xE0 0x30 | 0xE0 0xB0 |
|
VolumeDown | 114 | Volume Down | 0xE0 0x2E | 0xE0 0xAE |
|
MediaSelect | 115 | Media | 0xE0 0x6D | 0xE0 0xED |
|
116 | 0xE0 0x6C | 0xE0 0xEC |
|||
Calculator | 117 | Calculator | 0xE0 0x21 | 0xE0 0xA1 |
|
MyComputer | 118 | My Computer | 0xE0 0x6B | 0xE0 0xEB |
|
WWWSearch | 119 | WWW Search | 0xE0 0x65 | 0xE0 0xE5 |
|
WWWHome | 120 | WWW Home | 0xE0 0x32 | 0xE0 0xB2 |
|
WWWBack | 121 | WWW Back | 0xE0 0x6A | 0xE0 0xEA |
|
WWWForward | 122 | WWW Forward | 0xE0 0x69 | 0xE0 0xE9 |
|
WWWStop | 123 | WWW Stop | 0xE0 0x68 | 0xE0 0xE8 |
|
WWWRefresh | 124 | WWW Refrash | 0xE0 0x67 | 0xE0 0xE7 |
|
WWWFavorites | 125 | WWW Favorites | 0xE0 0x66 | 0xE0 0xE6 |