[Bug 969032] Re: Python os module lacks the chflags/lchflags methods

Tim Landscheidt tim at tim-landscheidt.de
Tue Mar 29 01:08:55 UTC 2016


I ran into this today and thought I'd share what I learned.

The syscall chflags does not exist in Linux, so when compiling Python it
notices this and does not provide os.chflags().

chattr(1) on the other hand uses an ioctl() of EXT2_IOC_SETFLAGS to set
the attributes (e2fsprogs-1.42.13's lib/e2p/fsetflags.c):

|         fd = open (name, OPEN_FLAGS);
|         if (fd == -1)
|                 return -1;
|         f = (int) flags;
|         r = ioctl (fd, EXT2_IOC_SETFLAGS, &f);
|         if (r == -1)
|                 save_errno = errno;
|         close (fd);

So you could (instead of executing chattr(1)) call Python's
fcntl.ioctl() to perform that action.

It would probably be very nice if Python's os.chflags() would DWIM (and
if someone brings this to Python please report here), but on the other
hand I can also understand the paradigm to keep low-level functions
"dumb", i. e. a function where the user expects that a simple syscall is
made should only do that and nothing more.

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to python2.7 in Ubuntu.
https://bugs.launchpad.net/bugs/969032

Title:
  Python os module lacks the chflags/lchflags methods

Status in python2.7 package in Ubuntu:
  Invalid

Bug description:
  Reading http://docs.python.org/library/os.html#os.stat , I noticed
  that on Linux the "flags" or "chattr" features have a Python interface
  since version 2.6.

  However, on up-to-date Precise (Python 2.7.3rc2) and Oneiric (Python
  Python 2.7.2+), the following commands :

  import os
  os.chflags

  report "AttributeError" in a Python shell. Grepping in
  /usr/lib/python2.7, the only reference to "chflags" is in the
  `shutil.py` file which just checks if the python method is present or
  not.

  As the system interface is OK (I can successfully use "chattr"  and
  "lsattr" in the shell on both Ubuntu versions, and historically this
  features has been present since I started using Linux), I think the
  "flags" part of the Python distribution should be activated on Ubuntu.

  Currently I need this feature in my Python application to see if some
  files have the IMMUTABLE or APPEND flag, but generally speaking I
  can't see any good reason why this feature is not active while beeing
  part of the standard Python distribution.

  regards,

  --
  Olivier

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/969032/+subscriptions



More information about the foundations-bugs mailing list