Walk in Starlight
  • 首页
  • 分类
    • 默认分类
    • 混口饭吃
    • 都学杂了
    • 简单生活
  • 归档
  • 关于
  • 登录
    • 登录

vsftpd-虚拟用户配置

 December 17, 2016      混口饭吃      访问: 1,489 次      评论     sealinger

Amazon Linux version 2016.03

1、先安装密码文件认证所需的lib库 libpam_pwdfile.so

我们将使用htpasswd(httpd24-tools)命令来生成用户名/密码文件作为存储虚拟用户账号的数据库,所以需要先安装lib库 libpam_pwdfile.so(https://github.com/tiwe-de/libpam-pwdfile)。

$ sudo yum install pam-devel
$ wget -O libpam-pwdfile.zip https://github.com/tiwe-de/libpam-pwdfile/archive/master.zip
$ unzip libpam-pwdfile.zip
$ cd libpam-pwdfile-master/
$ make
$ sudo cp pam_pwdfile.so /lib64/security/


2、使用htpasswd 命令创建用户名和密码

一般方法为 htpasswd -c virtual_user.passwd user1 ,然后按提示输入2次密码,这样就在文件virtual_user.passwd 中写入了用户名和密码。

$ cd /etc/vsftpd/
$ sudo htpasswd -c virtual_user.passwd user1
$ cat virtual_user.passwd
user1:$apr1$vc8gkvSk$s0Sm/uL.7A4mH53mlU9WZ1


但是新版的htpasswd默认使用MD5方式加密密码明文,libpam-pwdfile 不认识它生成的Apache专用的格式(前缀 $apr1$),需要使用openssl 来生成加密密码。

$ sudo htpasswd -b -p virtual_user.passwd user2 $(openssl passwd -1 -noverify YourPasswd)
$ cat virtual_user.passwd
user1:$apr1$vc8gkvSk$s0Sm/uL.7A4mH53mlU9WZ1
user2:$1$d7iKL630$6Cwte2AjcRpboSYPfRXz5/

看到加密密码格式的不同了吧。


3、vsftpd 配置

1)vsftpd.conf 修改或添加以下配置项


anonymous_enable=NO
local_enable=YES
#pam_service_name=vsftpd    (注释掉默认的这一行)

# ------ Virtual user settings start ------

# Virtual users will use the same privileges as local users.
# It will grant write access to virtual users. Virtual users will use the
# same privileges as anonymous users, which tends to be more restrictive
# (especially in terms of write access).
virtual_use_local_privs=YES
write_enable=YES

# Set the name of the PAM service vsftpd will use
pam_service_name=vsftpd.virtual    (对应下一步创建的PAM文件)

# Activates virtual users
guest_enable=YES
guest_username=ftp	(默认就是ftp)

# Automatically generate a home directory for each virtual user, based on a template.
# For example, if the home directory of the real user specified via guest_username is
# /home/virtual/$USER, and user_sub_token is set to $USER, then when virtual user vivek
# logs in, he will end up (usually chroot()'ed) in the directory /home/virtual/vivek.
# This option also takes affect if local_root contains user_sub_token.
user_sub_token=$USER

# Usually this is mapped to Apache virtual hosting docroot, so that
# Users can upload files
local_root=/home/vsftpd/$USER

# Chroot user and lock down to their home dirs
chroot_local_user=YES

# Hide ids from user
hide_ids=YES

# ------ Virtual user settings end ------


2)创建一个 PAM文件以使其使用我们刚才创建的htpasswd文件进行认证
$ sudo vi /etc/pam.d/vsftpd.virtual
#%PAM-1.0
auth required pam_pwdfile.so pwdfile /etc/vsftpd/virtual_user.passwd
account required pam_permit.so


3)为虚拟用户创建家目录
$ mkdir /home/vsftpd
$ mkdir /home/vsftpd/user1
$ sudo chown -R ftp.ftp /home/vsftpd
# 如果是vsftpd-3.0,需要去掉用户家目录的写权限:
$ sudo chmod a-w /home/vsftpd/user1


启动vsftpd 服务,试试使用虚拟用户登录,Good luck!


关于sar命令的一点技巧

 December 17, 2016      混口饭吃      访问: 2,371 次      1 条评论     sealinger

CentOS release 6.8 (Final)

1、sar 命令中历史记录的时间间隔

