Activity log for bug #857827

Date Who What changed Old value New value Message
2011-09-23 22:17:36 Jason Gerard DeRose bug added bug
2011-09-23 22:18:06 Jason Gerard DeRose visibility private public
2011-09-23 22:18:06 Jason Gerard DeRose security vulnerability yes no
2011-09-23 22:18:40 Jason Gerard DeRose description The FileStore layout was designed with named-based mandatory access control in mind. As all the Novacut components are heavily network-enabled (which is what makes them interesting), we need to really think about security at every layer in our component stack. But we also want a great user experience, of course. The nice thing about the FileStore layout is gives as a predictable pattern for the file names that an app needs to access, so we can use very tight-containment here, but without interfering with the user experience. Files in .dmedia/files/*/* are read-only, and so anything using FileStore needs to at least be able to read from there, something like this: # FileStore in user's home directory: owner /home/*/.dmedia/files/*/* r, # Shared FileStore in /home: /home/.dmedia/files/*/* r, # FileStore on removable drives: /media/*/.dmedia/files/*/* r, # Partition mount points dedicated just to a FileStore (need to consult FSH on location): /var/lib/dmedia/*/.dmedia/files/*/* r, # Does this work in AppAprmor? Perhaps too loose? **/.dmedia/files/*/* r, The above should be all that's needed by a read-only app (FileStore-wise) like the novacut player. Because many apps only need read-only access to the FileStore (remember, dmedia does the downloading for them), the common abstraction should only include permissions needed for read-only use. In terms of writing files, those happen in two directories: **/.dmedia/tmp/* rw, **/.dmedia/partial/* rw, Once a file is written and the content hash computed (or verified), the file is renamed into it's canonical location in .dmedia/files/*/*. I'm not sure if AppArmor has a permsion for "renaming into" separate from "writing", so that an app could rename a file into .dmedia/files/*/*, but only read files already in .dmedia/files/*/*. Probably the easiest way to explore the FileStore layout is to create a FileStore in a temporary directory, which you can do like this: jderose@jgd-test:~$ python3 Python 3.2.2 (default, Sep 5 2011, 21:17:14) [GCC 4.6.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import tempfile >>> tmpdir = tempfile.mkdtemp() >>> from filestore import FileStore >>> fs = FileStore(tmpdir) >>> fs.parentdir '/tmp/tmp1vmne7' >>> fs.basedir '/tmp/tmp1vmne7/.dmedia' And then browse the files in /tmp/tmp1vmne7/.dmedia The FileStore layout was designed with named-based mandatory access control in mind. As all the Novacut components are heavily network-enabled (which is what makes them interesting), we need to really think about security at every layer in our component stack. But we also want a great user experience, of course. The nice thing about the FileStore layout is gives us a predictable pattern for the file names that an app needs to access, so we can use very tight-containment here, but without interfering with the user experience. Files in .dmedia/files/*/* are read-only, and so anything using FileStore needs to at least be able to read from there, something like this: # FileStore in user's home directory: owner /home/*/.dmedia/files/*/* r, # Shared FileStore in /home: /home/.dmedia/files/*/* r, # FileStore on removable drives: /media/*/.dmedia/files/*/* r, # Partition mount points dedicated just to a FileStore (need to consult FSH on location): /var/lib/dmedia/*/.dmedia/files/*/* r, # Does this work in AppAprmor? Perhaps too loose? **/.dmedia/files/*/* r, The above should be all that's needed by a read-only app (FileStore-wise) like the novacut player. Because many apps only need read-only access to the FileStore (remember, dmedia does the downloading for them), the common abstraction should only include permissions needed for read-only use. In terms of writing files, those happen in two directories: **/.dmedia/tmp/* rw, **/.dmedia/partial/* rw, Once a file is written and the content hash computed (or verified), the file is renamed into it's canonical location in .dmedia/files/*/*. I'm not sure if AppArmor has a permsion for "renaming into" separate from "writing", so that an app could rename a file into .dmedia/files/*/*, but only read files already in .dmedia/files/*/*. Probably the easiest way to explore the FileStore layout is to create a FileStore in a temporary directory, which you can do like this: jderose@jgd-test:~$ python3 Python 3.2.2 (default, Sep 5 2011, 21:17:14) [GCC 4.6.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import tempfile >>> tmpdir = tempfile.mkdtemp() >>> from filestore import FileStore >>> fs = FileStore(tmpdir) >>> fs.parentdir '/tmp/tmp1vmne7' >>> fs.basedir '/tmp/tmp1vmne7/.dmedia' And then browse the files in /tmp/tmp1vmne7/.dmedia
2011-09-23 22:25:39 Jason Gerard DeRose description The FileStore layout was designed with named-based mandatory access control in mind. As all the Novacut components are heavily network-enabled (which is what makes them interesting), we need to really think about security at every layer in our component stack. But we also want a great user experience, of course. The nice thing about the FileStore layout is gives us a predictable pattern for the file names that an app needs to access, so we can use very tight-containment here, but without interfering with the user experience. Files in .dmedia/files/*/* are read-only, and so anything using FileStore needs to at least be able to read from there, something like this: # FileStore in user's home directory: owner /home/*/.dmedia/files/*/* r, # Shared FileStore in /home: /home/.dmedia/files/*/* r, # FileStore on removable drives: /media/*/.dmedia/files/*/* r, # Partition mount points dedicated just to a FileStore (need to consult FSH on location): /var/lib/dmedia/*/.dmedia/files/*/* r, # Does this work in AppAprmor? Perhaps too loose? **/.dmedia/files/*/* r, The above should be all that's needed by a read-only app (FileStore-wise) like the novacut player. Because many apps only need read-only access to the FileStore (remember, dmedia does the downloading for them), the common abstraction should only include permissions needed for read-only use. In terms of writing files, those happen in two directories: **/.dmedia/tmp/* rw, **/.dmedia/partial/* rw, Once a file is written and the content hash computed (or verified), the file is renamed into it's canonical location in .dmedia/files/*/*. I'm not sure if AppArmor has a permsion for "renaming into" separate from "writing", so that an app could rename a file into .dmedia/files/*/*, but only read files already in .dmedia/files/*/*. Probably the easiest way to explore the FileStore layout is to create a FileStore in a temporary directory, which you can do like this: jderose@jgd-test:~$ python3 Python 3.2.2 (default, Sep 5 2011, 21:17:14) [GCC 4.6.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import tempfile >>> tmpdir = tempfile.mkdtemp() >>> from filestore import FileStore >>> fs = FileStore(tmpdir) >>> fs.parentdir '/tmp/tmp1vmne7' >>> fs.basedir '/tmp/tmp1vmne7/.dmedia' And then browse the files in /tmp/tmp1vmne7/.dmedia The FileStore layout was designed with named-based mandatory access control in mind. As all the Novacut components are heavily network-enabled (which is what makes them interesting), we need to really think about security at every layer in our component stack. But we also want a great user experience, of course. The nice thing about the FileStore layout is it gives us a predictable pattern for the file names that an app needs to access, so we can use very tight-containment here, but without interfering with the user experience. Files in .dmedia/files/*/* are read-only, and so anything using FileStore needs to at least be able to read from there, something like this: # FileStore in user's home directory: owner /home/*/.dmedia/files/*/* r, # Shared FileStore in /home: /home/.dmedia/files/*/* r, # FileStore on removable drives: /media/*/.dmedia/files/*/* r, # Partition mount points dedicated just to a FileStore (need to consult FSH on location): /var/lib/dmedia/*/.dmedia/files/*/* r, # Does this work in AppAprmor? Perhaps too loose? **/.dmedia/files/*/* r, The above should be all that's needed by a read-only app (FileStore-wise) like the novacut player. Because many apps only need read-only access to the FileStore (remember, dmedia does the downloading for them), the common abstraction should only include permissions needed for read-only use. In terms of writing files, those happen in two directories: **/.dmedia/tmp/* rw, **/.dmedia/partial/* rw, Once a file is written and the content hash computed (or verified), the file is renamed into it's canonical location in .dmedia/files/*/*. I'm not sure if AppArmor has a permsion for "renaming into" separate from "writing", so that an app could rename a file into .dmedia/files/*/*, but only read files already in .dmedia/files/*/*. Probably the easiest way to explore the FileStore layout is to create a FileStore in a temporary directory, which you can do like this: jderose@jgd-test:~$ python3 Python 3.2.2 (default, Sep 5 2011, 21:17:14) [GCC 4.6.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import tempfile >>> tmpdir = tempfile.mkdtemp() >>> from filestore import FileStore >>> fs = FileStore(tmpdir) >>> fs.parentdir '/tmp/tmp1vmne7' >>> fs.basedir '/tmp/tmp1vmne7/.dmedia' And then browse the files in /tmp/tmp1vmne7/.dmedia
2011-09-23 22:37:34 Manish Sinha (मनीष सिन्हा) bug added subscriber Manish Sinha (मनीष सिन्हा)
2011-10-23 04:43:23 Jason Gerard DeRose filestore: milestone 11.10 11.11
2011-11-23 04:43:05 Jason Gerard DeRose filestore: milestone 11.11 11.12
2011-12-18 10:25:01 Jason Gerard DeRose filestore: milestone 11.12 12.01
2012-01-23 05:07:45 Jason Gerard DeRose filestore: milestone 12.01 12.02
2012-02-22 05:48:55 Jason Gerard DeRose filestore: milestone 12.02 12.04
2012-04-22 00:12:45 Jason Gerard DeRose filestore: milestone 12.04 12.05
2012-05-23 04:08:23 Jason Gerard DeRose filestore: milestone 12.05 12.06
2012-06-25 07:10:23 Jason Gerard DeRose filestore: milestone 12.06 12.07
2012-07-19 03:35:09 Jason Gerard DeRose filestore: milestone 12.07 12.08
2012-08-21 18:44:09 Jason Gerard DeRose filestore: milestone 12.08 12.09
2012-09-19 21:19:02 Jason Gerard DeRose filestore: milestone 12.09 12.10
2012-10-17 22:21:23 Jason Gerard DeRose filestore: milestone 12.10 12.11
2012-11-19 12:20:34 Jason Gerard DeRose filestore: milestone 12.11 12.12
2012-12-19 08:48:24 Jason Gerard DeRose filestore: milestone 12.12 13.01
2013-01-28 05:25:59 Jason Gerard DeRose filestore: milestone 13.01 13.02
2013-02-21 14:36:59 Jason Gerard DeRose filestore: milestone 13.02 13.03
2013-03-25 18:11:46 Jason Gerard DeRose filestore: milestone 13.03 13.04
2013-04-22 06:38:58 Jason Gerard DeRose filestore: milestone 13.04 13.05
2013-05-27 14:05:32 Jason Gerard DeRose filestore: milestone 13.05 13.06
2013-06-27 04:38:31 Jason Gerard DeRose filestore: milestone 13.06 13.07
2013-07-23 03:04:35 Jason Gerard DeRose filestore: milestone 13.07 13.08
2013-08-25 18:50:40 Jason Gerard DeRose filestore: milestone 13.08 13.09
2013-09-24 10:11:04 Jason Gerard DeRose filestore: milestone 13.09 13.10
2013-10-27 19:45:20 Jason Gerard DeRose filestore: milestone 13.10 13.11
2013-11-22 04:52:25 Jason Gerard DeRose filestore: milestone 13.11 13.12
2013-12-22 23:00:06 Jason Gerard DeRose filestore: milestone 13.12 14.01
2014-01-31 21:44:17 Jason Gerard DeRose filestore: milestone 14.01 14.02
2014-03-01 23:51:08 Jason Gerard DeRose filestore: milestone 14.02 14.03
2014-03-26 14:23:48 Jason Gerard DeRose filestore: milestone 14.03 14.04
2014-04-20 15:10:28 Jason Gerard DeRose filestore: milestone 14.04 14.05
2014-05-25 06:46:17 Jason Gerard DeRose filestore: milestone 14.05 14.06
2014-06-23 00:48:54 Jason Gerard DeRose filestore: milestone 14.06 14.07
2014-07-30 05:33:07 Jason Gerard DeRose filestore: milestone 14.07 14.08
2014-09-27 18:20:35 Jason Gerard DeRose filestore: milestone 14.09 14.10
2014-12-23 01:42:55 Jason Gerard DeRose filestore: milestone 14.12 15.01
2015-08-24 02:18:21 Jason Gerard DeRose filestore: milestone 15.08 15.09
2016-03-25 02:47:48 Jason Gerard DeRose filestore: milestone 15.09 16.08
2016-05-26 02:38:24 Jason Gerard DeRose filestore: milestone 16.04 16.06