HOW TO INSTALL PURE-FTPD ON CENTOS 6.4 | Instalar Pure-FTP en Centos6

HOW TO INSTALL PURE-FTPD ON CENTOS 6.4

This article teaches you how to install free ftp server Pure-FTPd on CentOS 6 and how to configure and use it so you can access your server via ftp connection using your favorite ftp client (e.g:FileZilla). The main reason why I post this article is because a friend of mine asked me why couldn’t he access his server using FileZilla. The answer is simple, that’s because he didn’t install any ftp server on his VPS. FileZilla is an ftp server installed in client computer while the VPS is not accessible via FTP without any FTP server installed. Yet, CentOS is not coming with FTP server installed by default and even if by any chance you found it installed, you still have to configure it.

WHAT IS PURE-FTPD?

Pure-FTPd is a free (BSD), secure, production-quality and standard-conformant FTP server. It doesn’t provide useless bells and whistles, but focuses on efficiency and ease of use. It provides simple answers to common needs, plus unique useful features for personal users as well as hosting providers.

Why Pure-FTPd?

Because it is actively supported, and it was always designed with security in mind, and the code is always re-audited as new kind of vulnerabilities are discussed.

Are there any other alternatives?

Yes there are. Try Pro-FTPd and vsftpd (how to install vsftpd).

HOW TO INSTALL PURE-FTPD ON CENTOS 6?

The guide is below. But first, read some prerequisites:

WHAT YOU’LL NEED?

  1. A Linux server running CentOS 6. In this guide I use CentOS 6.4 x64 by DigitalOcean.
  2. You better firstly setup LAMP or LNMP on it.
  3. You’ll also need an FTP client like FileZilla installed on your computer. This is for testing purpose (and you’ll really need this once you build your site)
  4. A skill to use SSH and basic Unix commands (I’m sure you have this already).
  5. About 15 minutes of your time

A. INSTALLING PURE-FTPD SOFTWARE ON CENTOS SERVER

Step 1 – Login to your server and follow my previous guide about Basic setup for CentOS before you build a live web server. You may and may not follow that tutorial but if you followed, it will give you some basic security tweak to your server.

Before you proceed to the next steps, it is better to explain that all commands in this tutorial are written without the “sudo” prefix. However if you disabled root login and you logged in using another username with root privilege, you can add the “sudo” prefix all by your self. Alternatively you can simply type su, hit Enter and type in your password twice to switch login as root.

switch-root-login

You may also need to type this command to go to the root directory:

1
cd ~

Step 2 – Pure-FTPd is not available by default in CentOS and you have to grab it from another repository. You have to enable the RPMforge and EPEL repositories on our CentOS. So go ahead add the repo:

1
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

then

1
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

now..

1
2
3
cd /tmp
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
rpm -ivh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

However If the above link doesn’t work anymore, you can find the current version of rpmforge-release here: http://packages.sw.be/rpmforge-release/.

This repo will also give you more benefit:

1
rpm --import https://fedoraproject.org/static/0608B895.txt

then

1
2
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

next, update yum:

1
yum update

Each time yum asks you to confirm, simply type Y then hit Enter.

Step 3 – Now install Pure-FTPd via yum using this command:

1
yum install pure-ftpd

screenshot:

yum install pureftpd

B. CONFIGURING PURE-FTPD (POST INSTALL)

Step 1 – Go to Pure-FTPd config folder:

1
cd /etc/pure-ftpd/

Step 2 – Next, edit the config file "pure-ftpd.conf": (in this example I use Nano editor).

1
nano -w pure-ftpd.conf

Step 3 – Once Nano editor appears with pure-ftpd.conf file ready for editing, now make adjustment to several lines as below:

3.1. Look for #UnixAuthentication and uncomment that line (remove the # symbol):

unixauth

3.2. Then change No in VerboseLog to yes.

verboselog

3.3. Uncomment the PureDB line:

purdedb

3.4. Uncomment the CreateHomeDir line

createhomedir

Step 4 – Now create ftp user or aka virtual user used to login to your server. And the command syntax is:

1
pure-pw useradd ftpuser -u user -g group -d /var/www/domain.com/public_html

where:

  1. ftpuser is username you can use it to login to your server via ftp.
  2. user is a Unix user. If you didn’t created one yet, you can also use root.
  3. group is a Unix group. If you didn’t created one yet, you can also use root.
  4. /var/www/domain.com/public_html is default document root folder of your site. This is where the ftp user will have access to once logged in.