在安装了 sysstat 系统工具后,默认会使用 sadc 命令每10分钟一次收集系统性能信息并保存到 /var/log/sa/saXX 文件中。可以将这个时间改短一点,以便提高监控粒度,比如改成5分钟一次:

$ sudo vi /etc/cron.d/sysstat

# Run system activity accounting tool every 10 minutes
*/5 * * * * root /usr/lib64/sa/sa1 1 1


2、sar -d 检查磁盘I/O Over Load的情况

主要是借助 awk 的技巧:

$ sar -d |head -3; sar -d |awk '($11>50)'


 

3、sar -d 命令中的磁盘设备编号映射关系

如图,DEV的主设备编号和次设备编号:

通过 ls -l /dev/磁盘设备文件 可以看到:

这样就知道哪块磁盘在当时负载较高了(%util)。


不过,你可能更喜欢 -p 参数,这样就直接显示 vda vdb 这样的设备名称了:



AWS EC2:扩展EBS卷的存储空间

 April 19, 2016      混口饭吃      访问: 3,574 次      评论     sealinger

以在 Liunx 下扩展根卷(系统盘)为例,步骤如下。

1、停止EC2实例(是 Stop 而不是 Terminate)

2、创建要扩展的卷的快照

3、从快照创建一个新卷(输入新卷大小)

4、在EC2实例上断开旧卷

注:断开之前记录下卷的详情页面中的连接信息一列中的设备名称:

i-xxxxxxxxxxxxxxxxx (instance_name): device_name(如 /dev/sda1 )

5、在EC2实例上连接新建的卷

注意:设备一栏,输入在上一步中记录下的相同设备名称,请务必注意,需要将卷重新连接到从分离开的准确位置(例如 /dev/sda1)。

6、重新启动EC2实例

实例启动之后,可以检查文件系统大小,看实例是否识别这个更大的卷空间。在 Linux 上,请使用 df -h 命令检查文件系统大小。

如果大小没有反映新扩展的卷,则必须扩展设备的文件系统,以便实例可以使用新的空间。

7、扩展 Linux 文件系统

检查您的卷分区是否需要调整大小 ,使用 lsblk 命令可列出连接到实例的块储存设备:

如上图,/dev/xvda1 是一个 10 GiB 分区,位于一个 50 GiB 设备上,并且卷上没有其他分区。在这种情况下,分区必须调整大小,以便使用卷上的剩余空间。调整分区大小之后,您可以按照下一个过程扩展文件系统以占用分区上的所有空间。

- 阅读剩余部分 -

PDF文件表单里输入文字后不显示的问题解决

 April 15, 2016      都学杂了      访问: 6,556 次      评论     sealinger

1、问题现象

PDF文件,里面含有表单输入框可以填写内容,但我在表单里输入文字后,光标离开当前表单输入框,刚才填写的文字却不显示?只有鼠标点一下该表单输入框进入编辑模式才会又显示了?

另外,填写好表单后,打印该PDF文件,还是看不到填写的内容?

泪奔。。。

注:该问题一般出现在国外网站提供的一些申请表格的PDF文件中。


2、问题解决

1)安装Acrobat Pro

2)打开软件后选择【编辑PDF】,打开PDF文件

3)Acrobat出现提示框,选择【编辑表单域】

4)点击选中一个表单域(即填写框),按 Ctrl+A 全选表单域,点击右键选择【属性】

5)选择【外观】选项卡,修改字体为常用字体,比如“微软雅黑”,然后你填写的内容就可见了!!!


原因就是原来PDF文件设置的字体在本机系统上没有,所以显示不了!!比如我遇到的这个:



Docker实践技巧(0)

 February 1, 2016      混口饭吃      访问: 2,388 次      评论     sealinger

整理自《Docker容器与容器云》一书。


1、非root 用户使用docker 命令

将普通用户加入docker用户组:

$ sudo usermod -aG docker your-user


2、设置容器的ulimit 参数
$ docker run --ulimit nofile=1024:1024 --ulimit nproc=1024:1024 --rm debian ulimit -n


3、备份、恢复或迁移volume

源容器(带volume):

$ docker run -it --name vol_simple -v /data ubuntu /bin/bash


1)备份

备份源容器的volume:(启动一个临时容器)

