Return to BSD News archive
Path: sserve!newshost.anu.edu.au!munnari.oz.au!spool.mu.edu!howland.reston.ans.net!noc.near.net!uunet!ogicse!psgrain!percy!agora!rgrimes From: rgrimes@agora.rain.com (Rodney Grimes) Newsgroups: comp.os.386bsd.development Subject: Re: A challenge to all true kernel hackers - conditional symlinks. Message-ID: <C40vy4.2D0@agora.rain.com> Date: 17 Mar 93 07:39:39 GMT Article-I.D.: agora.C40vy4.2D0 References: <C3ow4H.FID@BitBlocks.com> <JKH.93Mar10215639@whisker.lotus.ie> <C3qzvC.2ps@bcstec.ca.boeing.com> <1993Mar17.000717.12690@fcom.cc.utah.edu> Organization: Open Communications Forum Lines: 81 terry@cs.weber.edu (A Wizard of Earth C) writes: >In article <C3qzvC.2ps@bcstec.ca.boeing.com> dmp3592@bcstec.ca.boeing.com (Dean M. Phillips) writes: >>In article <JKH.93Mar10215639@whisker.lotus.ie> jkh@whisker.lotus.ie (Jordan K. Hubbard) writes: >>>The only problem with replacing open() is that you still need to deal >>>with things like stat() and any other system call that deals with >>>filenames (and follows links) directly. Note that I wasn't talking about >>>usurping the $, (, and ) characters in filenames altogether, only in >>>symbolic links. I don't think that this would be any great hardship. >>> >>I could create an ambiguity: How do you create a soft link to a real file >>named $(LANG) for example? Of course I have to admit that I have never >>seen a real file with a name of that form. >The $(LANG) is part of the symbolic link *target*, not part of the name >of the symbolic link itself. >This resolves the "name space pollution" problem everybody is going on >about without any hassles with any other type of file within the file >system. If necessary, a "variant link creation" syntax (like "ln -v") >can be defined. I vote against this, and for pollution of the symbolic >link target name space, to ensure cross-fs compatability. Otherwise, >it would require additional flagging of the inode type, and really >require a modification below the VFS layer to implement. >The other fact, that the name space is only polluted for names beginning >with "$(" means that collisoin is unlikely anyway, so the pollution is >not disenfranchising "$", "(", and ")" as filename characters, but is >instead diasallowing "$(" file names only. Not quite the whole story, if I remeber correctly from my apollo days, if a variant link portion ie NAME in $(NAME) does not corresponde to a valid environment variable it is left untranslated. So in fact you can have a link foo -> $(BAR) that well get to file $(BAR) as long as no environment variabled named BAR is defined. I well again make the point, would some one dig up the apollo manuals and get the details on the way that all of this workes under aegis, I think most of what is being touched on here was clearly and consisely layed out by apollo way back when. >It's a simple, simple hack that introduces many security issues unless >things like access are forces to always follow symbolic links to determin >permissions rather than looking at the link inode itself. >As for the "orphan issue" of symlinking to a non-existant file, that >problem already exists. It is perfectly acceptable to symlink to a >non existant file with "invariant" sym links. Try: > mkdir tmp > cd tmp > ln -s foo fee > cat foo > cat fee > cat > fee > This is a test. > ^D > cat foo > rm foo fee > cd .. > rmdir tmp >to demonstrate this. > Terry Lambert > terry@icarus.weber.edu > terry_lambert@novell.com >--- >Any opinions in this posting are my own and not those of my present >or previous employers. >-- >------------------------------------------------------------------------------- > "I have an 8 user poetic license" - me > Get the 386bsd FAQ from agate.berkeley.edu:/pub/386BSD/386bsd-0.1/unofficial >------------------------------------------------------------------------------- -- Rod Grimes rgrimes@agora.rain.com Accurate Automation Company All opinions belong to me and my company! Get your free copy of 386bsd from agate.berkeley.edu:/pub/386BSD via ftp! An out of work contractor... You need unix work done.... Send me your project!