* viewprinting: what format should views be stored in? @ 2004-08-16 0:15 Hans Reiser 2004-08-16 1:48 ` George Beshers 0 siblings, 1 reply; 12+ messages in thread From: Hans Reiser @ 2004-08-16 0:15 UTC (permalink / raw) To: George Beshers, ReiserFS List It is very important that we have something simple that reuses code for this purpose, and it also needs to be scalable. That is, we need to be able to determine in insignificant time whether a file passes through a mask consisting of a million files. One approach would be to use a format similar to that for chroot, that is, to keep the format we use for directory trees now, and use it for storing the mask. This raises the question: how would the format for the mask differ from that of the underlying filesystem. Another approach is to use stem compressed names, or some other unique within the fs format for the mask. We need to be able to support specifying a mask that allows any file within a given directory to be visible. That is, we need to support dirname/* but we don't yet need to support dirname/foo.* We probably don't want to allow symbolic links to be followed unless where they point to is within the mask. I want minimal code but I want it to be treelike in its performance scalability. Ideas? ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: viewprinting: what format should views be stored in? 2004-08-16 0:15 viewprinting: what format should views be stored in? Hans Reiser @ 2004-08-16 1:48 ` George Beshers 2004-08-16 2:02 ` Hans Reiser 0 siblings, 1 reply; 12+ messages in thread From: George Beshers @ 2004-08-16 1:48 UTC (permalink / raw) To: Hans Reiser; +Cc: ReiserFS List [-- Attachment #1: Type: text/plain, Size: 3186 bytes --] First a little (*/tentatively/*) suggested terminology---translation of (/tentatively/) I stand behind it until I begin to suspect I've made a mistake and then I change sides ;-) : 1) A *mask *consists of a set of *prescriptions *(trying to avoid rule) which defines a / subset/ of permissible functionality for a file system. 2) The *permissible functionality *of a file system is roughly speaking, the ACLs for all the objects in the file system. Actually, I think this is a good place to start, because the type "permissible functionality" is in fact what the mask is applied to and what is returned. Grant you evaluation is done lazily as the execution of an application requires it. 3) A user and group instantiated mask forms an *operational set of functionality*. What is important here is to recognize that a given executable may have different apparent functionality based on who is running it. To make this concept clearer, consider the possibility that group write access to a file might be elided (masked away) by the some prescription for a user who otherwise might have add access---but the user's privileges are limited by the executable. Hans Reiser wrote: > It is very important that we have something simple that reuses code > for this purpose, and it also needs to be scalable. That is, we need > to be able to determine in insignificant time whether a file passes > through a mask consisting of a million files. A million files or a million rules? A single rule may give access to a million files and require only constant time to evaluate. > One approach would be to use a format similar to that for chroot, that > is, to keep the format we use for directory trees now, and use it for > storing the mask. This raises the question: how would the format for > the mask differ from that of the underlying filesystem. > > Another approach is to use stem compressed names, or some other unique > within the fs format for the mask. Can you elaborate on this for a newbie > > We need to be able to support specifying a mask that allows any file > within a given directory to be visible. That is, we need to support > dirname/* but we don't yet need to support dirname/foo.* NB. Hans and I had discussed limiting access to 'hidden files' informally: '..' in particular needs some special attention although it would be best not to have a special case if we can avoid it. > > We probably don't want to allow symbolic links to be followed unless > where they point to is within the mask. Agreed. > I want minimal code but I want it to be treelike in its performance > scalability. > > Ideas? Well, for the moment only more questions: Suppose we have a file system and a mask. If we were to create a chroot by copying just the file system accessible through the mask and run the application in that environment would the semantics of running the application on the original file system with the mask by equivalent. By equivalent I mean no observable difference in the instructions executed at the user level or the output generated. Does the question make sense? [-- Attachment #2: Type: text/html, Size: 4297 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: viewprinting: what format should views be stored in? 2004-08-16 1:48 ` George Beshers @ 2004-08-16 2:02 ` Hans Reiser 2004-08-16 13:47 ` George Beshers 2004-08-16 19:50 ` George Beshers 0 siblings, 2 replies; 12+ messages in thread From: Hans Reiser @ 2004-08-16 2:02 UTC (permalink / raw) To: George Beshers; +Cc: ReiserFS List George Beshers wrote: > > First a little (*/tentatively/*) suggested terminology---translation > of (/tentatively/) I stand > behind it until I begin to suspect I've made a mistake and then I > change sides ;-) : > > 1) A *mask *consists of a set of *prescriptions *(trying to avoid > rule) which defines a > / subset/ of permissible functionality for a file system. > > 2) The *permissible functionality *of a file system is roughly > speaking, the ACLs > for all the objects in the file system. > > Actually, I think this is a good place to start, because the type > "permissible > functionality" is in fact what the mask is applied to and what is > returned. > Grant you evaluation is done lazily as the execution of an > application requires it. > Yes. > 3) A user and group instantiated mask forms an *operational set of > functionality*. > > What is important here is to recognize that a given executable > may have > different apparent functionality based on who is running it. I think not in our particular niche. We do process oriented security, and that is all for now. Later we can make it more complex. > > To make this concept clearer, consider the possibility that group > write access > to a file might be elided (masked away) by the some prescription > for a user > who otherwise might have add access---but the user's privileges > are limited > by the executable. > > > > Hans Reiser wrote: > >> It is very important that we have something simple that reuses code >> for this purpose, and it also needs to be scalable. That is, we need >> to be able to determine in insignificant time whether a file passes >> through a mask consisting of a million files. > > A million files or a million rules filenames actually. > A single rule may give access to a million files and > require only constant time to evaluate. > >> One approach would be to use a format similar to that for chroot, >> that is, to keep the format we use for directory trees now, and use >> it for storing the mask. This raises the question: how would the >> format for the mask differ from that of the underlying filesystem. >> >> Another approach is to use stem compressed names, or some other >> unique within the fs format for the mask. > > Can you elaborate on this for a newbie fired fireman fireplace get stored as fired !4man !4place if we use classic stem compression, if we use a tree that branches where the names diverge (I forget, is that a radix tree or?) then we have another structure. >> >> We need to be able to support specifying a mask that allows any file >> within a given directory to be visible. That is, we need to support >> dirname/* but we don't yet need to support dirname/foo.* > > NB. Hans and I had discussed limiting access to 'hidden files' > informally: '..' in particular needs some > special attention although it would be best not to have a special case > if we can avoid it. We can treat .. the same as we treat symboplic links. >> >> We probably don't want to allow symbolic links to be followed unless >> where they point to is within the mask. > > Agreed. > >> I want minimal code but I want it to be treelike in its performance >> scalability. >> >> Ideas? > > Well, for the moment only more questions: > > Suppose we have a file system and a mask. If we were to create a > chroot by copying just > the file system semantic tree (not files, just filenames) > accessible through the mask and run the application in that environment > would the semantics of running the application on the original file > system with the mask > by equivalent. By equivalent I mean no observable difference in the > instructions executed > at the user level or the output generated. No, because new files might be made visible through the mask without the new file creator even being aware that there was a mask. > > Does the question make sense? > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: viewprinting: what format should views be stored in? 2004-08-16 2:02 ` Hans Reiser @ 2004-08-16 13:47 ` George Beshers 2004-08-16 19:50 ` George Beshers 1 sibling, 0 replies; 12+ messages in thread From: George Beshers @ 2004-08-16 13:47 UTC (permalink / raw) To: Hans Reiser; +Cc: ReiserFS List Hans Reiser wrote: > >>> Another approach is to use stem compressed names, or some other >>> unique within the fs format for the mask. >> >> >> Can you elaborate on this for a newbie > > > fired > fireman > fireplace > get stored as > fired > !4man > !4place > if we use classic stem compression, if we use a tree that branches > where the names diverge (I forget, is that a radix tree or?) then we > have another structure. Trie I think is what you mean. http://www.nist.gov/dads/HTML/trie.html ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: viewprinting: what format should views be stored in? 2004-08-16 2:02 ` Hans Reiser 2004-08-16 13:47 ` George Beshers @ 2004-08-16 19:50 ` George Beshers 2004-08-17 7:07 ` Hans Reiser 1 sibling, 1 reply; 12+ messages in thread From: George Beshers @ 2004-08-16 19:50 UTC (permalink / raw) To: Hans Reiser; +Cc: ReiserFS List [-- Attachment #1: Type: text/plain, Size: 2891 bytes --] Hans Reiser wrote: > George Beshers wrote: > >> 2) The *permissible functionality *of a file system is roughly >> speaking, the ACLs >> for all the objects in the file system. >> >> Actually, I think this is a good place to start, because the type >> "permissible >> functionality" is in fact what the mask is applied to and what is >> returned. >> Grant you evaluation is done lazily as the execution of an >> application requires it. >> > Yes. I have started re-reading withe Single UNIX Specification with getting a working definition of permissible functionality in mind. Have not gotten to Usenix papers yet or a careful search of ACM. Does anyone think there is a better starting point? Or things that are particularly important to consider? > >> 3) A user and group instantiated mask forms an *operational set of >> functionality*. >> >> What is important here is to recognize that a given executable >> may have >> different apparent functionality based on who is running it. > > > I think not in our particular niche. We do process oriented security, > and that is all for now. Later we can make it more complex. We can't avoid it at some level without re-writing Linux security. Take a moment to consider the set-UID bit on a file which is an executable and I think you will see what I am driving at. That said, all we need to do is make our specification conform to the smallest code change for the time being, e.g., the identity mask---what was happening before is what you get. NB. I understand that the overriding goal of the first 3 months is devising and demonstrating that we have a strategy that scales to file systems containing millions of files---but I don't think we can lose any semantics as fundamental as user/group permissions without inviting criticism. > >> >> >> >> Well, for the moment only more questions: >> >> Suppose we have a file system and a mask. If we were to create a >> chroot by copying just >> the file system > > > semantic tree (not files, just filenames) > >> accessible through the mask and run the application in that environment >> would the semantics of running the application on the original file >> system with the mask >> by equivalent. By equivalent I mean no observable difference in the >> instructions executed >> at the user level or the output generated. > > > No, because new files might be made visible through the mask without > the new file creator even being aware that there was a mask. I don't think my question was very clear ... For any process, could that process determine if it was running * on a reiser4 file system that is really the root * on a reiser4 file system with a mask, or * on a reiser4 file system with chroot /exclusively/ by making calls to the reiser4 file system? > >> >> Does the question make sense? > Uh no... :-[ [-- Attachment #2: Type: text/html, Size: 4144 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: viewprinting: what format should views be stored in? 2004-08-16 19:50 ` George Beshers @ 2004-08-17 7:07 ` Hans Reiser 2004-08-17 19:29 ` George Beshers [not found] ` <4121F4D6.8090506@comcast.net> 0 siblings, 2 replies; 12+ messages in thread From: Hans Reiser @ 2004-08-17 7:07 UTC (permalink / raw) To: George Beshers; +Cc: ReiserFS List George Beshers wrote: >> >>> 3) A user and group instantiated mask forms an *operational set of >>> functionality*. >>> >>> What is important here is to recognize that a given executable >>> may have >>> different apparent functionality based on who is running it. >> >> >> I think not in our particular niche. We do process oriented >> security, and that is all for now. Later we can make it more complex. > > We can't avoid it at some level without re-writing Linux security. > Take a moment to consider > the set-UID bit on a file which is an executable and I think you will > see what I am driving at. I don't see what you are saying. Our mask does process oriented security. The underlying security remains a user/object/permission mapping. > > That said, all we need to do is make our specification conform to the > smallest code change > for the time being, e.g., the identity mask---what was happening > before is what you get. Well, we should just pass things through the mask to whatever is below. > > NB. I understand that the overriding goal of the first 3 months is > devising and demonstrating > that we have a strategy that scales to file systems containing > millions of files---but I don't > think we can lose any semantics as fundamental as user/group > permissions without inviting > criticism. We are not losing, we are residing above and masking them. > > >> >>> >>> >>> >>> Well, for the moment only more questions: >>> >>> Suppose we have a file system and a mask. If we were to create a >>> chroot by copying just >>> the file system >> >> >> semantic tree (not files, just filenames) >> >>> accessible through the mask and run the application in that environment >>> would the semantics of running the application on the original file >>> system with the mask >>> by equivalent. By equivalent I mean no observable difference in the >>> instructions executed >>> at the user level or the output generated. >> >> >> No, because new files might be made visible through the mask without >> the new file creator even being aware that there was a mask. > > I don't think my question was very clear ... > > For any process, could that process determine if it was running > > * on a reiser4 file system that is really the root > the root filesystem? > * > > > * on a reiser4 file system with a mask, or > * on a reiser4 file system with chroot > > /exclusively/ by making calls to the reiser4 file system? Hmm, sounds like the answer requires carefully traversing the code.;-) > >> >>> >>> Does the question make sense? >> > Uh no... :-[ > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: viewprinting: what format should views be stored in? 2004-08-17 7:07 ` Hans Reiser @ 2004-08-17 19:29 ` George Beshers 2004-08-17 20:28 ` Hans Reiser [not found] ` <4121F4D6.8090506@comcast.net> 1 sibling, 1 reply; 12+ messages in thread From: George Beshers @ 2004-08-17 19:29 UTC (permalink / raw) To: Hans Reiser; +Cc: ReiserFS List Hans Reiser wrote: > George Beshers wrote: > >> We can't avoid it at some level without re-writing Linux security. >> Take a moment to consider >> the set-UID bit on a file which is an executable and I think you will >> see what I am driving at. > > > I don't see what you are saying. Our mask does process oriented > security. The underlying security remains a user/object/permission > mapping. > The issue is how the mask might change the semantics of sys_execve(). I have spent some time starting to trace code around, but more work is required. For the moment I think we are safe if the setuid and setgroup can not be altered by the mask. We only change the semantics if the real/effective uid or gid is different at some point in the processes execution because of the mask---begging situations where a call to setuid happens only if a certain file is not available. I want to get back to understanding your second proposed strategy. > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: viewprinting: what format should views be stored in? 2004-08-17 19:29 ` George Beshers @ 2004-08-17 20:28 ` Hans Reiser 2004-08-17 23:46 ` George Beshers 0 siblings, 1 reply; 12+ messages in thread From: Hans Reiser @ 2004-08-17 20:28 UTC (permalink / raw) To: George Beshers; +Cc: ReiserFS List George Beshers wrote: > > > Hans Reiser wrote: > >> George Beshers wrote: >> >>> We can't avoid it at some level without re-writing Linux security. >>> Take a moment to consider >>> the set-UID bit on a file which is an executable and I think you >>> will see what I am driving at. >> >> >> >> I don't see what you are saying. Our mask does process oriented >> security. The underlying security remains a user/object/permission >> mapping. >> > The issue is how the mask might change the semantics of sys_execve(). > I have spent some time > starting to trace code around, but more work is required. > > For the moment I think we are safe if the setuid and setgroup can not > be altered by the mask. Ok. > > We only change the semantics if the real/effective uid or gid is > different at some point in the > processes execution because of the mask---begging situations where a > call to setuid happens > only if a certain file is not available. Say more. > > I want to get back to understanding your second proposed strategy. > > >> > > > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: viewprinting: what format should views be stored in? 2004-08-17 20:28 ` Hans Reiser @ 2004-08-17 23:46 ` George Beshers 2004-08-18 2:22 ` Hans Reiser 0 siblings, 1 reply; 12+ messages in thread From: George Beshers @ 2004-08-17 23:46 UTC (permalink / raw) To: Hans Reiser; +Cc: ReiserFS List [-- Attachment #1: Type: text/plain, Size: 2791 bytes --] First, rereading my e-mails I realize that there was some thinking behind my questions which was only partially articulated. Going back to my earlier position which I will restate here as: /Use of a mask should never corrupt the semantics defined by the Single Unix Specification /*or*/ its practical derivations and extensions, e.g., BSD and Linux./ That is,/ ideally/ if I created a standalone system that "looked" like the system the mask provides then the process would behave equivalently. I emphasize ideally because to actually make that the case would require something closer to a virtual machine---which is clearly beyond the scope of this project. So I am looking for potential semantic anomalies which could be introduced by a mask over a reiser4 file system, i.e., border cases where some upfront awareness and attention may save re-design and re-writing later on. Hans Reiser wrote: > >> The issue is how the mask might change the semantics of >> sys_execve(). I have spent some time >> starting to trace code around, but more work is required. >> >> For the moment I think we are safe if the setuid and setgroup can not >> be altered by the mask. > > > Ok. For the moment I will focus on how the uid (and assume the group id will be similar) of a process and how the mask might lead to a different uid than would be expected under standard semantics. So we agree that the process has an associated user: actually there is the concept of real and effective uid also. I believe the statement above to be true if the process never makes a setuid() system's call of one flavor or another because the uid is inherited from the process calling execev() or is determined by the owner of the executable if the executable's file set-uid permission bit is turned on via chmod. >> >> We only change the semantics if the real/effective uid or gid is >> different at some point in the >> processes execution because of the mask---begging situations where a >> call to setuid happens >> only if a certain file is not available. > > > Say more. If the process has the code like if (stat("/etc/foobar.conf", statbuf) < 0) { if (setuid(3) < 0) { /* Try to become sys */ } /* Do something here */ } And the mask hides "/etc/foobar.conf" then in fact the uid will change but *not unexpectedly*, IMO. The mask is creating a changed environment but the behavior is understandable from the source code. Put this another way, the semantics still seem correct to me because you are getting the behavior of "/etc/foobar.conf" actually not being there. Now that I think about it masking a named pipe or a lock file is perhaps more likely to cause problems then the setuid bit. More cogitation required... :-) [-- Attachment #2: Type: text/html, Size: 3669 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: viewprinting: what format should views be stored in? 2004-08-17 23:46 ` George Beshers @ 2004-08-18 2:22 ` Hans Reiser 2004-08-18 2:37 ` viewprinting: what format should views be stored in? (let me quickly correct an imprecision) Hans Reiser 0 siblings, 1 reply; 12+ messages in thread From: Hans Reiser @ 2004-08-18 2:22 UTC (permalink / raw) To: George Beshers; +Cc: ReiserFS List George Beshers wrote: > > First, rereading my e-mails I realize that there was some thinking > behind my questions > which was only partially articulated. Going back to my earlier > position which I will restate > here as: > > /Use of a mask should never corrupt the semantics defined by the > Single Unix > Specification /*or*/ its practical derivations and extensions, > e.g., BSD and Linux./ > I expect to turn those semantics on their head within 3-5 years when we do the semantic enhancements. I think you should rephrase it as: we should not break any existing program without getting something sufficiently worthwhile as a result, and doing it with care. > That is,/ ideally/ if I created a standalone system that "looked" like > the system the mask > provides then the process would behave equivalently. I emphasize > ideally because to > actually make that the case would require something closer to a > virtual machine---which > is clearly beyond the scope of this project. > > So I am looking for potential semantic anomalies which could be > introduced by a > mask over a reiser4 file system, i.e., border cases where some upfront > awareness > and attention may save re-design and re-writing later on. > > > Hans Reiser wrote: > >> >>> The issue is how the mask might change the semantics of >>> sys_execve(). I have spent some time >>> starting to trace code around, but more work is required. >>> >>> For the moment I think we are safe if the setuid and setgroup can >>> not be altered by the mask. >> >> >> Ok. > > > For the moment I will focus on how the uid (and assume the group id > will be similar) > of a process and how the mask might lead to a different uid than would > be expected > under standard semantics. I don't think you need to support the mask changing uids. Nice feature, but let's keep it minimal for now. I think the whole issue of uid can be sidestepped and ignored. You can, however, put 3 paragraphs in our report discussing it as a theoretical issue, if you find it interesting to ponder. > > So we agree that the process has an associated user: actually there is > the concept > of real and effective uid also. > > I believe the statement above to be true if the process never makes a > setuid() system's call of > one flavor or another because the uid is inherited from the process > calling execev() or is determined > by the owner of the executable if the executable's file set-uid > permission bit is turned on via chmod. > >>> >>> We only change the semantics if the real/effective uid or gid is >>> different at some point in the >>> processes execution because of the mask---begging situations where a >>> call to setuid happens >>> only if a certain file is not available. >> >> >> Say more. > > If the process has the code like > > if (stat("/etc/foobar.conf", statbuf) < 0) { > if (setuid(3) < 0) { /* Try to become sys */ > } > /* Do something here */ > } > > And the mask hides "/etc/foobar.conf" then in fact the uid > will change but *not unexpectedly*, IMO. The mask is > creating a changed environment but the behavior is > understandable from the source code. > > Put this another way, the semantics still seem correct to me > because you are getting the behavior of "/etc/foobar.conf" actually > not being there. > > Now that I think about it masking a named pipe or a lock file > is perhaps more likely to cause problems then the setuid bit. > More cogitation required... :-) > It is not our task to ensure the mask causes no problems due to a faulty specification of it. It is merely our task to ensure that creating a correct mask is well automated and easy. George, trust me, the project will be a LOT more fun if we implement the bare minimum and get it done early, and then after that spend the rest of the time doing what amuses us. For me, the big issue to decide at the start is, should a view specification be implemented with a format that is as if it is a subdirectory of the masked executable, and that the executable gets chrooted to, and that uses all the semantic tree traversal code already written by us. I think the answer is yes, but I am going to think about it as I jog for an hour. Please come up with arguments for and against it. Hans ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: viewprinting: what format should views be stored in? (let me quickly correct an imprecision) 2004-08-18 2:22 ` Hans Reiser @ 2004-08-18 2:37 ` Hans Reiser 0 siblings, 0 replies; 12+ messages in thread From: Hans Reiser @ 2004-08-18 2:37 UTC (permalink / raw) To: Hans Reiser; +Cc: George Beshers, ReiserFS List Let me instead of the previous email, say: For me, the big issue to decide at the start is, should a view specification be implemented with a format that is as if it is a subdirectory of the masked executable, and which we then take the filenames used by the executable and traverse the subdirectory as though it was root, and if we reach a valid fall through point, then allow we traverse from the real filesystem root, and if not, we issue a suitable error. This would let us use all the semantic tree traversal code already written by us. It would however require us to add such plugins as "fall through points", and "prints", etc. If really lucky, you could have some working plugins in 4 months, and maybe have masking software done by the end of the contract. I think the answer is yes, we want to do it this way, but I am going to think about it as I jog for an hour. Please come up with arguments for and against it. > > Hans > ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <4121F4D6.8090506@comcast.net>]
* Re: viewprinting: what format should views be stored in? [not found] ` <4121F4D6.8090506@comcast.net> @ 2004-08-17 19:43 ` Hans Reiser 0 siblings, 0 replies; 12+ messages in thread From: Hans Reiser @ 2004-08-17 19:43 UTC (permalink / raw) To: George Beshers; +Cc: ReiserFS List George Beshers wrote: > > > Hans Reiser wrote: > >> >>>> >>>> No, because new files might be made visible through the mask >>>> without the new file creator even being aware that there was a mask. >>> >>> >>> I don't think my question was very clear ... >>> >>> For any process, could that process determine if it was running >>> >>> * on a reiser4 file system that is really the root >>> >> the root filesystem? > > Yes, as understood by the OS. > >> >>> * >>> >>> >>> * on a reiser4 file system with a mask, or >>> * on a reiser4 file system with chroot >>> >>> /exclusively/ by making calls to the reiser4 file system? >> >> >> Hmm, sounds like the answer requires carefully traversing the code.;-) > > of course :-) > > But what would we like the answer to be? Ah, so that is the question.... > I will take the position that "no the process can not tell" as > being useful > because it makes running with a mask a better test environment. > Also, I don't see how cluing the process in that a mask is in > place can > improve security whereas knowing that the mask is in place might > encourage someone to try to work around it (beyond the filesystem > semantics). > > > Yes, you are right I think, but you should ask on the mailing list what information about what is the root filesystem is used for by the OS ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2004-08-18 2:37 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-08-16 0:15 viewprinting: what format should views be stored in? Hans Reiser
2004-08-16 1:48 ` George Beshers
2004-08-16 2:02 ` Hans Reiser
2004-08-16 13:47 ` George Beshers
2004-08-16 19:50 ` George Beshers
2004-08-17 7:07 ` Hans Reiser
2004-08-17 19:29 ` George Beshers
2004-08-17 20:28 ` Hans Reiser
2004-08-17 23:46 ` George Beshers
2004-08-18 2:22 ` Hans Reiser
2004-08-18 2:37 ` viewprinting: what format should views be stored in? (let me quickly correct an imprecision) Hans Reiser
[not found] ` <4121F4D6.8090506@comcast.net>
2004-08-17 19:43 ` viewprinting: what format should views be stored in? Hans Reiser
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.