[issue25213] Regression: Python 3.5.0 shutil.copy2 doesn't raise PermissionError on Windows 7

2015-09-22 Thread eryksun

eryksun added the comment:

This issue doesn't pertain to the 64-bit version.

C:\Temp>py -3.5
Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) 
[MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import shutil
>>> shutil.copy2('test.txt', 'C:\\')
Traceback (most recent call last):
  File "", line 1, in 
  File "C:\Program Files\Python 3.5\lib\shutil.py", line 251, in copy2
copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "C:\Program Files\Python 3.5\lib\shutil.py", line 115, in copyfile
with open(dst, 'wb') as fdst:
PermissionError: [Errno 13] Permission denied: 'C:\\test.txt'

In the 32-bit version, creating a file in the system root directory gets 
virtualized when the user doesn't have write access. It's not specific to 
shutil.copy2.

C:\Temp>py -3.5-32
Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:16:59) 
[MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> open('C:\\test.txt', 'w').close()
>>> import pathlib
>>> pathlib.Path('C:\\test.txt').resolve()
WindowsPath('C:/Users/usradm/AppData/Local/VirtualStore/test.txt')

You can verify in the task manager's details tab that UAC Virtualization is 
enabled for 32-bit python.exe and disabled for 64-bit python.exe. The problem 
is that the manifest is missing the requestedExecutionLevel, which should be 
present and set to "asInvoker". This is discussed in the MSDN article [New UAC 
Technologies for Windows Vista][1].

>>> os.system('sigcheck -q -m "%s"' % sys.executable)
c:\users\usradm\appdata\local\programs\python\python35-32\python.exe:
Verified:   Signed
Signing date:   2:17 AM 9/13/2015
Publisher:  Python Software Foundation
Description:Python
Product:Python
Prod version:   3.5.0
File version:   3.5.0
MachineType:32-bit
Manifest:


  

  
  
  
  
  

  


3.4's manifest sets the requestedExecutionLevel:

C:\Temp>py -3.4-32
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) 
[MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os, sys
>>> os.system('sigcheck -q -m "%s"' % sys.executable)
c:\users\usradm\appdata\local\programs\python\python34-32\python.exe:
Verified:   Unsigned
Link date:  9:43 PM 2/24/2015
Publisher:  n/a
Description:n/a
Product:n/a
Prod version:   n/a
File version:   n/a
MachineType:32-bit
Manifest:

  

  

  

  
 

[1]: https://msdn.microsoft.com/en-us/library/bb756960

--
components: +Windows -Library (Lib)
keywords: +3.5regression
nosy: +eryksun, paul.moore, steve.dower, tim.golden, zach.ware
priority: normal -> high

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue25213] Regression: Python 3.5.0 shutil.copy2 doesn't raise PermissionError on Windows 7

2015-09-22 Thread Steve Dower

Changes by Steve Dower :


--
resolution:  -> fixed
stage:  -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue25213] Regression: Python 3.5.0 shutil.copy2 doesn't raise PermissionError on Windows 7

2015-09-22 Thread Steve Dower

Steve Dower added the comment:

Confirmed. I have a trivial fix coming to restore the requestedExecutionLevel.

--
assignee:  -> steve.dower

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue25213] Regression: Python 3.5.0 shutil.copy2 doesn't raise PermissionError on Windows 7

2015-09-22 Thread Roundup Robot

Roundup Robot added the comment:

New changeset b7f0f1d1e923 by Steve Dower in branch '3.5':
Issue #25213: Restores requestedExecutionLevel to manifest to disable UAC 
virtualization.
https://hg.python.org/cpython/rev/b7f0f1d1e923

--
nosy: +python-dev

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue25213] Regression: Python 3.5.0 shutil.copy2 doesn't raise PermissionError on Windows 7

2015-09-22 Thread Nick Evans

New submission from Nick Evans:

Python 3.5.0 shutil.copy2 doesn't raise PermissionError when it does not have 
permission to copy a file (tested on Windows 7):

C:\Users\X\Desktop>C:\Users\X\AppData\Local\Programs\Python\Python35-32\python.exe
Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:16:59) [MSC v.1900 32 bit 
(Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import shutil
>>> shutil.copy2("test.txt", "/")
'/test.txt'
>>> shutil.copy2("test.txt", "C:\\")
'C:\\test.txt'

NB: The file is not copied.

Python 3.4.3 does raise PermissionError:

C:\Users\X\Desktop>C:\Python34\python.exe
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit 
(AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import shutil
>>> shutil.copy2("test.txt", "/")
Traceback (most recent call last):
  File "", line 1, in 
  File "C:\Python34\lib\shutil.py", line 245, in copy2
copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "C:\Python34\lib\shutil.py", line 109, in copyfile
with open(dst, 'wb') as fdst:
PermissionError: [Errno 13] Permission denied: '/test.txt'
>>> shutil.copy2("test.txt", "C:\\")
Traceback (most recent call last):
  File "", line 1, in 
  File "C:\Python34\lib\shutil.py", line 245, in copy2
copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "C:\Python34\lib\shutil.py", line 109, in copyfile
with open(dst, 'wb') as fdst:
PermissionError: [Errno 13] Permission denied: 'C:\\test.txt'

--
components: Library (Lib)
messages: 251322
nosy: nre3976
priority: normal
severity: normal
status: open
title: Regression: Python 3.5.0 shutil.copy2 doesn't raise PermissionError on 
Windows 7
versions: Python 3.5

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com