03-25-2015
File date/time modification and permissions
First, oh great Unix gurus, forgive if this is a stupid question.
Unix/Linux is not my main thing but I have been programming in C/C++ for many years. I will do my best to be specific.
I have a program in C/C++ that needs to modify the time of a given file. Currently I do this using utime() passing it a filespec and an FTIME structure (I get the time of other files using ustat elsewhere).
This code works fine when there are no permission issues (hence the title), so I think it is safe to say I am using these functions correctly.
However, when the file to be modified was created by root and the user running my program is (in some way) not as privileged in the permissions area, then utime() call fails with errno = 1.
What I don't understand is why it fails if the file is set for RW for User, Group and World. Even though user X running the program is not root, I thought they can still write to it because root has it open to the world for writing. What am I missing here?
If the file is owned by user X it works or if root is the user it works, but if they don't match it does not. I would expect it to work for all users if the file is writable for everyone.
Should I be using a different method? I did think is was odd that I could call utime without opening the file to get a file handle first.
Someone said it is because the containing directory is hwere the write permissions have to be, but I tried making the folder RW for world too.
Please enlighten me to the underlying issue here. I want to understand this.
Thanks.
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
Does anyone know how to display the time with seconds
of when a file was last modified. I can get hour & minutes but
would also like seconds. --Running AIX (1 Reply)
Discussion started by: edog
1 Replies
2. UNIX for Dummies Questions & Answers
Good morning,
I would like to find all files of a certain type and display their name as well as their modification date.
In order to do this, I would do the following:
find ./ -name *.csv | ????????
My question: what to put after the pipe instead of the question marks? Is there a basic... (5 Replies)
Discussion started by: scampsd
5 Replies
3. UNIX for Dummies Questions & Answers
Hi
I am accessing a file on nfs mounted device, after completing using of the file, i am tring to restore the access time and modification times of the file.
So i got the previous modified time of the file using stat() function and trying to set the date and time for the file, To set these... (6 Replies)
Discussion started by: deepthi.s
6 Replies
4. Shell Programming and Scripting
How can I get and display the last modification time of a file? in scripting or specifically using Batch file
I want this info for me to determine whether an image has been edited or not by using the last modification time and compare it to our stored date of modification.
can somebody help... (5 Replies)
Discussion started by: jaque18
5 Replies
5. Shell Programming and Scripting
Hi All,
I would like to know the file modification time till seconds in Unix. So I tried ls -e and it worked fine. This Solaris 5.10
-rw-rw-r-- 1 test admin 22 Sep 12 11:01:37 2008 test_message
But I am not able to run the same command in SOlaris 5.6 and also in AIX/HP
Is there... (3 Replies)
Discussion started by: rahulkav
3 Replies
6. Shell Programming and Scripting
Hi All,
I have two files (given below) each exists under different paths. I want to compare the modification time stamp of file1.txt is lessthan the modification time of file2.txt.
month1=`ls -l file1.txt | awk '{ print $6}'`
date1=`ls -file1.txt | awk '{ print $7}'`
time1=`ls... (1 Reply)
Discussion started by: Arunprasad
1 Replies
7. UNIX for Dummies Questions & Answers
Hi all,
I need the modification time of a file on a particular day say 3 days before.
I just don't want the last modification time. I need all the modification times on a particualar day.
Is there anyway to do it? Kindly help. Could anyone tell me where the modification time is stored?... (1 Reply)
Discussion started by: vidhyab
1 Replies
8. UNIX for Dummies Questions & Answers
I'm trying to get the date output to be in the form yyyy-mm-dd (e.g. 2013-01-18)
!/bin/sh
modDate=$(stat -c %y $1)
echo $modDate >> $1
When I run this on another file (by typing ./dateScript theFile.txt), I keep getting this message:
stat: illegal option -- c
What's wrong with my code... (2 Replies)
Discussion started by: Nate18
2 Replies
9. Shell Programming and Scripting
Explain it with proper e.g (4 Replies)
Discussion started by: sidpatil
4 Replies
10. Shell Programming and Scripting
SunOS -s 5.10 Generic_147440-04 sun4u sparc SUNW,SPARC-Enterprise
Hi,
In a folder, there are files. I have a script which reads the current date and subtract the modification date of each file.
How do I achieve this?
Regards,
Joe (2 Replies)
Discussion started by: roshanbi
2 Replies
utime(2) System Calls Manual utime(2)
NAME
utime() - set file access and modification times
SYNOPSIS
DESCRIPTION
The system call sets the access and modification times of the file to which the path argument refers.
If times is a NULL pointer, the access and modification times of the file are set to the current time. A process must be the owner of the
file or have write permission on the file to use in this manner.
The following times in the structure defined in are measured in seconds since 00:00:00 UTC (Coordinated Universal Time), January 1, 1970.
time_t actime; /* access time */
time_t modtime; /* modification time */
Security Restrictions
If times is not a NULL pointer, times is interpreted as a pointer to a utimbuf structure, and the access and modification times are set to
the values contained in the designated structure. Only the owner of the file or a user with the privilege can use this way.
See privileges(5) for more information about privileged access on systems that support fine-grained privileges.
RETURN VALUE
returns the following values:
Successful completion.
Failure.
is set to indicate the error.
ERRORS
If fails, is set to one of the following values.
Search permission is denied by a component of the path prefix.
The effective user ID is not a
user with the privilege, and not the owner of the file, times is a NULL pointer, and write access is denied.
times is not a NULL pointer, and it points outside the process's allocated address space. The reliable detection of this
error is implementation-dependent.
path points outside the process's allocated address space. The reliable detection of this error is implementation-depen-
dent.
times is not a NULL pointer, and access time or modification time or both are negative.
The length of the specified path name exceeds
bytes, or the length of a component of the path name exceeds bytes while is in effect.
The named file does not exist.
A component of the path prefix is not a directory.
The effective user ID is not a
user with the privilege, and not the owner of the file, and times is not a NULL pointer.
The file system containing the file is mounted read-only.
DEPENDENCIES
NFS
may return when invoked on a remote file owned by a superuser, or users with and privileges, even if the invoking user has write permission
on the file.
See privileges(5) for more information about privileged access on systems that support fine-grained privileges.
SEE ALSO
touch(1), stat(2), privileges(5).
STANDARDS CONFORMANCE
utime(2)