Obviously you have to change those parts to suite your own. In my example is:

1
pure-pw useradd servermom -u sawiyati -g sawiyati -d /var/www/servermom.com/public_html

Once hit Enter, you’ll then be asked to define new password for the user. Enter it twice for confirmation.

Step 5 – Finally, issue this command:

1
pure-pw mkdb

screenshot for step 4 and 5:

purepw

C. USING FTP TO ACCESS YOUR SERVER

Step 1 – Once you’ve done making some adjustments to pure-ftpd configuration, now you better firstly restart the ftp service:

1
service pure-ftpd restart

screenshot

restart ftp

Don’t panic if you see [FAILED] message in when the system tried to stop pure-ftpd. It happens because pure-ftpd service is not yet started. The point here is the [OK] message when starting.

Step 2 – Now open up your favorite ftp client like FileZilla then enter the detail:

  • Host : Enter your server’s IP or hostname (if you’ve added A record to it in your DNS).
  • Username : Use what you defined in step 4 section B above.
  • Password : Use what you defined in step 5 section B above.
  • Port : use Port 21

Once done hit the Connect button. screenshot:

using filezilla

Step 3 – You’ll finally see the “Status:Directory listing successful” message indicating you are now logged in.

filezilla ftp

That’s it. I’m sure you knew what you have to do from here. Enjoy..

OPTIONAL

Issue this command to make sure pure-ftpd service will be automatically started every time your server reboot:

1
chkconfig --levels 235 pure-ftpd on

Also, if you created other virtual users (and passwords) – see section B step 4 – make sure you issue this command:

1
pure-pw mkdb

You have to issue that command every time you add a virtual user.

Comandos MUY UTILES para la consola

Empecé a editar este artículo hace varios meses. Finalmente me aburrí de recopilar comandos y lo publico tal como está. Si recuerdo algunos que se me hayan pasado por alto, o descubro nuevos, los iré agregando. Seguramente falten muchos que uso periódicamente y no me dí cuenta de agregar.

Quisiera compartir una lista de comandos útiles que suelo utilizar día a día, sin una organización u orden aparente. Son muchos de los comandos que todo SysAdmin conoce o está familiarizado. Tal vez muchos resulten básicos (por no usar otro adjetivo) para un SysAdmin, sin embargo pueden no serlo para alguien que recién comienza a interactuar con una shell.

Indice

  • Borrar el contenido de un archivo
  • Volver al directorio anterior
  • Cambiar rápidamente al directorio $HOME
  • Ver un log «en vivo y en directo»
  • Listar todos los puertos TDP y UDP abiertos
  • Listar todos los sockets Unix abiertos
  • Ejecutar un comando sin que quede registrado en el historial de Bash
  • Ejecutar un comando sólo si el anterior finaliza correctamente
  • Indicarle a un utilitario que deje de interpretar opciones
  • Crear varios niveles de directorio en un único comando
  • Crear y editar un archivo con cat
  • Listar todos los archivos abiertos
  • Omitir a grep en la salida de ps
  • Listar los archivos modificados en las últimas 24 horas
  • Listar sólo las conexiones establecidas
  • Identificar el proceso asociado a una conexión establecida
  • Obtener estadísticas de red
  • Remover la ruta en un nombre de archivo
  • Mandar un proceso a segundo plano
  • Terminar un proceso en segundo plano
  • Cómo saber el pid de la sesión actual
  • Contar filas repetidas
  • Buscar archivos por contenido
  • Buscar archivos por nombre
  • Conocer el formato de un filesystem
  • Invertir el orden de las líneas de un archivo
  • Invertir un string
  • Buscar ayuda
  • Imprimir un árbol de procesos
  • Volcar un archivo binario por salida estándar
  • Responder «yes» a cualquier comando interactivo
  • Realizar cálculos matemáticos por línea de comandos
  • Obtener rápidamente nuestro id de usuario
  • Matar procesos por nombre
  • Conectar con un pipe la stderr

Al grano.

Borrar el contenido de un archivo

Una forma rápida de vaciar un archivo es redirigir una salida nula:

> archivo

Volver al directorio anterior

No confundir con ir al directorio padre cd ... Funciona como la flecha izquierda de los navegadores:

cd -

Cambiar rápidamente al directorio $HOME

cd

Ver un log «en vivo y en directo»

tail -f /var/log/syslog

Listar todos los puertos TDP y UDP abiertos

netstat -tulpn

Listar todos los sockets Unix abiertos

netstat -xlpn

