5

I'm making a deb package to install a custom application. I changed all files/folders ownership to root in order to avoid the warnings I was getting during installation, and in Ubuntu all runs smoothly, as Ubuntu changes the ownership of the files/folders to the user installing the package.

But when I'm installing on Debian, root remains the owner. The application uses a folder to write data, and here is the problem. Running as a standard user, the app does not have permission to write on the folder.

Now, how should I deal with this problem? Should I make a post install script on the deb package, doing the chmod o+w? Should I package the directory already with those permissions set?

Or is there any way of setting the owner of the files to the user that installs the app automatically (like Ubuntu does)?

  • 1
    A little more context might be helpful. I'm unclear why you need custom permissions. Can you elaborate? – Faheem Mitha Feb 24 '16 at 20:14
  • Root owns the folder, but the program is run by standard user. When the program attempts to write on the folder, it fails due to lack of permissions. – Nuno V. Feb 25 '16 at 8:48
  • Well, ok, but why is it set up this way, and do you have the ability to change it? Needless to say, this isn't a standard setup. One way to go is to create a system user/group for that program. There are many such on your system. You can see them in /etc/group. Regular owners do not normally own system files. – Faheem Mitha Feb 25 '16 at 10:03
  • I actually changed the way it works. There is some data i decided to put on the /usr/local/share/<appname>, and when starting the app it tests for the existence of a directory at the user's home. Case it does not exist, creates it, copies the needed data it to and uses it to store modified data. It solves the permissions issue. Still i'll look into the possibility of creating the user/group, as may be of interest to share the data among all users. – Nuno V. Feb 25 '16 at 10:52
  • 1
    Debs are by definition not locally installed. – Faheem Mitha Feb 25 '16 at 14:22
9

I'm not sure what the behaviour is in Ubuntu, but in general for a .deb package containing files or directories with non-standard permissions you need to ensure those permissions are set after dh_fixperms is run. If you're using a dh-style rules, you can do this as follows:

override_dh_fixperms:
        dh_fixperms
        chmod 777 yourfolder

You can also do this in a postinst:

if [ "$1" = "configure" ]; then
    chmod 777 yourfolder
fi

but the rules approach is simpler (at least, I prefer doing that rather than relying on maintainer scripts).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.