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
  • 1
    Note that if you are installing using a deb, then you should not install in /usr/local. That would be a violation of the FHS and Debian policy, and generally a bad idea. I recommend using a proper build system. Both autotools and cmake are popular. A handwritten makefile or similar is also an option, but would require more manual work. – Faheem Mitha Feb 25 '16 at 11:21
  • 2
    Debs are by definition not locally installed. – Faheem Mitha Feb 25 '16 at 14:22

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:

        chmod 777 yourfolder

You can also do this in a postinst:

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

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.