Files and Directories Struct Stat File Types

Files and Directories Struct Stat File Types

struct stat { dev_t st_dev; ino_t st_ino; mode_t st_mode; nlink_t st_nlink; Struct stat uid_t st_uid; gid_t st_gid; dev_t st_rdev; off_t st_size; /* SysV/sco doesn't have the rest... But Solaris, eabi does. */ #if defined(__svr4__) && !defined(__PPC__) && !defined(__sun__) Files and Directories time_t st_atime; time_t st_mtime; time_t st_ctime; #else time_t st_atime; Marco Gruteser long st_spare1; time_t st_mtime; Advanced Programming for Linux long st_spare2; time_t st_ctime; long st_spare3; long st_blksize; long st_blocks; long st_spare4[2]; #endif 1 }; 2 Why does the operating system File types (mode) need to distinguish these? • Regular file • Directory file • Character special file (device access, e.g. serial port) • Block special file (device access, e.g., disk) •FIFO (pipe) • Socket (network connection) • Symbolic link (pointer to another file) 3 4 Some operations only valid on File Access control list certain files • No lseek on Fifo or socket • Every file (includes directories, device • No write on directory files) has • Open on symlink requires redirection – owner user and owner group – Permissions (-rwxr-x---) •… 5 6 Process User- and Group-IDs File access checks • Real user ID • Automatically invoked on file open • Real group ID –Uses effective uid/gid • Effective user ID used for file • Manual invocation through access function possible • Effective group ID access checks What for? –Uses real uid/gid • Saved set-user-ID • Saved set-group-ID saved by exec 7 8 File access checks Setuid / setgid • Requires x permission on all directories in • New processes inherit user ids from pathname parent • If uid==0 – allow access • If setuid files system flag is set • If uid==owner – Effective uid set to executable’s owner – if owner permission allow (else deny) • If setgid file system flag is set • If gid (or supplementary)==group – Effective gid set to executable’s group – if group permission allow (else deny) owner •Else – if others permission allow (else deny • Programs can selectively raise privileges 9 10 Sticky bit New Files • A user with directory write permissions • Inherit effective user and group ID from can rename and remove any files creating process • If sticky bit is set, only the owner of the – Incompatibility: Some systems set gid to directory or owner of the file can do so gid of the parent directory • Permissions are set according to the file mode creation mask of the process – Umask system call 11 12 #include <sys/types.h> #include <sys/stat.h> #include "ourhdr.h" chmod Examples… int main(void) { • /bin/passwd program? struct stat statbuf; /* turn on set-group-ID and turn off group-execute */ • Keeping secure log files if (stat("foo", &statbuf) < 0) • “Secure printer” err_sys("stat error for foo"); if (chmod("foo", (statbuf.st_mode & ~S_IXGRP) | S_ISGID) < 0) err_sys("chmod error for foo"); /* set absolute mode to "rw-r--r--" */ if (chmod("bar", S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH) < 0) err_sys("chmod error for bar"); exit(0); 13 14 } Unix Filesystem Structure? Hard links • Every directory entry points to an i-node (which represents a file) – Multiple entries can point to the same file (hard links) • Link(existingpath, newpath) creates additional directory entry to existing file • Unlink removes link and deletes files if no other links exist • Linking to directory files also possible 15 16 Problem: Loops Symbolic links / • Recursive listing of files does usr • Can span filesystems, user’s can create links not work to directories • No easy way to fix Hello.c • Represented by special files – Unlink does not remove links mydir to directories • Loops are easier to remove – Rmdir removes links to • Symlink(actualpath, sympath) – creates link directories only when they are empty • Readlink(pathname, …) – reads sympath • Only root can create hard – These files cannot be read with “open” ! links to directories 17 18 Which file? Which file? •Access • Access follows link •Chdir • Chdir follows link •Chown •Chown not •Open • Open follows link •Opendir • Opendir follows link •Remove • Remove not •rename •Rename not 19 20 Directory manipulation File Times •Mkdir, rmdir • Three time entries – create and remove – (Content) Access time • Opendir, readdir, rewinddir, closedir – (Content) Modification time – Read directory entries – Changed status time (i-node modification • There is no direct write time) – Implicit in ‘create file’ and ‘mkdir’ • E.g., link, chmod, chown affect this •Chdir, getcwd • Utime sets access and modification time – Set and get working directory for current process – Changed status time only updated by kernel 21 22 Special Device Files Sync • All files store the file system’s device •Sync number (st_dev) – Flush entire kernel buffer cache • Special device files (character and •Fsync block) store their device’s number in – Flush one file in the buffer cache (st_rdev) • O_SYNC flag • Need to use major and minor macros – Flush every write to this file 23 24 Next Class • Environment of a Unix Process • Read Chapter 7 (and 5) 25.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    7 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us