$ docker run --rm --volumes-from vol_simple -v $(pwd):/backup ubuntu tar cvf /backup/data.tar /data


2)恢复

新容器:

$ docker run -it --name vol_bck -v /data ubuntu /bin/bash

恢复源容器的数据到新容器:(启动一个临时容器)

$ docker run --rm --volumes-from vol_bck -v $(pwd):/backup ubuntu tar xvf /backup/data.tar -C /


4、SSH服务器的替代方案

容器实际上是一个进程,显然我们不会在进程里再启动一个SSH服务器。

Docker提供了 docker exec 命令,可以在已运行的容器中执行想要的命令,并得到反馈的结果。这个命令实际上可以解决大部分需要ssh进入容器的问题,同样也可以解决诸如定时任务等问题。

对于需要进入容器修改配置文件的需求:

  • 如果需要长期使用这份配置文件,它应该被集成到镜像中

  • 如果需要经常修改这份配置文件,那么应该使用volume共享这份配置

对于某些特殊需求需要进入容器,如程序调试等,则可以使用docker exec 直接在容器中启动一个shell:

$ docker exec -it <containerName> /bin/bash


5、Docker容器内应用日志的管理方案

容器的stdout和stderr 输出存在了 /var/lib/docker/containers/<containerID>/<containerID>-json.log 文件下( /var/lib/docker/ 即 docker graph 目录),docker logs 命令就是从这里读取日志的。

docker logs存在的问题:

  • JSON消息格式存储,日志文件增长过快

  • 日志文件没有自动切分功能(待验证)

  • docker logs命令返回的日志记录也过于冗长

主流解决方案,3种:

  1. 在容器内收集:

    1. 容器内启动一个日志收集进程

    2. 需要定制Docker镜像,典型代表为 baseimage-docker 项目

  2. 在容器外收集:

    1. 宿主机上运行一个单独收集日志的代理,收集所有容器的日志

    2. 容器挂载 volume 数据卷,把日志记录在挂载卷中

    3. 也可以直接处理 docker graph 目录下的容器日志,开源项目Fluentd

  3. 在专用容器中收集:

    1. 在宿主机运行日志收集代理的变种方案,该代理运行在一个容器中

    2. 且该容器的volume 使用docker run 的 --volumes-from 选项被绑定给其他应用程序容器

    3. 参考 Docker and Logstash 一文 


RHEL7/CentOS7系统配置和管理变化汇总

 January 27, 2016      混口饭吃      访问: 6,965 次      评论     sealinger

RHEL 7带来了很多系统配置和管理上的变化,虽然有些不习惯,但个人认为大家应该去适应它们,而不是因循守旧,因为变化总是有原因的,它们大致都代表了未来的趋势,你不可能一直停留在原地踏步。


1、GRUB升级至2.0,bootloader的配置文件也调整至/boot/grub2/grub.cfg

查看启动项:

# cat /boot/grub2/grub.cfg |grep menuentry

menuentry 'CentOS Linux (4.2.5-1.el7.elrepo.x86_64) 7 (Core)' --class centos ...
menuentry 'CentOS Linux (3.10.0-229.20.1.el7.x86_64) 7 (Core)' --class centos ...

查看默认启动项:

# grub2-editenv list
saved_entry=CentOS Linux (4.2.5-1.el7.elrepo.x86_64) 7 (Core)


修改默认启动内核为4.2.5:

# grub2-set-default 'CentOS Linux (4.2.5-1.el7.elrepo.x86_64) 7 (Core)'

2、/etc/inittab 不再使用(when using systemd)


cat /etc/inittab 看下就知道了:


# systemd uses 'targets' instead of runlevels. By default, there are two main targets: 
# 
# multi-user.target: analogous to runlevel 3 
# graphical.target: analogous to runlevel 5 
# 
# To view current default target, run: 
# systemctl get-default 
# 
# To set a default target, run: 
# systemctl set-default TARGET.target

3、主机名保存到了/etc/hostname 文件下

安装系统时配置的主机名,保存到了 /etc/hostname 。

4、几乎全面由systemd管理服务,SysV已经退居二线了,想配置服务得用systemctl


