Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 3, 2013 13:05:52

alexmihajlov
Зарегистрирован: 2013-10-03
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Python chmod

Добрый день.
В целях обучения решил переписать все свои скрипты на sh на python

Есть скриптик на шелле, который в некоторый момент делает

chgrp -R updater /usr/local/www/hosting/$DIR
chmod -R g+rwX /usr/local/www/hosting/$DIR

Как это будет на питоне? Я осилил только рекурсивный чмод, но это немножко не то, и не так - он меняет права на свои, а не редактирует существующие.

for root, dirs, files in os.walk(path):
for d in dirs:
os.chmod(root + ‘/’ + d, 0o777)
for f in files:
os.chmod(root + ‘/’ + f, 0o666)

Или лучше не морочится и использовать os.system? Как правильней? Спасибо.

Офлайн

#2 Окт. 3, 2013 15:28:59

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Python chmod

alexmihajlov
но это немножко не то, и не так - он меняет права на свои, а не редактирует существующие
это как? у меня как то все верно отрабатывает.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Окт. 3, 2013 15:56:40

alexmihajlov
Зарегистрирован: 2013-10-03
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Python chmod

Ну есть разница между
chmod 0755 и
chmod g+rwX
Во первом случае на файл устанавливаются права -rwxr-xr-x, какие бы до этого права на файле не стояли,
а во втором случае правятся только права на группу.
Результатом работы этой команды могут быть права и
r-xrw-r– и rwxrw—- и даже drwxrwxr-x в зависимости от того, какие права раньше стояли на файле и файл ли это.
Как я понял из документации -
os.chmod(dir, 0o755) - аналог первого варианта (chmod 0755), он игнорирует те права, которые стояли раньше
Мне же нужен второй вариант chmod-а.
Как правильно себя вести в этой ситуации?

Офлайн

#4 Окт. 3, 2013 16:25:32

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

Python chmod

Прочитай перед изменением существующие права с помощью os.stat и вычисляй нужные.



Офлайн

#5 Окт. 4, 2013 15:16:29

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Python chmod

alexmihajlov
тогда вам скорее всего нужен модуль stat



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version