emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-bug-tracker] bug#8752: closed (cp: fchown called before fchmod, u


From: GNU bug Tracking System
Subject: [Emacs-bug-tracker] bug#8752: closed (cp: fchown called before fchmod, unable to set file mode)
Date: Wed, 01 Jun 2011 19:18:02 +0000

Your message dated Wed, 1 Jun 2011 13:17:28 -0600
with message-id <address@hidden>
and subject line Re: bug#8752: cp: fchown called before fchmod, unable to set 
file mode
has caused the GNU bug report #8752,
regarding cp: fchown called before fchmod, unable to set file mode
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
8752: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8752
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: cp: fchown called before fchmod, unable to set file mode Date: Sat, 28 May 2011 15:10:21 +0200

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 

--- 

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

-rwxrwxrwx 1 elzu radia 32 May 20 15:50 source 
-rwxrwxrwx 1 elzu radia 32 May 20 15:50 target 
address@hidden:/home/hp/coreutils $ rm -f target 

address@hidden:/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 

-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 

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

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

address@hidden:/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) 


--- End Message ---
--- Begin Message --- Subject: Re: bug#8752: cp: fchown called before fchmod, unable to set file mode Date: Wed, 1 Jun 2011 13:17:28 -0600 User-agent: Mutt/1.5.21 (2010-09-15)
Paul Eggert wrote:
> Paul Eggert wrote:
> > # echo "-n CHOWN" >>/etc/privgrp
> > # setprivgrp -f /etc/privgroup
> 
> Whoops, obviously I misspelled one of those two file names.
> I think the second one is right.  But you should read the
> manuals and check before trying it (I haven't used HP-UX
> in years).

The first was the misspelling, the second was the correct name.

Just to be clear, this next command will set it interactively.  You
can test the behavior without having made any permanent changes.  But
if you reboot the change will be gone.

  # setprivgrp -n CHOWN

Setting this file /etc/privgroup with the following contents will make
it persistent at boot time:

  -n CHOWN

See 'man 1m setprivgrp' for the HP-UX documentation.

And since I think this completely resolves the issue I am going to
close the ticket on it.  Please feel free to add additional comments.
If needed the ticket can be reopened at any time.

Bob


--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]