systemctl enable/disable sshd.service
其实启用服务就是在当前“runlevel”的配置文件目录(/etc/systemd/system/multi-user.target.wants/)里, 建立/usr/lib/systemd/system 里面对应服务配置文件的软链接;禁用服务就是删除此软链接。 
有兴趣就自己看看 /usr/lib/systemd/system 里的文件,语法跟旧版/etc/init.d/ 里的服务脚本完全不同,也不能再用 /etc/init.d/sshd restart 之类的指令启动服务器了。


常用指令:

# systemctl list-unit-files -t service 
# systemctl status firewalld.service 
# systemctl enable/disable firewalld.service 
# systemctl is-enabled firewalld.service
查看系统启动以来的message信息
# journalctl -b (类似 dmesg )

 

- 阅读剩余部分 -

    1. «
    2. 1
    3. 2
    4. 3
    5. 4
    6. 5
    7. ...
    8. 23
    9. »

优质VPS主机推荐

最近回复

  • sealinger: 我补充在后面了,你参考下。
  • nilin: 最后一句话,怎么操作啊,使得容器和宿主机互通
  • sealinger: 可能吧。。验证码还没搞定,哈哈

最新文章

  • Charles 之 SSL Proxying
  • 系统重启后Nginx的Max open files limit被重置为默认的问题
  • tmpwatch与find命令清理旧文件的注意
  • 关于Nginx在URL末尾不加斜杠时的自动重定向
  • Nginx在upstream中配置域名的动态解析问题
  • CentOS 6.7下Caffe的编译安装过程
  • vsftpd-虚拟用户配置
  • 关于sar命令的一点技巧
  • AWS EC2:扩展EBS卷的存储空间
  • PDF文件表单里输入文字后不显示的问题解决
  • Docker实践技巧(0)
  • RHEL7/CentOS7系统配置和管理变化汇总
  • 搭建Docker私有仓库Registry-v2
  • Pipework配置Docker容器macvlan网络
  • CentOS 7安装Docker简易指南
  • Win7开机后svchost.exe占用内存和CPU过高
  • 关于 Out of Socket memory 的解释
  • 拍了一个新域名: gesha.net
  • 【DNS】权威NS的记录如何做CDN智能解析
  • Enhanced Intel SpeedStep® Technology on Linux
  • [转]tcp数据重传时间细节探秘及数据中心优化
  • UEditor for Typecho插件安装笔记
  • Cacti修改采集精度为1分钟
  • Debian下减少snmpd的日志输出详细度
  • 将VPS从Vultr洛杉矶节点迁到日本东京节点
  • [转]Traceroute网络排障实用指南(2)
  • [转]Traceroute网络排障实用指南(1)
  • 《TCP/IP详解-卷1》 要点笔记(3)
  • 《TCP/IP详解-卷1》 要点笔记(2)
  • 《TCP/IP详解-卷1》 要点笔记(1)
  • 利用iTunes将wav转成mp3格式
  • Godaddy续费域名无法支付的问题解决
  • 库克:身为同性恋我感到自豪
  • curl命令自动跳转follow HTTP redirects
  • [转]一致性hash算法( consistent hashing )
  • 不翻墙如何访问Google | gfsoso.com | wen.lu
  • typecho永久链接设置(nginx+php)
  • 如何解决nginx+php报错“No input file specified”
  • Linux Kernel: buffers和cached的区别
  • yum安装vim冲突一例解决
  • [Typecho插件]升级Google Analytics到Universal Analytics
  • 不解压浏览tar.gz文件列表
  • squid的forwarded_for 配置
  • [转]如此心机的老婆,不教出一个优秀的女儿才怪了~~
  • 三星国行Galaxy S4 GT-I9500官方Android 4.3固件ZCUFML1 ROOT教程
  • 汽车助手类(记录加油和保养情况)APP(for iOS)推荐
  • Debian初学者笔记(5)—四个小备忘
  • Android手机抓包工具shark for root抓包参数
  • Wireshark 1.8/1.10应用程序无法正常启动(0xc000007b)
  • 电脑连接手机adb shell老提示error:device offline

标签云

debian nginx tcp/ip docker typecho network linux fuckgfw dns hardware cacti amazon aws vsftpd caffe Charles

友情链接

  • 釜底网
  • Typecho主题
  • Typecho插件

其它

  • 文章 RSS
  • 评论 RSS
  • SiteUptime Report

优质VPS主机推荐


  • © 2010-2021 Walk in Starlight | Designed by Fomde | Powered by Typecho | Hosted by Vultr