mainGNU Core Utilities - Support: sr #107704, cp: fchown called before fchmod,...

 
 

You are not allowed to post comments on this tracker with your current authentication level.

sr #107704: cp: fchown called before fchmod, unable to set file mode

Submitter:  Milan Novak <milan123>
Submitted:  Fri 27 May 2011 01:29:13 PM UTC
   
 
Category:  None Priority:  5 - Normal
Severity:  4 - Important Status:  None
Privacy:  Public Assigned to:  None
Open/Closed:  Open Operating System:  None

Fri 27 May 2011 01:29:13 PM UTC, original submission:  

Hello,

I believe that cp uses wrong order of syscalls when applying target file attributes, fchown(2) is called before fchmod(2).
As a result it looses access to target file and is unable to apply file mode correctly; error message is as follows
"cp: preserving permissions for `target': Not owner"

The problem arises when -p (preserve attributes) is present and file owner is different from user doing the copy.

Same operation using cp on hp-ux 11.31 is successfull, since hp-ux cp calls chmod(2) before chown(2).

Please let me know what do you think about changing order of fchown(2) <=> fchmod(2).

Kind Regards,
Milan

---

hp@mtest:/home/hp/coreutils $ id
uid=1058(hp) gid=20(users) groups=65535(last)
hp@mtest:/home/hp/coreutils $ ll source target
target not found
-rwxrwxrwx   1 elzu       radia           32 May 20 15:50 source
hp@mtest:/home/hp/coreutils $ tusc -o tusc_hpuxcp.out /usr/bin/cp -p source target; echo $? ; ll source target
0
-rwxrwxrwx   1 elzu       radia           32 May 20 15:50 source
-rwxrwxrwx   1 elzu       radia           32 May 20 15:50 target
hp@mtest:/home/hp/coreutils $ rm -f target

hp@mtest:/home/hp/coreutils $ tusc -o tusc_gnucp.out coreutils-8.11/src/cp -p source target; echo $? ; ll source target
coreutils-8.11/src/cp: preserving permissions for `target': Not owner #>>>> ERROR
1
-rwxrwxrwx   1 elzu       radia           32 May 20 15:50 source
-rwx------   1 elzu       radia           32 May 20 15:50 target #>>> already owned by user elzu, so chmod executed as user hp fails

hp@mtest:/home/hp/coreutils $ coreutils-8.11/src/cp --version | head -1
cp (GNU coreutils) 8.11

hp@mtest:/home/hp/coreutils $ uname -a
HP-UX mtest B.11.31 U ia64 2263078376 unlimited-user license

hp@mtest:/home/hp/coreutils $ egrep "target|chown|chmod|exit" tusc_*
tusc_hpuxcp.out:stat64("target", 0x7fffeec0) ............................................ ERR#2 ENT
tusc_hpuxcp.out:stat64("target", 0x40021110) ............................................ ERR#2 ENT
tusc_hpuxcp.out:stat64("target", 0x40021110) ............................................ ERR#2 ENT
tusc_hpuxcp.out:access("target", F_OK) .................................................. ERR#2 ENT
tusc_hpuxcp.out:open("target", O_WRONLY|O_CREAT|O_TRUNC|0x800, 0) ....................... = 6
tusc_hpuxcp.out:utime("target", 0x7fffe5f0) ............................................. = 0
tusc_hpuxcp.out:chmod("target", 0100777) ................................................ = 0
tusc_hpuxcp.out:chown("target", 1021, 1005) ............................................. = 0
tusc_hpuxcp.out:chmod("target", 0100777) ................................................ ERR#1 EPM
tusc_hpuxcp.out:exit(0) ................................................................. WIFE)

tusc_gnucp.out:stat64("target", 0x7fffedf0) ............................................ ERR#2T
tusc_gnucp.out:stat64("target", 0x7fffeac0) ............................................ ERR#2T
tusc_gnucp.out:open("target", O_WRONLY|O_CREAT|O_EXCL|0x800, 0700) ..................... = 5
tusc_gnucp.out:utime("target", 0x7fffe7a8) ............................................. = 0
tusc_gnucp.out:fchown(5, 1021, 1005) ................................................... = 0 #>>> the problem is HERE, CHOWN goes before CHMOD;
tusc_gnucp.out:fchmod(5, 0100777) ...................................................... ERR#1M #>>> this fails, since user hp is not the owner of the file anymore
tusc_gnucp.out:exit(1) ................................................................. WIFEX)

Milan Novak <milan123>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by milan123 (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

     

    No changes have been made to this item

    Back to the top

    Powered by Savane 3.14-0608.
    Corresponding source code