opuntiaOS - an operating system targeting x86 and ARMv7
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

[kernel] Fix permission for /dev files

+50 -28
+1
base/home/root/rootfile.txt
··· 1 + Root file
+1
base/home/user/userfile.txt
··· 1 + User file
+13
build/tools/build_scripts.py
··· 49 49 sudo mkdir -p {0}/mountpoint/tmp 50 50 sudo cp -r {0}/base/* {0}/mountpoint/ 51 51 sudo cp -r {1}/base/* {0}/mountpoint/ 52 + 53 + sudo chmod -R 644 {0}/mountpoint/proc 54 + sudo chmod -R 644 {0}/mountpoint/dev 55 + sudo chmod -R 666 {0}/mountpoint/tmp 56 + sudo chmod -R 755 {0}/mountpoint/bin 57 + sudo chmod -R 700 {0}/mountpoint/home 58 + sudo chmod 777 {0}/mountpoint/home 59 + sudo chmod -R 755 {0}/mountpoint/System 60 + sudo chmod -R 755 {0}/mountpoint/Applications 61 + 62 + sudo chown -R 0 {0}/mountpoint/home/root 63 + sudo chown -R 10 {0}/mountpoint/home/user 64 + 52 65 sudo umount {0}/mountpoint 53 66 if [ $? -ne 0 ]; then echo -e "${{ERROR}} Can't umount {0}/mountpoint" && exit 1; fi 54 67 echo -e "${{SUCCESS}} Sync"
+3 -3
kernel/include/fs/vfs.h
··· 232 232 int vfs_munmap(struct proc* p, struct proc_zone*); 233 233 234 234 struct thread; 235 - int vfs_perm_to_read(file_descriptor_t* fd, struct thread* t); 236 - int vfs_perm_to_write(file_descriptor_t* fd, struct thread* t); 237 - int vfs_perm_to_execute(file_descriptor_t* fd, struct thread* t); 235 + int vfs_perm_to_read(dentry_t* dentry, struct thread* t); 236 + int vfs_perm_to_write(dentry_t* dentry, struct thread* t); 237 + int vfs_perm_to_execute(dentry_t* dentry, struct thread* t); 238 238 239 239 #endif // _KERNEL_FS_VFS_H
+1 -1
kernel/kernel/drivers/aarch32/pl050_mouse.c
··· 59 59 file_ops_t fops = { 0 }; 60 60 fops.can_read = _mouse_can_read; 61 61 fops.read = _mouse_read; 62 - devfs_inode_t* res = devfs_register(mp, MKDEV(10, 1), "mouse", 5, 0, &fops); 62 + devfs_inode_t* res = devfs_register(mp, MKDEV(10, 1), "mouse", 5, 0600, &fops); 63 63 64 64 dentry_put(mp); 65 65 }
+1 -1
kernel/kernel/drivers/aarch32/pl111.c
··· 105 105 file_ops_t fops = { 0 }; 106 106 fops.ioctl = _pl111_ioctl; 107 107 fops.mmap = _pl111_mmap; 108 - devfs_inode_t* res = devfs_register(mp, MKDEV(10, 156), "bga", 3, 0, &fops); 108 + devfs_inode_t* res = devfs_register(mp, MKDEV(10, 156), "bga", 3, 0777, &fops); 109 109 110 110 dentry_put(mp); 111 111 }
+1 -1
kernel/kernel/drivers/generic/keyboard.c
··· 55 55 file_ops_t fops = { 0 }; 56 56 fops.can_read = _generic_keyboard_can_read; 57 57 fops.read = _generic_keyboard_read; 58 - devfs_inode_t* res = devfs_register(mp, MKDEV(11, 0), "kbd", 3, 0, &fops); 58 + devfs_inode_t* res = devfs_register(mp, MKDEV(11, 0), "kbd", 3, 0400, &fops); 59 59 60 60 dentry_put(mp); 61 61 return 0;
+1 -1
kernel/kernel/drivers/x86/bga.c
··· 119 119 file_ops_t fops = { 0 }; 120 120 fops.ioctl = _bga_ioctl; 121 121 fops.mmap = _bga_mmap; 122 - devfs_inode_t* res = devfs_register(mp, MKDEV(10, 156), "bga", 3, 0, &fops); 122 + devfs_inode_t* res = devfs_register(mp, MKDEV(10, 156), "bga", 3, 0777, &fops); 123 123 124 124 dentry_put(mp); 125 125 }
+1 -1
kernel/kernel/drivers/x86/mouse.c
··· 49 49 file_ops_t fops = { 0 }; 50 50 fops.can_read = _mouse_can_read; 51 51 fops.read = _mouse_read; 52 - devfs_inode_t* res = devfs_register(mp, MKDEV(10, 1), "mouse", 5, 0, &fops); 52 + devfs_inode_t* res = devfs_register(mp, MKDEV(10, 1), "mouse", 5, 0400, &fops); 53 53 54 54 dentry_put(mp); 55 55 }
+18 -15
kernel/kernel/fs/vfs.c
··· 200 200 } 201 201 202 202 if (flags & O_EXEC) { 203 - if (vfs_perm_to_execute(fd, cur_thread) != 0) { 203 + if (vfs_perm_to_execute(file, cur_thread) != 0) { 204 + log("can't open exec"); 204 205 return -EACCES; 205 206 } 206 207 } 207 208 208 209 if (flags & O_WRONLY) { 209 - if (vfs_perm_to_write(fd, cur_thread) != 0) { 210 + if (vfs_perm_to_write(file, cur_thread) != 0) { 211 + log("can't open write"); 210 212 return -EACCES; 211 213 } 212 214 if (dentry_inode_test_flag(file, S_IFDIR)) { ··· 215 217 } 216 218 217 219 if (flags & O_RDONLY) { 218 - if (vfs_perm_to_read(fd, cur_thread) != 0) { 220 + if (vfs_perm_to_read(file, cur_thread) != 0) { 221 + log("can't open read"); 219 222 return -EACCES; 220 223 } 221 224 } ··· 623 626 return 0; 624 627 } 625 628 626 - int vfs_perm_to_read(file_descriptor_t* fd, thread_t* thread) 629 + int vfs_perm_to_read(dentry_t* dentry, thread_t* thread) 627 630 { 628 631 // If no running, so call is from kernel 629 632 uid_t uid = 0; ··· 633 636 gid = thread->process->gid; 634 637 } 635 638 636 - mode_t mode = fd->dentry->inode->mode; 637 - uid_t fuid = fd->dentry->inode->uid; 638 - gid_t fgid = fd->dentry->inode->gid; 639 + mode_t mode = dentry->inode->mode; 640 + uid_t fuid = dentry->inode->uid; 641 + gid_t fgid = dentry->inode->gid; 639 642 if (uid == 0) { 640 643 return 0; 641 644 } ··· 652 655 return -EPERM; 653 656 } 654 657 655 - int vfs_perm_to_write(file_descriptor_t* fd, thread_t* thread) 658 + int vfs_perm_to_write(dentry_t* dentry, thread_t* thread) 656 659 { 657 660 // If no running, so call is from kernel 658 661 uid_t uid = 0; ··· 662 665 gid = thread->process->gid; 663 666 } 664 667 665 - mode_t mode = fd->dentry->inode->mode; 666 - uid_t fuid = fd->dentry->inode->uid; 667 - gid_t fgid = fd->dentry->inode->gid; 668 + mode_t mode = dentry->inode->mode; 669 + uid_t fuid = dentry->inode->uid; 670 + gid_t fgid = dentry->inode->gid; 668 671 if (uid == 0) { 669 672 return 0; 670 673 } ··· 681 684 return -EPERM; 682 685 } 683 686 684 - int vfs_perm_to_execute(file_descriptor_t* fd, thread_t* thread) 687 + int vfs_perm_to_execute(dentry_t* dentry, thread_t* thread) 685 688 { 686 689 // If no running, so call is from kernel 687 690 uid_t uid = 0; ··· 691 694 gid = thread->process->gid; 692 695 } 693 696 694 - mode_t mode = fd->dentry->inode->mode; 695 - uid_t fuid = fd->dentry->inode->uid; 696 - gid_t fgid = fd->dentry->inode->gid; 697 + mode_t mode = dentry->inode->mode; 698 + uid_t fuid = dentry->inode->uid; 699 + gid_t fgid = dentry->inode->gid; 697 700 if (uid == 0) { 698 701 return 0; 699 702 }
+1 -1
kernel/kernel/io/tty/ptmx.c
··· 55 55 fops.can_write = ptmx_can_write; 56 56 fops.read = ptmx_read; 57 57 fops.write = ptmx_write; 58 - devfs_inode_t* res = devfs_register(mp, MKDEV(5, 2), "ptmx", 4, 0, &fops); 58 + devfs_inode_t* res = devfs_register(mp, MKDEV(5, 2), "ptmx", 4, 0777, &fops); 59 59 dentry_put(mp); 60 60 return 0; 61 61 }
+1 -1
kernel/kernel/io/tty/pty_slave.c
··· 82 82 fops.read = pty_slave_read; 83 83 fops.write = pty_slave_write; 84 84 fops.ioctl = pty_slave_ioctl; 85 - devfs_inode_t* res = devfs_register(mp, MKDEV(136, id), name, 4, 0, &fops); 85 + devfs_inode_t* res = devfs_register(mp, MKDEV(136, id), name, 4, 0777, &fops); 86 86 pty_slaves[id].inode_indx = res->index; 87 87 pty_slaves[id].ptm = ptm; 88 88 pty_slaves[id].buffer = sync_ringbuffer_create_std();
+1 -1
kernel/kernel/io/tty/tty.c
··· 188 188 fops.read = tty_read; 189 189 fops.write = tty_write; 190 190 fops.ioctl = tty_ioctl; 191 - devfs_inode_t* res = devfs_register(mp, MKDEV(4, next_tty), name, 4, 0, &fops); 191 + devfs_inode_t* res = devfs_register(mp, MKDEV(4, next_tty), name, 4, 0777, &fops); 192 192 ttys[next_tty].id = next_tty; 193 193 ttys[next_tty].inode_indx = res->index; 194 194 ttys[next_tty].buffer = sync_ringbuffer_create_std();
+1
kernel/kernel/tasking/proc.c
··· 306 306 file_descriptor_t fd; 307 307 dentry_t* dentry; 308 308 309 + log("starting %s", path); 309 310 if (vfs_resolve_path_start_from(p->cwd, path, &dentry) != 0) { 310 311 return -ENOENT; 311 312 }
+3
userland/system/dock/DockView.cpp
··· 100 100 void DockView::launch(const FastLaunchEntity& ent) 101 101 { 102 102 if (fork() == 0) { 103 + // Switching to test "user" 104 + setuid(10); 105 + setgid(10); 103 106 execve(ent.path_to_exec().c_str(), 0, 0); 104 107 std::abort(); 105 108 }
+2 -2
userland/utilities/cat/main.c
··· 26 26 } 27 27 28 28 for (i = 1; i < argc; i++) { 29 - if ((fd = open(argv[i], 0)) < 0) { 30 - // printf(1, "cat: cannot open %s\n", argv[i]); 29 + if ((fd = open(argv[i], O_RDONLY)) < 0) { 30 + printf("cat: cannot open %s\n", argv[i]); 31 31 return 1; 32 32 } 33 33 cat(fd);