Category: Linux

  • Ubuntu Remap keys in the keyboard

    Left Shift key on my keyboard started acting up. It some times work, some times it won’t. I never use the caps lock key on my kayboard, this is just above the shift key. So i decided to use this key as left shift key.

    To re-assign key, you need to edit file /usr/share/X11/xkb/symbols/pc

    Lets take a copy of the file before we edit it

    cp /usr/share/X11/xkb/symbols/pc ~/pc-backup
    

    Edit

    sudo gedit /usr/share/X11/xkb/symbols/pc
    

    Find the line

         key  {	[ Caps_Lock		]	};
    

    This is on line 22

    Replace with

         key  {	[ Shift_L		]	};
    

    Now you need to restart X-Windows by pressing ALT+F2, then type r. You can also just reboot your computer for the new keymap to work. After restart, i can use Caps lock key as my Left Shift key.

    If you want to disable left shift key, you can comment the line

        key  {	[ Shift_L		]	};
    

    by adding // at beginning of the line.

    See Ubuntu

  • Red Hat Killing CentOS Linux, Fight for CentOS clone

    Red Hat Killing CentOS Linux, Fight for CentOS clone

    RedHat, parent company of CentOS Linux announce it will stop supporting CentOS 8, the latest version of CentOS. CentOS is build from the source code RHEL, making a free version of stable and well-tested enterprise ready RHEL Linux. CentOS 7 will keep getting security updates until it reaches End Of Life June 30th, 2024. For Red Hat, maintaining CentOS wont help with their business. Now they don’t need to maintain CentOS, this will force many users to pay for Red Hat Enterprise Linux (RHEL).

    RedHat Killing CentOS Linux

    The new version of CentOS known as CentOS Stream is a rolling release. It will be used as a staging version of RHEL. Red Hat expect CentOS Stream to be stable and allow community participation as users will be able to contribute to CentOS Steam. With CentOS, community contribution was limited because it was a copy of RHEL.

    CentOS is populary used in web hosting servers as cpanel only supposed RHEL based Linux. With death of CentOS 8, cpanel have announced they will accelerate investment in development efforts to support additional operating systems. cPanel will suport Ubuntu LTS and expect to deliver a production-ready version in late 2021. After Ubuntu LTS, they will look into supporting Debian. Ubuntu is very popular with Cloud Servers as it come with latest software compared to CentOS. With many developers already using Ubuntu on their Desktop, supporting Ubuntu is wise decision by cpanel.

    With CentOS 8 unexpected demise, many users will be looking for alternative OS. This opens up market for next CentOS clone.

    Rocky Linux

    CentOS co-founder, Gregory Kurtzer announced he will be releasing his own Red Hat Enterprise Linux (RHEL) replacement Rocky Linux. No ETA on release date yet.

    https://rockylinux.org

    You can join discussion on their reddit.com/r/RockyLinux/

    Project Lenix

    Igor Seletskiy, CloudLinux CEO and founder said they will make their own RHEL patch to patch compatible Open Source Linux – Project Lenix.

    CloudLinux is a CentOS based commerical Linux, that is popular amoung web hosting providers as it allow resource limit per user and user isolation with CageFS. They also have support for kernel update with out reboot.

    CloudLinux will be investing more than a million dollar into Project Lenix. CentOS 8 users will be able to convert into Project Lenix or CloudLinux easily with out reboot. In the announcement Igor Seletskiy said “Red Hat’s announcement has left users looking for an alternative with all that CentOS provides and without the disruption of having to move to alternative distributions. We promise to dedicate the resources required to Project Lenix that will ensure impartiality and a not-for-profit community initiative. CloudLinux already has the assets, infrastructure, and experience to carry out the mission, and we promise to be open about the process of developing Project Lenix”.

    See CentOS

  • Ubuntu Server 20.04 set static IP with netplan

    First check if you have file

    /etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg

    If the file exists, make sure, you have the following content in it.

    root@ubuntu:~# cat /etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg
    network: {config: disabled}
    root@ubuntu:~# 

    Edit

    vi /etc/netplan/00-installer-config.yaml

    Replace all content with

    network:
        version: 2
        ethernets:
            eth0:
                addresses: [192.168.1.100/24]
                routes:
                    - to: default
                      via: 192.168.1.1
                nameservers:
                    addresses: [1.1.1.1, 8.8.8.8]

    In the above cause 192.168.1.100 is your static IP address. 192.168.1.1 is the gateway. eth0 is the network interface name.

    Older versions of netpan used gateway4 instead of routes.

                gateway4: 192.168.1.1

    Now try the changes with

    netplan try

    If all is good, you can make changes permanent with

    netplan apply

    See IP

  • imunify360 find license details

    To check if your imunify360 license is valid, run

    imunify360-agent rstatus
    

    Example

    [root@ldb002 ~]# imunify360-agent rstatus
    OK
    [root@ldb002 ~]# 
    

    To get more details of imunify360 license installed on the server

    imunify360-agent rstatus --json --verbose
    

    Example

    [root@ldb002 ~]# imunify360-agent rstatus --json --verbose
    {
      "expiration": null,
      "id": "Imunify360-xxxxxxxx",
      "license": {
        "expiration": null,
        "id": "Imunify360-xxxxxxxx",
        "license_type": "imunify360",
        "message": "",
        "redirect_url": "",
        "status": true,
        "user_count": 5,
        "user_limit": 2147483647
      },
      "license_type": "imunify360",
      "message": "",
      "redirect_url": "",
      "status": true,
      "strategy": "CSF_COOP",
      "user_count": 5,
      "user_limit": 2147483647,
      "version": "5.3.3-1"
    }
    [root@ldb002 ~]#
    
  • supervisorctl

    supervisorctl is used to control supervisord.

    To reload all monitored processes, run

    supervisorctl reload
    

    To restart a monitored process, run

    supervisorctl restart PROCESS_NAME_HERE
    

    See supervisord

  • pvdisplay

    pvdisplay is used to display all physical volumes on a LVM.

    root@server12:~# pvdisplay
      --- Physical volume ---
      PV Name               /dev/sda3
      VG Name               vg
      PV Size               <9.51 GiB / not usable 0   
      Allocatable           yes (but full)
      PE Size               4.00 MiB
      Total PE              2434
      Free PE               0
      Allocated PE          2434
      PV UUID               VA8sp6-2zKJ-GGtJ-aWe5-cPlm-uTHu-oKpiua
       
      --- Physical volume ---
      PV Name               /dev/sda4
      VG Name               vg
      PV Size               30.00 GiB / not usable 4.98 MiB
      Allocatable           yes (but full)
      PE Size               4.00 MiB
      Total PE              7679
      Free PE               0
      Allocated PE          7679
      PV UUID               LjsCxR-J0lC-5z2P-Fqew-MXoG-59X3-B7dmDP
       
      --- Physical volume ---
      PV Name               /dev/sda5
      VG Name               vg
      PV Size               <40.00 GiB / not usable 3.98 MiB
      Allocatable           yes (but full)
      PE Size               4.00 MiB
      Total PE              10239
      Free PE               0
      Allocated PE          10239
      PV UUID               km0iBF-XakC-s9GF-hFnf-K1b0-4Hec-FAEcwp
       
    root@server12:~# 
    

    See LVM

  • lvdisplay

    lvdisplay is used to display logical volumes. You can also use lvs command.

    root@server12:~# lvdisplay
      --- Logical volume ---
      LV Path                /dev/vg/lv_root
      LV Name                lv_root
      VG Name                vg
      LV UUID                aLjP9v-Cc6s-mxS6-kcKz-Fs4e-kW5c-Wuq009
      LV Write Access        read/write
      LV Creation host, time ubuntu-server, 2020-05-19 13:02:06 +0000
      LV Status              available
      # open                 1
      LV Size                78.99 GiB
      Current LE             20222
      Segments               3
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:0
       
      --- Logical volume ---
      LV Path                /dev/vg/lv_swap
      LV Name                lv_swap
      VG Name                vg
      LV UUID                es9Yvn-Tfh1-KO6L-7cAw-N1jg-9NAL-9hd3To
      LV Write Access        read/write
      LV Creation host, time ubuntu-server, 2020-05-19 13:02:07 +0000
      LV Status              available
      # open                 2
      LV Size                520.00 MiB
      Current LE             130
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:1
       
    root@server12:~#
    

    See LVM

  • CentOS 6 Invalid release/repo/arch combination

    CentOS 6 Invalid release/repo/arch combination

    When i run yum update on a CentOS 6 server, i get error “Invalid release/repo/arch combination/”.

    CentOS 6 invalid release

    This error is due to CentOS reaching its End Of Life and no longer supported.

    What you need to do is upgrade your server to the latest supported CentOS versions like CentOS 7 or CentOS 8. Converting to Oracle Linux 6 is another option, it is binary compatible with CentOS/RHEL 6, offers extended support until Jun 2024 and Indefinite Sustaining Support. If you want to convert CentOS 6 to Oracle Linux, see How to Migrate CentOS to Oracle Linux.

    If you just need to fix the error, you need to go through each .repo file in the folder

    /etc/yum.repos.d/
    

    Comment out lines like

    mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
    

    Replace it with centos 6 vault repo URL

    baseurl=https://vault.centos.org/centos/$releasever/os/$basearch/
    

    You can find modified yum repository files at

    https://github.com/serverok/centos6-repo

    You can replace your existing repository files inside /etc/yum.repos.d folder with files in the above git repository with following commands.

    cd /etc
    mv yum.repos.d yum.repos.d-old
    git clone https://github.com/serverok/centos6-repo.git yum.repos.d
    

    If you get git not found error, you may need to manually download files from the repo and place in the directory /etc/yum.repos.d/.

    After this, you will be able to update your system. If you have any other repo installed, you can copy it from yum.repos.d-old folder to make it active again.

    Here is the updated CentOS-Base.repo file

    https://raw.githubusercontent.com/serverok/centos6-repo/main/CentOS-Base.repo

    # CentOS-Base.repo
    #
    # The mirror system uses the connecting IP address of the client and the
    # update status of each mirror to pick mirrors that are updated to and
    # geographically close to the client.  You should use this for CentOS updates
    # unless you are manually picking other mirrors.
    #
    # If the mirrorlist= does not work for you, as a fall back you can try the 
    # remarked out baseurl= line instead.
    #
    #
    
    [base]
    name=CentOS-$releasever - Base
    baseurl=https://vault.centos.org/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #released updates 
    [updates]
    name=CentOS-$releasever - Updates
    baseurl=https://vault.centos.org/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #additional packages that may be useful
    [extras]
    name=CentOS-$releasever - Extras
    baseurl=https://vault.centos.org/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    baseurl=https://vault.centos.org/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #contrib - packages by Centos Users
    [contrib]
    name=CentOS-$releasever - Contrib
    baseurl=https://vault.centos.org/centos/$releasever/contrib/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    

    After updating yum repo, run

    yum clean all
    yum makecache
    
  • Firewalld

    firewall-cmd is used to manage firewall (iptables). It is used by default on latest version of CentOS, RHEL.

      Check firewall status

      To see if firewall is running of not use

      firewall-cmd --state

      or

      systemctl status firewalld

      To disable firewalls

      systemctl stop firewalld
      systemctl disable firewalld

      Open a port in firewall

      To allow HTTP and HTTPS traffic, run

      firewall-cmd --permanent --zone=public --add-service=http
      firewall-cmd --permanent --zone=public --add-service=https
      firewall-cmd --permanent --zone=public --add-service=ssh
      firewall-cmd --permanent --zone=public --add-port=25/tcp
      firewall-cmd --reload

      Permanent option make the changes permanant. You need to reload firewall after using –permanent. If you want to open a port in current session and make it permanant, run the command with and with out –permanent.

      Open a port range in firewall

      firewall-cmd --zone=public --add-port=22-65535/tcp
      

      Close a port in firewall

      To close a port, you can use command same as you open with –add replaced with –remove.

      firewall-cmd --permanent --zone=public --remove-service http
      firewall-cmd --permanent --zone=public --remove-port 25/tcp
      

      Whitelist an IP address

      firewall-cmd --zone=trusted --add-source=IP_ADDR_HERE
      

      To remove an IP, use

      firewall-cmd --zone=trusted --remove-source=IP_ADDR_HERE
      

      Firewalld Zones

      Zone is a collection of rules that can be applied to a specific interface. Some useful commands are

      firewall-cmd --get-active-zones
      firewall-cmd --get-default-zone
      firewall-cmd --list-all-zones
      firewall-cmd --info-zone=public
      

      Zones are stored in /usr/lib/firewalld/zones

      Services

      Services are pre-made rules for a specific application. Some useful commands are

      firewall-cmd --get-services
      firewall-cmd --info-service SERVICE_NAME_HERE
      

      Services are stoed in /usr/lib/firewalld/services/ or /etc/firewalld/services/.

      Save run time configuration into permanant

      firewall-cmd --runtime-to-permanent
      

      iptables

      See firewall

    • Firewalld list all open ports

      Firewalld list all open ports

      To list all open ports in firealld, run

      firewall-cmd --list-ports
      

      You may need to also use

      [root@oc1 ~]# firewall-cmd --list-services
      http https ssh
      [root@oc1 ~]# 
      

      Example

      firewalld list ports

      See firewalld

    • Install Xfce VNC remote desktop on CentOS 7

      Install Xfce VNC remote desktop on CentOS 7

      Xfce is a lightweight linux desktop environment. You can install Xfce on a remote server or virtual machine, connect to it using VNC to use it as a desktop.

      xfce remote desktop

      To install Xfce, enable EPEL repo

      yum install -y epel-release
      

      Install Xfce

      yum groupinstall Xfce
      

      You can see other groups available with command “yum grouplist”.

      Insall vnc server

      yum install -y tigervnc-server
      

      Creating User

      We need to create a normal linux user to use with Xfce. Using it as root is not recommended.

      To create user, run

      useradd -m --shell /bin/bash serverok
      

      Replace “serverok” with whatever username you want to use.

      Configure VNC server

      Change to the user we created before

      su - serverok
      

      To create initial vnc config files and set password, run

      vncserver -fg
      

      We used -fg option to keep vncserver in forground. vcnserver will ask you to set password, this will be used to connect to VNC server.

      When i run “vncserver -fg” on CentOS, it exited with error. If it keep running, press CTRL+C to stop vnc server.

      If you run with out -fg option, you can stop vnc server with command

      vncserver -kill :1
      

      Edit file

      vi /home/serverok/.vnc/xstartup
      

      Replace contents of this file with following

      #!/bin/sh
      
      unset SESSION_MANAGER
      unset DBUS_SESSION_BUS_ADDRESS
      /etc/X11/xinit/xinitrc
      /bin/startxfce4
      

      Now you can start vncserver manually with command

      vncserver -fg
      

      You will be able to connect to VNC server with YOUR_SERVER_IP:1

      Auto start VNC server

      Following need to be done as user root.

      Edit file

      vi /usr/lib/systemd/system/[email protected]
      

      Find

      ExecStart=/usr/bin/vncserver_wrapper  %i
      

      Replaced with

      ExecStart=/usr/bin/vncserver_wrapper serverok %i
      

      reload systemctl

      systemctl daemon-reload
      

      Enable vncserver to start on boot

      systemctl enable vncserver@:1.service
      

      Start vncserver

      systemctl start vncserver@:1.service
      

      Open port in firewall

      You need to open VNC port in firewall. vnc ports start at 5900, for :1, it will be 5901.

      [root@centos7 ~]# netstat -lntp | grep vnc
      tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      1951/Xvnc           
      tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN      1951/Xvnc           
      tcp6       0      0 :::5901                 :::*                    LISTEN      1951/Xvnc           
      tcp6       0      0 :::6001                 :::*                    LISTEN      1951/Xvnc           
      [root@centos7 ~]# 
      

      If you are using firewalld, you can open port 5901 with

      firewall-cmd --zone=public --add-port=5901/tcp
      firewall-cmd --zone=public --add-port=5901/tcp --permanent
      

      firewall-cmd command is run 2 times as first command only make changes in current session. second command with –permanent option make changes permanent, but that only happens after you reload firewalld or reboot server. Running command 2 times make the changes permanent and apply changes to current session.

      See VNC, Remote Desktop