Найти - Пользователи
Полная версия: Python chmod
Начало » Python для новичков » Python chmod
1
alexmihajlov
Добрый день.
В целях обучения решил переписать все свои скрипты на 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? Как правильней? Спасибо.
JOHN_16
alexmihajlov
но это немножко не то, и не так - он меняет права на свои, а не редактирует существующие
это как? у меня как то все верно отрабатывает.
alexmihajlov
Ну есть разница между
chmod 0755 и
chmod g+rwX
Во первом случае на файл устанавливаются права -rwxr-xr-x, какие бы до этого права на файле не стояли,
а во втором случае правятся только права на группу.
Результатом работы этой команды могут быть права и
r-xrw-r– и rwxrw—- и даже drwxrwxr-x в зависимости от того, какие права раньше стояли на файле и файл ли это.
Как я понял из документации -
os.chmod(dir, 0o755) - аналог первого варианта (chmod 0755), он игнорирует те права, которые стояли раньше
Мне же нужен второй вариант chmod-а.
Как правильно себя вести в этой ситуации?
agalen
Прочитай перед изменением существующие права с помощью os.stat и вычисляй нужные.
JOHN_16
alexmihajlov
тогда вам скорее всего нужен модуль stat
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB