CentOS

There are 9 entries for the tag CentOS

CentOS安装配置vsftp虚拟用户登录(Berkeley DB+PAM)

MitchellChu 2015-09-05 Unix & Linux

在使用Linux时,难免要进行各种文件的远程传输,比如:网站的代码,共享资源等,而这其中用的最多的传输方法大概就是FTP了。Linux下可用FTP服务端是非常多的,vsftp, proftp, uw-ftp等,其中vsftp流行度比较广,冲着这个,本人在自己的CentOS上也就选择了vsftp,而且,vsftp支持PAM(pluggable authentication modules)下虚拟用户设置,这正是Mitchell Chu比较喜欢的一种方式,接下来就请vsftp君上场。 Vsftp使用的用户中,支持三种用户模式,分别是:实体用户,匿名用户和虚拟用户(guest,亦称访客身份)。实体用户(Real User)是指用户本身存在于系统中的用户,他们存在于/etc/passwd和/etc/shadow文件中。匿名用户(Anonymous)是指客户端无需提供任何用户身份,ftp为访问者提供一个名为anonymous的特殊用户以供其使用。虚拟用户(Virtual User)个人理解是一种介于实体用户和匿名用户之间的用户。原因是:虚拟用户虽然在系统的实体用户文件中不存在,但是会在系统的其他地方进行记录(本文是Berkeley DB),以供vsftp用来对ftp访问者进行必要的鉴权,而鉴权完毕之后,该用户操作文件之时,将是使用vsftp的运行用户ftp进行的。由于实体用户需要的是系统真实帐户,开放这种权限无疑会增加系统的风险,而虚拟用户使用的是和实体用户不同的用户验证体系,并且,在系统中并不实际存在虚拟用户到实体用户的映射关系,因此降低了FTP给系统带来的风险性,在实际生产环境中,虚拟用户可以更加灵活的进行独立管理,比如:虚拟主机需要给用户提供FTP帐户。有这么些好处之后,让我们看看是如何配置吧。   预备式 Berkeley DB 数据库:用来存储虚拟用户的登录信息 pam_userdb.so:用来验证虚拟用户 db4_utils:用来转换虚拟用户到DB数据的工具   安装需要的包 CentOS中好像是默认自带vsftp的,因此,无需安装,如果你不确认,可以用which看下: which vsftpd # 如果安装好了的话,应该是有类似下面的输出: # /usr/sbin/vsftpd # 如果没安装,则类似下面的输出 # /usr/bin/which: no xd in (/home/limituser...  没有安装的话,请安装: yum install vsftpd # 或者: yum -y install vsftpd 当然,清空下yum的缓存亦可: pushd /etc/yum.repos.d/ rm -rf * wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo yum clean all yum -y install vsftpd ## 这句还是重点. 为了简单,我们可以一次性安装所有需要的包: yum install db4-utils db4 vsftpd ## Mitchell Chu提醒:有的就不用再安装了,请自行增减   创建虚拟用户 虚拟用户我们使用Berkeley DB数据库来存储。第一步是创建纯文本来添加用户和密码,用户名和密码各占一行。比如我们要创建:useasp的用户名,密码是blog.useasp.net,并且创建一个admin密码是adminpasswd的用户,那么,纯文本将类似如下: pushd /etc/vsftpd cat >vusers.txt useasp blog.useasp.net admin adminpasswd 创建好vusers.txt后,我们需要的第二步是将纯文本转换为db文件,这时候需要使用到db_load了: db_load -T -t hash -f vusers.txt vsftpd-virtual-users.db 为了安全起见,记得设置仅root可读写(当前是root): chmod 600 vsftpd-virtual-users.db 再清理掉原来的纯文本文件: rm vusers.txt 此时,我们已经将需要登录FTP的用户已经准备好了,接下来就需要去配置vsftpd,让vsftpd能够正确的识别并支持已经设置好虚拟用户了。   VSFTPD虚拟用户的配置 找到vsftpd.conf配置文件,添加或修改下面这些配置选项: # 禁止匿名登录 anonymous_enable=NO anon_upload_enable=YES anon_other_write_enable=YES # 启用本地用户 local_enable=YES # 虚拟用户使用本地用户权限 virtual_use_local_privs=YES # 可写 write_enable=YES # PAM配置 pam_service_name=vsftpd # 启用虚拟用户 guest_enable=YES # 用户后缀: 配合下面local_root使用,将会用登录的用户名替换掉$USER user_sub_token=$USER # 根目录 local_root=/var/ftp/$USER # 启用chroot,登录后会被定位到指定根目录 chroot_local_user=YES # 将所有的用户和组显示为ftp hide_ids=YES vsftpd的配置文件是在/etc/vsftpd/vsftpd.conf,原有配置项可以保留默认值,如果需要日志,vsftpd有两个日志可供使用,一个是标准xferlog格式的,一个是vsftpd格式的,可读性后者更好,当然,你也可以两个日志都启用,要启用可以设置:xferlog_enable, xferlog_std_format, xferlog_file, vsftpd_log_file等参数以获得需要的日志效果。   虚拟用户的PAM配置 要针对虚拟用户启用PAM,我们还需要对PAM尽心配置,在上面的vsftpd配置文件中,我们使用pam_service_name来配置了PAM将使用的配置文件,这个文件安装后是默认存在的,如果你觉得有必要保留原来的配置,可以先行备份一份,而后配置文件内容改为如下: #%PAM-1.0 auth required pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users account required pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users #session required...

Linux下修改命令行终端显示的分辨率(tty)

MitchellChu 2014-05-11 Unix & Linux

以前写过一个Ubuntu下设置自定义桌面的分辨率的文章,使用的是xrandr和cvt,这次碰到的是要在Linux(CentOS)下调整命令行终端的显示。在VMWare中CentOS的命令行终端(tty)默认是很小的(80x25),在偌大的显示屏(1920X1080)中显示出来就中间一小块。所以要解决的问题就是想办法将屏幕展开。 毫不犹豫的使用老方法——尝试xrandr命令,遗憾的是CentOS(6.4)默认是没有的——没有X窗口系统嘛,就连cvt这个命令也没有踪影。 一招不行,再祭一招,修改grub.conf文件!通过修改grub.conf文件中kernel行——在最后加上vga参数,让系统在启动的时候能够自动加载适用的分辨率,如下面这样: # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/mapper/vg_mitchell-lv_root # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.32-431.5.1.el6.i686) root (hd0,0) ...

CentOS下编译安装Python2.7.6

MitchellChu 2014-05-07 Unix & Linux

CentOS下面Python在升级到2.7.6的时候,没有找到安装包直接安装,只能通过源代码编译的方式来安装Python 2.7.6版本。这篇是编译和安装Python2.7.6的过程记录。 CentOS系统中安装了development tools。要编译安装Python,执行下面代码: $ pushd /usr/local/src $ sudo mkdir python $ sudo chown $USER python $ cd python $ wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz $ tar zxvf Python-2.7.6.tgz $ cd Python-2.7.6 $ ./configure --prefix=/usr/local/python-2.7.6 && make $ sudo make install 代码过程: 1. 在/usr/local/src创建python文件夹,并将Python文件夹所有者设置为当前用户(非root) 2. 进入创建的python目录下,从官方网站上下载python2.7.6源代码包。 3. (非必须)如果要校验包的一致性,可以在官方网站上下载sig文件,并通过PGP校验文件,也可以通过官网提供的MD5校验下载的压缩包。更多关于校验的信息请参考Linux下校验文件的完整性(MD5,SHA1,PGP)。本代码忽略了此过程。 4. 解压压缩包到当前目录,并进入Python-2.7.6目录 5. 配置python并编译。这步只是用了--prefix参数指示安装路径。 6. 安装Python [也可使用altinstall的安装方式,这样文件末尾会带上版本号。updated: 2015-07-13] 上面是在Python编译安装顺利的情况下的大体流程,但是我在编译的时候,Python出现了下面的提示信息: Python build finished, but the necessary bits to build these modules were not found: _bsddb _sqlite3 _ssl _tkinter bsddb185 bz2 ...

CentOS下编译安装MySQL5.6.16备忘

MitchellChu 2014-04-28 Unix & Linux

