• Help with UNIX Program

    BrittneTabor Member

    I need some guidance on where to start with this assignment. I’m looking to write a program with linux terms, but unaware about where to start.

    Program

    Write a program that will allow you to add messages to a file that has NO permissions for any user.

    A Unix system has many files that have sensitive information in them. Permissions help keep these files secure. Some files can be publicly read, but can not be altered by a regular user (ex.: /etc/passwd). Other files can’t be read at all by a regular user (ex.: /etc/shadow).

    The program you develop should take a message given as a command line argument and append it to a file (also specified on the command line). The file should have no permissions, both before and after the message is appended. Of course, the file should be owned by you.

    Your program should also have a -c option that will clear the file before the message is appended.

    Algorithm

    Check to see if the output file exists. If it doesn’t, create it. Life is simpler if a newly created file is closed at the end of this step.
    Check the permissions of the output file. If any permissions exist, print a useful error message and exit.

    Change the permissions on the file to allow writing by the user.

    Open the file for output. If the “-c” command line option is present, make sure the file is truncated.

    Write the message from the command line to the output file. Write an additional newline character so that the output has a nicer format.

    Clear the permissions and close the file. (These two operations can be performed in either order, but the implementation is slightly different.)

  • Abhey Member

    The only way to do this program is give temporary write permission to the file and after having inserted the text you remove that permission. There is no other way around, if you don’t give the file the permission without an exploit you can’t write to it. You have plenty of choice to write to a file, I suggest you to use the Fopen and Fwrite of the C standard library or you can use other software in corelinux. To change permissions you use the chmod function that have this syntax

    int chmod (const char *filename, mode_t permissions)

    where permissions is in the i=0000 octal form. Check sys/stat.h for the available combination

  • ShikhaTan Member

    If the file is owned by you, you should have permission to write into BUT nobody else. The CHMOD file should be 644.
    PS : In your algorithm it’s write : ” Change the permissions on the file to allow writing by the user. “.

Viewing 2 reply threads
  • You must be logged in to reply to this topic.