LocalFileShare

Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.

Summary

This specification is about creating locally-shared folders appearing in Places -> Computer. These folders would allow local users to easily share files or directories. Permissions would by default allow every user to read/write all the files there. In a simple implementation, on folder allow all users to access to the files in it. In a further implementation, every two users have a common folder to share files exclusively between them.

Release Note

You can now pass documents and folders to any person on your computer in order to read it, edit it, use it at the same time or collaborate on a joint work. Just add the files you want to Place -> Computer -> Shared folder.

Rationale

At the time, there's absolutely no easy way for a user to give a file to another user on the same computer: you'd better use an email. It would be nice to add "Shared folders" common to all physical users of the system, that would be used in home desktops: you should be able to copy a file to there and another to read/edit it. In an improved version (to overdo Windows here), we could create folders to share files exclusively with one user. On desktops, with typically < 5 users, this is not an issue: in Places -> Computer, there is perfectly fit space for it (maybe in a subfolder called "Shared Folders")

Use Cases

Jean-Pierre has found a text he wants his daughter to read. He simply copies it to the shared folder and she can immediately get it, and save it if she likes.

Hervé and Julie are brother and sister and enjoy the same kind of music. They use different user accounts on the same machine for more customization and security. Though, they would like to share a folder with their music in order to save space and benefit from their respective collections. They simply create a Music 'folder' in their common shared folder for that.

Jean-Pierre and Julie eventually decide to work together to elaborate a text: the easiest way to do this is to put it in their common shared folder and edit it each one at a time. They don't have to mess everything with complex Unix permissions they don't understand on their home folders.

Design

Other idea: It appears that default permissions management is not able to do that out of the box.

  • This is a myth that may have developed because they aren't set up to show what they ara capable of in some distros.

ACLs allow an option (setfacl -d) to keep the permissions of the parent folders for the files created within; though, copying a file won't work (AFAIK and without tricks). A solution would be to use a script to change the permissions every time a file is updated (using dbus and inotify?).

  • The "set group id" flag is a tried and proved method for group directories within the user private group scheme.

Considering the first use case, the shared folder could be located in /home/shared, owned by root and set to rwx for the group users. In the second (further) scenario, we could: - create subdirectories in /home/shared for each couple of users to share files, i.e. /home/shared/user1-user2 for the shared folder of user2 and user2. - create directories in /home/ for each couple of users, i.e. /home/user1-user2. In this scenario, the user1-user2 dirs are owned by root, set to a group including only these two users, and set to rwx for this group. ACLs may help here, but are not necessary.

Optionally, symlinks could be used to ensure shared files from an user are included in its home, so when a backup is used, these files are not lost.

Implementation

other idea: - Use a script to update permissions every time it is needed. - During the update, ensure that needed groups and folders are created. We may consider installing package acl by default, but again this is not necessary. - When a new user is created, new shared folders should be follow.

UI Changes

Add folders in Computer place in Nautilus, linking to /home/shared/XXXX or /home/XXXX.

Code Changes

Code changes should include an overview of what needs to change, and in some cases even the specific details.

Outstanding Issues

When you choose to make a file/directory from you home folder readable/writable to one or some users, it can't be accessed easily: others don't know what files they can access, and they need to go to / and then /home to (possibly) find them. The problem is, in console you can access files without going through directories you can read, by typing directly the path; in graphical mode, you have to go through the whole path folder by folder.

When a file is set to be accessible to some users, we could find a way to show it somewhere to involved users. This would be the next step of graphical desktop local file sharing.

BoF agenda and discussion

Use this section to take notes during the BoF; if you keep it in the approved spec, use it for summarising what was discussed and note any options that were rejected.


CategorySpec

LocalFileShare (last edited 2010-05-04 13:15:06 by ceg)