在CentOS6.4下编译MySQL5.6.16版本,直接编译MySQL源代码会出现一些问题,因此在这里备忘一下编译方法及修改事项。MySQL的编译过程如下: $ sed -i "/ADD_SUBDIRECTORY(sql\/share)/d" CMakeLists.txt && $ sed -i "s/ADD_SUBDIRECTORY(libmysql)/&\\nADD_SUBDIRECTORY(sql\/share)/" CMakeLists.txt && $ sed -i "s@data/test@\${INSTALL_MYSQLSHAREDIR}@g" sql/CMakeLists.txt && $ sed -i "s@data/mysql@\${INSTALL_MYSQLTESTDIR}@g" sql/CMakeLists.txt && $ sed -i "s/srv_buf_size/srv_sort_buf_size/" storage/innobase/row/row0log.cc && $ mkdir build && $ cd build && $ cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.16 \ -DINSTALL_MYSQLDATADIR=/srv/mysql ...

CentOS6.4下Emacs24.3的编译安装备忘

MitchellChu 2014-04-27 Unix & Linux

Emacs是一个具有强大扩展性的文本编辑器(说IDE或许更准确点),在CentOS中,你可以直接通过yum来安装。出于对新版本的热衷,选择了对Emacs24.3进行了编译安装。以下是Mitchell的安装过程,关于编译安装的一些介绍可以参看前一篇编译安装介绍。 首先,自然是要获取到Emacs的源代码,源代码在Emacs的官方网站上可以找到下载的地方(其中一个地址);第二个就是依赖了,Emacs 24.3版本需要依赖autoconf(2.65或更新),makeinfo(4.7或更新),makeinfo在Texinfo里面。 编译过程是反向的,先将依赖,编译安装完成之后,再编译安装Emacs本身。 autoconf的编译安装,由于CentOS本身自带autoconf,但是autoconf的版本不符合要求,因此先删除自带的autoconf。 yum erase autoconf 用这种方法移除后在更新,涉及到依赖包:automake,intltool,libtool。我们还需要将这些新版本安装回来。安装automake,intltool,libtool的过程简要备录如下: automake安装: $ wget http://ftp.gnu.org/gnu/automake/automake-1.14.1.tar.xz $ ./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.14.1 $ make $ sed -i "s:./configure:LEXLIB=/usr/lib/libfl.a &:" t/lex-{clean,depend}-cxx.sh $ make -j4 check TIPS:这个后缀的文件名不太常见,解压方法可以参考:Linux下的压缩解压命令汇总 make check的信息如下:    ============================================================================ Testsuite summary for GNU Automake 1.14.1 ============================================================================ # TOTAL: 2761 # PASS: 2455 # SKIP: 266 # XFAIL: 40 # FAIL: 0 # XPASS: 0 # ERROR: 0 ============================================================================ 这表示成功,可以安装 # make install libtool安装: $ wget http://mirror.hust.edu.cn/gnu/libtool/libtool-2.4.tar.xz $ wget http://mirror.hust.edu.cn/gnu/libtool/libtool-2.4.tar.xz.sig $ tar xvf libtool-2.4.tar.xz $ cd libtool-2.4/ $ ./configure --prefix=/usr $ make $ make check # make install intltool安装: $ wget http://launchpad.net/intltool/trunk/0.50.2/+download/intltool-0.50.2.tar.gz $ ./configure --prefix=/usr && $ make # make install && ...

CentOS/Linux下软件的编译安装介绍及注意事项

MitchellChu 2014-04-26 Unix & Linux

