[ECOS] chmod (crops up on YAFFS)
Rutger Hofman
rutger@cs.vu.nl
Tue Nov 18 15:21:00 GMT 2008
Andrew Lunn wrote:
> On Sat, Nov 15, 2008 at 04:56:56PM +0100, Rutger Hofman wrote:
>> Good afternoon list,
>>
>> I am making good progress with YAFFS on top of the eCos NAND Flash
>> library; I can mkdir/rmdir, opendir/readdir, rename, open/creat/unlink,
>> read/write files, and walk the directory tree on my NAND flash chip.
>>
>> Now, one thing I am unhappy about is file/directory permissions. YAFFS
>> has permissions (user/group/other a la POSIX), but eCos has no chmod()
>> call. In old exchanges on this list I saw this crop up on FAT, but FAT's
>> attributes are different from (POSIX) file permissions. Some guru back
>> then advised an implementation of chmod() that calls cyg_fs_setinfo()
>> with a FS_INFO_CHMOD tag. But this route was not taken: I see no chmod()
>> anywhere.
>>
>> Would it be a good idea that I add chmod() to file.cxx/fileio.h that
>> does take the above route, and implement it by having it call
>> cyg_fs_setinfo() with a tag FS_INFO_CHMOD? My guess is that this
>> shouldn't break the other filesystems, they would return an error code
>> on an unknown tag FS_INFO_CHMOD.
>
> The problem with permissions is that they require a concept of a user
> identity. eCos does not have this. There is no uid to know if the user
> owns the file. There is no group of users to know if the group
> permissions are valid. So how do you decide which of the ugo bits to
> look at?
>
> Without a concept of ugo, how is YAFFS even using the ugo permission?
> I feel that in eCos chmod() is pointless...
Yes, certainly it's correct that ugo does not make very much sense in eCos.
But:
- my aim is that YAFFS filesystems can also be approached from u-boot,
uCLinux, Linux, ..., even if they are created by eCos; Linux and friends
do support ugo;
- even if there is no ugo, a permissions notion might make sense. So, if
the mask is 000 there is no permission at all. 777 would allow everything;
- eCos has open()/creat() with permissions. It has stat() with
permissions. It has access() with permissions. Ruling out chmod()
because permissions don't make sense for chmod() seems not completely
consistent;
- of course I can make an fs-private flag FS_YAFFS_INFO_CHMOD and call
cyg_fs_setinfo() from the application. I do not feel attracted to that
in comparison with having chmod(), because it makes the fs type manifest
to the application.
Rutger
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
More information about the Ecos-discuss
mailing list