Ejecutar un comando sin que quede registrado en el historial de Bash

Práctico cuando necesitamos incluir una contraseña como parte de un comando, para no divulgarla en el historial. Sólo es necesario dejar un espacio en blanco delante del comando:

 COMANDO

Ejecutar un comando sólo si el anterior finaliza correctamente

apt-get update && apt-get upgrade

Indicarle a un utilitario que deje de interpretar opciones

Sólo se deben utilizar dos guiones del medio. Por ejemplo quiero buscar dos guiones del medio consecutivos en cierto contenido utilizando grep:

root@debian:~# history | grep '--'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.

Aunque utilice comillas, grep interpreta el guión del medio como delimitador de una opción. La forma correcta es:

root@debian:~# history | grep -- --
  167  git commit --amend --reset-author
  508  history | grep '--'

En el primer comando, grep interpreta los guiones como opciones, a pesar de que se utilicen comillas, comillas dobles o escapes. En el segundo ejemplo, primero se indica a grep que deje de interpretar opciones y luego se pasa el parámetro sin inconvenientes.

Crear varios niveles de directorio en un único comando

Utilizar al opción -p de mkdir:

mkdir -p /ruta/a/un/directorio/anidado

Crear y editar un archivo con cat

cat > archivo

Para finalizar, presionar Ctrl+D (atajo de teclado para EOFEnd Of File).

Listar todos los archivos abiertos

Una forma rápida para saber qué archivos de log están siendo utilizados por demonios o servicios:

lsof | grep "\.log"

Omitir a grep en la salida de ps

En el artículo Tip: cómo ocultar el proceso grep en la salida de ps compartí este ingenioso truco.

root@hal9000:/usr/home/emi # ps x | grep "ntpd"
1620  -  Ss     0:00.07 /usr/sbin/ntpd -c /etc/ntp.conf -p /var/run/ntpd.pid -f /var/db/ntpd.drift
1682  2  S+     0:00.00 grep ntpd

Simplemente se debe encerrar cualquier letra del patrón de búsqueda entre corchetes:

root@hal9000:/usr/home/emi # ps x | grep "[n]tpd"
1620  -  Ss     0:00.07 /usr/sbin/ntpd -c /etc/ntp.conf -p /var/run/ntpd.pid -f /var/db/ntpd.drift

Listar los archivos modificados en las últimas 24 horas

Otro interesante comando que compartí previamente en el artículo Listar los archivos modificados en las últimas 24 horas:

find . -type f -mtime -1 -exec ls -gGh --full-time '{}' \; | cut -d ' ' -f 4,5,7

Listar sólo las conexiones establecidas

netstat -tupn | grep EST

Identificar el proceso asociado a una conexión establecida

Información útil que provee netstat:

netstat -tupnee

Obtener estadísticas de red

netstat -s

Remover la ruta en un nombre de archivo

El utilitario basename remueve el directorio y sufijo en un nombre de archivo. Muy útil al momento de crear scripts:

root@linuxito:/usr/local/nginx# pwd
/usr/local/nginx
root@linuxito:/usr/local/nginx# basename $(pwd)
nginx

Mandar un proceso a segundo plano

Si hemos lanzado un proceso largo en primer plano, y deseamos que continúe ejecutando en segundo plano (como si lo hubiésemos lanzado con &), sólo es necesario presionar Ctrl+Z para suspenderlo y luego bgpara que continúe en background.

emi@hal9000:~ % ping 8.8.8.8 >/dev/null 
^Z
Suspended
emi@hal9000:~ % jobs
[1]  + Suspended                     ping 8.8.8.8 > /dev/null
emi@hal9000:~ % bg 1
[1]    ping 8.8.8.8 > /dev/null &
emi@hal9000:~ % jobs
[1]    Running                       ping 8.8.8.8 > /dev/null

Terminar un proceso en segundo plano

Si hemos lanzado un proceso en segundo plano y deseamos terminarlo abruptamente (kill), no es necesario conocer su PID. Es posible matarlo indicando su número de trabajo:

emi@hal9000:~ % jobs
[1]    Running                       ping 8.8.8.8 > /dev/null
emi@hal9000:~ % kill %1
emi@hal9000:~ % jobs
[1]    Terminated                    ping 8.8.8.8 > /dev/null

Cómo saber el pid de la sesión actual

En Bash, la variable $ expande al PID de la sesión actual (instancia de Bash en ejecución):

echo $$

Contar filas repetidas