CentOS作为服务器,要求软件的稳定性比较高,因此发布的软件一般都比较老,然而,有的时候我们需要某些软件新的功能,这种时候如果没有可用的安装包,就需要使用软件提供的源代码,在CentOS下进行编译安装。编译安装顾名思义就是需要先进行对软件的源代码进行编译,然后安装编译之后的软件文件。在CentOS/Linux下编译软件的源代码,一般会涉及编译器,关联库等。 编译器: 在CentOS下开发软件的语言种类繁多,需要根据需要编译的软件的源代码选择对应的编译器。在CentOS下,最常用的有两种:C语言的可以使用gcc,C++可以使用g++。GCC(GNU Compiler Collection,GNU编译器套件)已经扩展成可以处理C,C++,Ada,Java,Objective-C,Object-C++,Go,Fortran的编译器。也就是说,一般情况下,在拥有gcc编译器的前提下,CentOS下你已经可以编译大部分应用程序。如果你仅仅需要编译程序,通过yum install 来安装gcc和g++吧。—— 当然,一般仅有这两个编译器是远远不够的。 关联库: 前面说了,有了对应的编译器,理论上是可以完成对软件的编译。然而,在CentOS/Linux下,大部分的软件都有对其他库的依赖,这就需要在编译的时候,将关联的库包含进来,才能顺利的完成软件的编译。哪怕是同一个库,在不同的软件编译中,可能依赖的版本也会有所不同,因此,在实际编译的过程需要谨慎选择依赖库的版本。关联库可以通过编译器的参数来进行设置。 编译工具: 关联的库可以通过编译器来进行添加,但这种方法一旦在软件依赖比较多;需要根据系统环境进行参数筛选依赖库的时候,编译者为了要顺利在某一个特定的Linux发行版本下编译成功软件,就需要对该软件在当前Linux版本下的相关信息了解清楚。在繁多的软件编译安装列表中,要对每一个软件在每一个版本的Linux/CentOS下的安装信息都掌握,对编译者的要求就非常高了,无形之中会加重软件的编译安装成本,为了应对这种情况,Linux下提供了configure,make,CMake,automake等,这可以让软件的发布者提前将特定版本下编译的信息通过配置文件的形式提前固定下来。编译的时候,直接读取配置文件中的信息,找到对应的配置项,进行配置校验即可。要了解更多可以了解下MakeFile的相关信息。 系统编译相关: 1. 在CentOS中,如果要进行对软件的编译安装,我们一般需要安装:Development Tools yum groupinstall "Development Tools" 如果你编译安装的软件需要图形界面的话,你可能还需要安装X Software Development yum groupinstall "X Software Development" 要是你编译安装的软件比较旧,那可能就还需要Legacy Software Development了 yum groupinstall "Legacy Software Development" 可以根据自己的实际情况对上面的开发环境进行配置,Mitchell一般在CentOS上只编译最新的,无图形界面的软件,这种情况下,Development Tools对我来说已经就足够了。 如果没有安装Development Tools,而只安装gcc,g++这类的编译器,在实际编译的时候,你将会发现编译工作进展是痛苦无比的,这是因为,你只安装了特定的编译器,而关联的库文件缺失。在编译自己的小程序也许没有问题,但涉及到库关联的时候,问题就来了。 2. 关于系统时间,开始Mitchell本人一直觉得,系统时间和编译是半毛钱没有的事情,然而在一次编译的过程中发现(特别是在使用虚拟机的时候,时间观念淡薄啊),./configure出来的makefile,一直会报错: MakeFile is too old.  这个时候,不要吝惜那分分钟的时间,赶紧先把系统时间修改成正确的时间吧(时区)。 更新系统时间: date 'current-date' 更新硬件时间: #使用hwclock hwclock -w #使用clock clock -w 3. 安装路径,一般使用--prefix来进行设置,这样便于将来维护。    Linux现在还是菜鸟一枚,暂时只想到这么些,如果还有更多或不对的地方,欢迎指正补充。

putty SSH连到CentOS显示乱码的解决方法

MitchellChu 2014-03-18 Unix & Linux

使用putty(版本0.62)通过SSH连接到CentOS(版本6.4)时,在客户端显示中文时会显示乱码。为了让putty显示正常,需要做如下操作: 1. 在CentOS上设置 /etc/sysconfig/i18n为如下内容 LANG="zh_CN.UTF-8" 2. 在putty的PuTTY Configuration窗口中设置如下: 1. Window->Appearance->font setting 设置字体为:新宋体,10号 2. Window->Translation->Remote character set 设置值为:UTF-8  这样设置后的putty通过SSH连接到CentOS上,中文字符正常显示,不再出现中文乱码。 Update: 这个设置可能会引起其他软件的一些问题,比如:wget下载进度条会变成多行显示.

CentOS网络配置后不能访问外网

MitchellChu 2014-03-18 Unix & Linux

今天在按照Mitchell博客之前的CentOS网络配置的文章配置Linux网卡之后,发现竟然ping不通外网,但是内网ping却是正常的。一直很纳闷,在网上搜索很久也没有得到答案。关于CentOS网络的具体配置项,可以参考Mitchell博客之前的那篇文章。 现象: ping内网正常 ping外网IP,域名均无法正常,返回错误:connect: Network is unreachable   后面在无意中看到Linux网络配置有添加网关的命令: route add default gw 192.168.128.2 dev eth0 按上面操作,添加了默认的网关之后。再次访问外网一切正常。 有这个现象来看,应该是配置文件中没有配置网关,但是经过确认/etc/sysconfig/network 中是配置了GATEWAY地址的,而且GATEWAY的地址也是正确的,在多次重启network之后,只要不手动添加网关,就不能访问外网。 多次仔细确认各个网络配置文件之后,发现在网卡配置文件中(ifcfg-eth0)有一个NETWORK配置项,对于这个配置项,本身作用不是很清楚,因此到官网查看了一下说明: NETWORK=<address> where <address> is the network address. This directive is deprecated, as the value is calculated automatically with ifcalc. 这节奏是告诉我们这个参数不要设置嘛(deprecate),这个值将会由ifcalc自动计算。既然不用设置,自然去掉。 去掉之后,重启network服务之后,外网竟然神奇的能够访问了。使用route查看路由表,发现能够自动添加default这条信息了,原来可是一直没有的: Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.128.0 * 255.255.255.0 U 0 0 ...

