You may want to go with a newer (also, faster) file system like ReiserFS. I've been using Reiser 3 for years and it's never given me any problems.
Anyway, since Linux file permissions do not hold on a DOS-based file system, one of the only options I've seen is to create a virtual file system inside of a file on the Windows partition using something like this:
# create a 2-gig virtual file system inside of NTFS
dd if=/dev/zero of=/path/to/mounted/ntfs/linux_filesystem bs=1M count=2M
# set up partition file system structures
mkfs.ext3 /path/to/mounted/ntfs/linux_filesystem
Then you'll have to specify something like this in your lilo.conf
(see here for an example):
boot = /dev/sda
prompt
timeout = 20
change-rules
reset
default=windows
# linux
## (this assumes you've booted to the virtual file system and have it mounted as /)
image = /boot/vmlinuz
root = /mnt/windows_drive/linux_filesystem
label = linux
read-write
# windows
other = /dev/sda1
label = windows
And in your fstab
, you need to specify mounting priority:
# Windows partition, given highest priority
/dev/sda1 /mnt/windows_drive ntfs-3g 1 1
# virtual file system on the windows partition
/mnt/windows_drive/linux_filesystem / ext3 0 0
Oh! I almost forgot: you must have a kernel that is configured with the ntfs-3g file system support native in the kernel, and not as a module (because where's it going to put the module file?).