Algo como lo que haría un administrador de bases de datos al usar COUNT(*) en conjunto con GROUP BY. Contar la cantidad de repeticiones de una misma fila utilizando sort y uniq:

[COMANDO] | sort | uniq -c | sort -nr

Buscar archivos por contenido

Una vez más grep al rescate, por lejos mi comando favorito:

grep -r 'ssl' /etc/apache2/*

Este comando busca recursivamente la palabra «ssl» dentro del contenido de todos los archivos dentro del directorio /etc/apache2/.

Buscar archivos por nombre

Con la opción -iname se ignoran mayúsculas/minúsculas (case) en los nombres de archivo. Utilizar asteriscos para buscar patrones:

find /etc/apache2/ -iname "*.conf"

Conocer el formato de un filesystem

Pasar el nombre de dispositivo como parámetro a file:

root@devuan:~# file -s /dev/sda1 
/dev/sda1: Linux rev 1.0 ext4 filesystem data, UUID=bed6a1f2-ec59-4913-9af6-0e2f66ac2954, volume name "ROOT" (needs journal recovery) (extents) (large files) (huge files)

Invertir el orden de las líneas de un archivo

El comando tac es cat pero concatena e imprime en orden reverso:

tac ARCHIVO
root@devuan:~# cat /etc/shells 
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
root@devuan:~# tac /etc/shells
/bin/rbash
/bin/bash
/bin/dash
/bin/sh
# /etc/shells: valid login shells

Invertir un string

El comando rev permite invertir un string (transformar «hola» en «aloh»). Opera sobre cada línea de un archivo de manera individual:

root@devuan:~# rev /etc/shells
sllehs nigol dilav :sllehs/cte/ #
hs/nib/
hsad/nib/
hsab/nib/
hsabr/nib/

Buscar ayuda

Para buscar ayuda en páginas de manual (por ejemplo, si no conocemos la página de manual que debemos consultar) recurrir a apropos:

apropos PALABRA_CLAVE

Imprimir un árbol de procesos

Hay varias formas de hacerlo:

tree
ps -ejH
ps axjf

Volcar un archivo binario por salida estándar

hexdump -C ARCHIVO

Responder «yes» a cualquier comando interactivo

Trivial:

yes | COMANDO

Yes imprime el caracter ‘y’ forever, no como el pájaro de Homero.

Realizar cálculos matemáticos por línea de comandos

La herramienta bc se puede utilizar como calculadora de línea de comandos:

emi@hal9000:~ % echo "1024*1024" | bc
1048576

Obtener rápidamente nuestro id de usuario

Y de todos los grupos a los que pertenecemos:

emi@hal9000:~ % id
uid=1001(emi) gid=0(wheel) groups=0(wheel),44(video),920(vboxusers)

Matar procesos por nombre

Matar o enviar cualquier señal por nombre de ejecutable en vez de PID:

pkill PROGRAMA

Conectar con un pipe la stderr

Si necesitamos conectar tanto la salida estandar (stdout) como la salida de errores (stderr) de un proceso, a la entrada estandar (stdin) de otro, debemos agregar ampersand luego del pipe:

COMANDO1 |& COMANDO2

Actualizado: noviembre de 2017.

Change Timezone in CentOS | Cambiar el timezone en Centos

First, make a backup of the existing localtime file. It’s always good practice to make backups of original config files.

[gaarai@server ~]$ sudo mv /etc/localtime /etc/localtime.bak

Next, create the link:

[gaarai@server ~]$ sudo ln -s /usr/share/zoneinfo/America/Chicago /etc/localtime

Make sure to replace America/Chicago with the directory (if your zone has one) and filename of the timezone you wish to use.

Now you just need to test your change. Run date from the command line, and ensure that the appropriate time, date, and timezone are reported.

How to clean /tmp on Centos/cPanel server | Limpiar /tmp en un servidor CentOS

How to clean /tmp on Centos/cPanel server

open SSH to your server, if SSH will not connect due to disk space full in tmp, reboot your server in cloud server manager then try again.
Once connected run the following command

yum install tmpwatch -y

once tmpwatch is installed run command

/usr/sbin/tmpwatch -am 12 /tmp

this will delete all files over 12 hours old

next, we will configure your server to do this automatically.

from SSH type:  crontab -e

go to the very bottom and paste

0 4 * * * /usr/sbin/tmpwatch -am 12 /tmp

then press Control+X (on PC) or Command+x (on Mac) you will get confirmation do you want to save. Type Y for yes, and press enter.

The Location for the corntab for root ,    /var/spool/cron  so you can add the line by using CSE

You can remove session file using following command.

# cd /tmp
# rm -rf sess_*

Bloquear dominio para que no envíe mail usando SMTP exim

How to Disable a Domain From Sending Email

You can easily disable inbound email for a single domain simply by switching off the MX records and/or removing the domain from /etc/localdomains.  However, disabling a domain from sending email off of your server is slightly more complicated.  Even if you manage to disable the domain of an account from sending out, you still have to deal with the fact that the cPanel user itself can send email.  This user has the address of user@serverhostname, and is the default sender for scripts that utilize sendmail.  In other words, any PHP or Perl script that sends email off of your server without using proper SMTP authentication will send mail as the cPanel user.

Disable Email from Specific Domains

First, create a file called /etc/blockedsenderdomains, and add the list of domains to block email from to this file, one line at a time.
Then go into WHM > Exim Configuration Manager > Advanced Editor, and add the following to “Section: CONFIG” part:

domainlist blocked_domains = lsearch;/etc/blockedsenderdomains

In the ROUTERSTART section, add:

reject_domains:
 driver = redirect
 domains = +blocked_domains
 allow_fail
 data = :fail: Connection rejected: SPAM source $domain is manually blacklisted.

Then save the file.


Primero hacer 2do paso y luego editar con nano /etc/exim.conf  el 1er paso porque en cpanel no te deja agregar linas de config, es una verga.

 

Cambiar IP de salida de Mails en EXIM: /etc/mailips

Editing /etc/mailips

This file controls the IP address from which each domain should send mail. You will, as in the example above, need to create and open the/etc/mailips file to edit with your preferred text editor. You will need to configure this file in the following way:

1
2
3
4
5
example.com: 192.168.0.2
sub.example.com: 192.168.0.2
example.net: 192.168.0.3
addon.example.net: 192.168.0.3
*: 192.168.0.1

Note:

In the example above, the asterisk (*) entry will be used to direct outbound mail for domains without entries within this file. In this case, this should be your server’s main shared IP address. You can set it to another IP address if you ensure that the asterisk entry in /etc/mailhelo has the appropriate domain name.

Tutorial “chmod”, permisos en GNU/Linux

Tutorial “chmod”, permisos en GNU/Linux

Hay tres tipos de permisos para archivos:

  • Permiso de lectura (read)
  • Permiso de escritura (write)
  • Permiso de ejecución (execute)

Los permisos son representados mediante sus respectivas iniciales y en el caso de Execute con una x

  • Read: r
  • Write: w
  • Execute: x

En GNU/Linux cada archivo y directorio tiene tres combinaciones de permisos

  • Combinación de permisos para el propietario
  • Combinación de permisos para el grupo al que pertenece el propietario
  • Combinación de permisos para el resto de usuarios

Practiquemos:

$ sudo chmod g+rwx archivo

La g indica grupo, el símbolo + indica que agregaremos permisos, rwx son los permisos a ser asignados

Ahora agregaremos todos los permisos al propietario y al grupo del propietario, pero quitamos todos los permisos de los demás usuarios

$ sudo chmod u+rwx,g+rwx,o-rwx archivo

El signo quita permisos, el signo + agrega, u es para el usuario propietario del archivo, g para el grupo y o para otros usuarios.

Agreguemos todos los permisos a todos los usuarios

$ sudo chmod ugo+rwx archivo

Asignemos permiso de lectura y escritura a los otros usuarios

$ sudo chmod o+rw archivo

También se puede optar por asignar permisos en octal:

$ sudo chmod 777 archivo

El primer 7 es para el usuario propietario, el segundo es para el grupo del usuario propietario y el último 7 es para los otros usuarios.

7 = lectura, escritura, ejecución
6 = lectura, escritura
5 = lectura, ejecución
4 = lectura
3 = escritura, ejecución
2 = escritura
1 = ejecución
0 = sin permisos

Es más difícil agregar o quitar permisos con el sistema octal, pero igual de válido.

Si es un directorio y no un archivo?

$ sudo chmod ugo+rwx -R /directorio

La -R hace recursivo al comando y afectará a todos los archivos y directorios contenidos dentro del directorio.

También se puede agregar o quitar permisos al usuario propietario, al grupo y a los otros solo indicando + ó – seguido de los permisos

$ sudo chmod +rwx archivo

$ sudo chmod +x archivo

$ sudo chmod -w archivo

Para ver los permisos de un archivo o directorio

$ ls -l