How to use /dev/(u)random

How can I use /dev/(u)random on Ubuntu or any *nix sistems?

I tried this but it says permission denied.
Note : I also tried as root.

/dev/(u)random
sudo /dev/(u)random
sudo -s; /dev/(u)random

It's a file like device, so you can do things like cat it or copy from it. For instance:

dd if=/dev/urandom of=~/urandom_test count=4 bs=1024

Creates a file containing 4K of random bytes.

cat /dev/urandom > ~/urandom_test2 

Will continue to write random bytes to that file until you hit Ctrl-C. Don't do this on a low performing system...

head -30 /dev/urandom > ~/urandom_test3

Will write 30 lines of random bytes


Get random bytes

If you need a certain number of random bytes, read that number of bytes from /dev/urandom.
It is a "special file" that is made to be like a file to read random numbers from.

Using cat to read from /dev/urandom is a bad idea, because it will try to read /dev/urandom to the end - but it does not end.

You can use head. But take care to read by byte, not by line - because lines would be randomly separated by random newline bytes.

So, to read 30 random bytes into a file random.bytes, use:

head -c 30 /dev/urandom > random.bytes

You can read from it as a normal user.

Leave alone /dev/random

Normally, you want to use /dev/urandom, not /dev/random.

The problem is that /dev/random is hard to use in the right way - and easy to use in a wrong way. Using it wrong works at first, but creates strange - even random - performance problems later. Sometimes.

When you use /dev/urandom, it makes use of /dev/random internally, taking care of the tricky parts.


If you want to just read it with recognized numbers you can do

od -d /dev/random