Sunday, 29 November 2009

Attach a projector to Xubuntu with Nvidia cards

The other day I faced a problem just before my talk in the first meeting of R users in Spain: I could not project to the big screen. The usual Settings > Display menu was of no help.

What you need to do is to run

sudo nvidia-settings

in your terminal and then go to X Server Display Configuration.

There, after pluging in the video cable for the projector, you should click on the Detect Displays button for the video card to detect the new screen. The Configuration: Separate X Screen button allows you to decide where to project your X, locally, on the projector or in both displays.

Tuesday, 17 November 2009

Restrict ssh access to Linux server to members of a group

You may want to restrict ssh access to a server to members of a group. I faced this problem when I only wanted members in the "consultants" group to be able to log into our CentOS server.

In order to achieve this, you need only edit the file sshd_config (in CentOS, it is located in /etc/ssh, but this may be distribution-dependent) and add the following line to it:

AllowGroups consultants

Mind that this line, contrary to intuition, does not grant members of the "consultants" group the right to log in, but restricts this right to any other member in any other group. So, perhaps you may want to use

AllowGroups consultants root

instead so as to allow root logins (just in case).

Sunday, 18 October 2009

Notepad-compatibility for copy and paste in vim and gvim

Unfortunately, even us, Linux die-hards, get used to other OS conventions, such as copy-pasting with Control-C and Control-V. Maybe because in some other OS, by design, you need to spend hours copying and pasting.

In any case, if you want your Vim and GVim on your Linux box responding to Control-C and Control-V for these operations you need to map these key combinations to their internal counterparts, "+y and "+gP respectively.

In order to achieve this, you need just go to your home directory and add to the .vimrc file there the following three lines:

nmap <C-V> "+gP
imap <C-V> <ESC><C-V>i
vmap <C-C> "+y

A final piece of advice: use it with care! Copy/paste operations do not increase the amount of information but increase its size.

Friday, 2 October 2009

Five levels of purpose

I copy from another source because I want to keep them handy. Here are the five levels of purpose:

  1. Check present position
  2. Set goals
  3. Affirm priorities
  4. Forecast future position
  5. Create change

Too many open files in Alfresco

Recently, my Alfresco installation on Centos 5.3 started to behave randomly and some functionalities became suddenly unavailable. A quick view in the error logs showed a pattern, a string of "too many open file" complaints.

The reason is that there is a limit on the maximum number of open files a user may keep open. The user running Alfresco had just 1024 of them, too few, it seems, for its normal operations. You can check the number of open files allowed per user with the command

cat /proc/sys/fs/file-max

Increasing this value is simple: first, edit the file /etc/sysctl.conf adding a row such as

fs.file-max = 4096

Then, run 

sysctl -p

to make the changes in the file available. Then, finally, you will need to restart your Alfresco installation.


Sunday, 9 August 2009

Toggling keyboards in Xubuntu

I recently switched to Xubuntu from Ubuntu. I wanted to retain the ability to switch from ES to US keyboard by pressing my right control key. For this purpose, I created a new file at /usr/bin called togglekeyboard. The file contains:

#!/bin/bash
setxkbmap -option grp:switch,grp:rctrl_toggle us,es

us and es stand for US and Spanish keyboards. You will better know the id of your desired keyboard flavour.

Then, rctrl_toggle asks setxkbmap to toggle the keyboard on the right-control-key-pressed event. I chose this key as I am not using it for anything else. I got used to press the left control key for all properly controlish purposes. Other options that may suit you are:

  • toggle – right alt key
  • ctrl_shift_toggle – ctrl+shift
  • alt_shift_toggle – alt+shift
  • ctrl_alt_toggle – ctrl+alt
  • caps_toggle – CapsLock
  • lctrl_toggle – left control key
  • switch – switch while the right alt is pressed
  • lwin_switch – switch while the left Windows key is pressed
  • rwin_switch – switch while the right Windows key is pressed
  • win_switch – switch while the any Windows key is pressed

Thursday, 6 August 2009

Restricting access to PostgreSQL databases to users

I have created some postgres databases and I want given users to have access only to them (and no others) from any network. For that purpose, in the pg_hba.conf configuration file, under the IPv4 local connections header, I have created the following entries:

host all postgres 0.0.0.0/0 password
host all cjgb 0.0.0.0/0 password

These are the entries that provide unrestricted access to myself (impersonated by either the postgres or the cjgb user) as administrator of the database to connect to "all" databases from "0.0.0.0/0", this is, any host, provided I use the right password.

Access for the other users is restricted as follows:

host varios varios 0.0.0.0/0 password
host postgres varios 0.0.0.0/0 password
host riesgo_desviacion riesgo_desviacion 0.0.0.0/0 password
host postgres riesgo_desviacion 0.0.0.0/0 password

Users varios and riesgo_desviacion can only access tables varios and riesgo_desviacion (respectively) from any network if they provide the right password. I also had to grant them access to the postgres database (for reasons I still have to investigate, but that I am afraid stem from the fact that I mistakenly used the postgres database as template to create the new ones).