CentOS网络配置相关文件配置选项说明

MitchellChu 2013-06-01 其他技术 Unix & Linux

CentOS 修改IP地址等网络相关的配置文件 找到对应网卡的IP地址配置文件:ifcfg-eth数字. 路径:/etc/sysconfig/network-scripts/ifcfg-eth数字 文件内配置项说明 DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为eth0 BOOTPROTO=static #设置网卡获得ip地址的方式,选项有:static(静态),dhcp(通过DHCP获取IP)或bootp(使用BOOTP协议获得IP) BROADCAST=192.168.0.255 #子网广播地址 HWADDR=00:17:F3:05:18:20 #网卡物理地址(MAC) IPADDR=192.168.0.2 #BOOTPROTO=static时,使用此IP地址 IPV6INIT=no #初始化IPv6的功能 IPV6_AUTOCONF=no #是否自动化配置IPv6 NETMASK=255.255.255.0 #网卡对应的网络掩码 NETWORK=192.168.1.0 #网卡对应的网络地址 ONBOOT=yes #系统启动时是否启用此设备,yes时,系统启动时激活 #TYPE=Ethernet #网络类型 #USERCTL=no #非root用户是否可控制该设备 2014年03月18日补充更新:NETWORK这个参数在CentOS中不要设置,官方已经弃用,并且在设置之后可能会出现不能成功添加网关的问题,可以参见最新的博文:CentOS网络配置中NETWORK设置后引起的问题. CentOS官方帮助:http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-networkscripts-interfaces.html   CentOS 网关配置相关的配置文件 路径: /etc/sysconfig/network 文件内配置项说明 NETWORKING=yes # 表示系统是否使用网络,一般为yes。如果为no,则不使用网络,很多系统服务无法启动 #NETWORKING_IPV6=no #是否启用IPv6 #FORWARD_IPV4=no #是否开启IP转发功能 #HOSTNAME=localhost.localdomain #设置本机的主机名,设置的值要和/etc/hosts中设置的主机名对应;注释掉,一般先解析主机名或者域名,再解析DNS GATEWAY=192.168.1.1 #设置网关的IP地址 #GATEWAYDEV=gateway #网关设备名称 CentOS 官方帮助:http://www.centos.org/docs/5/html/5.2/Deployment_Guide/s2-sysconfig-network.html   CentOS DNS相关的的配置文件 路径:/etc/resolv.conf 文件内配置项说明 #最重要的就是nameserver,其他可以忽略 nameserver 8.8.8.8 #google域名服务器 nameserver 8.8.4.4 #google域名服务器 #search mitchellchu.com www.mitchellchu.com #定义域名的搜索列表 #domain mitchellchu.com #定义本地域名 #sortlist #对返回的域名进行排序 网络设备重启 service network restart 或 /etc/init.d/network restart IP地址修改 即时生效: ifconfig eth0 192.168.0.2 netmask 255.255.255.0 重新启动网络设备后生效 参见 /etc/sysconfig/network-scripts/ifcfg-eth数字 的修改 修改当前网关 Default Gateway 即时生效: route add default gw 192.168.0.1 dev eth0 重启网络设备后生效: 参见:/etc/sysconfig/network的配置 修改DNS 参见:/etc/resolv.conf配置 修改后即时生效 修改主机名 即时生效: hostname centos1 重新启动生效: 参见:/etc/sysconfig/network配置,注意这里还有/etc/hosts的配置 网络配置的CentOS官方帮助:http://www.centos.org/docs/5/html/Deployment_Guide-en-US/ch-networkscripts.html

关于博主

  一枚成分复杂的网络IT分子,属于互联网行业分类中的杂牌军。