http://www.perlmonks.org?node_id=988280


in reply to Re^2: Program requires special privilege e.g. as root or admin
in thread Program requires special privilege e.g. as root or admin

romy_mathew:

What are the permissions on /var/mail? If it's owned by root and doesn't give your account permission to the directory, you won't get to write to it, even if you have write access to the symlink. Example:

$ mkdir foo foo/bar foo/baz foo/bat $ cd foo $ chmod 000 bar $ ls -al total 44 drwxr-xr-x 5 marco marco 4096 2012-08-18 22:07 . drwxr-xr-x 4 marco marco 28672 2012-08-18 22:07 .. d--------- 2 marco marco 4096 2012-08-18 22:07 bar drwxr-xr-x 2 marco marco 4096 2012-08-18 22:07 bat drwxr-xr-x 2 marco marco 4096 2012-08-18 22:07 baz

OK, now we have directories bar and bat, identical except that bar has no permissions for anyone. Let's go into baz and make symlinks to bar and bat:

$ cd baz $ ln -s ../bar bar $ ln -s ../bat bat $ ls -al total 8 drwxr-xr-x 2 marco marco 4096 2012-08-18 22:08 . drwxr-xr-x 5 marco marco 4096 2012-08-18 22:07 .. lrwxrwxrwx 1 marco marco 6 2012-08-18 22:08 bar -> ../bar lrwxrwxrwx 1 marco marco 6 2012-08-18 22:08 bat -> ../bat

As you can see, the permissions on the bar symlink are the same as for the bat symlink. Let's create a file and copy it to bar and bat:

$ touch t $ cp t bat $ cp t bar cp: cannot stat `bar/t': Permission denied $ ls bat t $ ls bar ls: cannot open directory bar: Permission denied

What happened? You have access to the symlink, but not to the underlying directory. In short, if you're going to write a file to the directory, you'll need write access to the underlying directory.

...roboticus

When your only tool is a hammer, all problems look like your thumb.