Unable to write on /dev/* files Unable to write on /dev/* files shell shell

Unable to write on /dev/* files


I assume that you are normally not root on your bash shell. Then this command line

sudo echo 54 > /dev/scull

does not what you think. The command is executed in two steps:

  1. The bash setups the output redirection, i.e., it tries to open /dev/scull with the current user privileges.
  2. The command sudo echo 54 is executed whereas stdout is connected to the file.

As you have no write-permissions as non-root user, the first step fails and the bash reports

"bash: /dev/scull: Permission denied"

You must already be root to setup the output redirection. Thus execute

sudo -i

which gives you an interactive shell with root privileges. The you can execute

echo 54 > /dev/scull

within that root shell.


I know the thread is too old to answer but just in case if someone wants to know alternative method without switching to root user, here is the solution:

sudo bash -c 'echo "54" > /dev/my_dev'


I wanted to note that on your system only root (file owner) has read / write permissions. Your (normal) user account has not! So another (fast) solution would be to give all users read / write permissions.

Probably this is not the safest solution! Only do this in your test environment!

sudo chmod a+rw /dev/scull

But now you test your module with your user account (without sudo)

echo "hello, world!" > /dev/scull
cat < /dev/scull