Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: CHMOD в BASH скрипте  (Прочитано 4868 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Jeka-Grin

  • Автор темы
  • Участник
  • *
  • Сообщений: 249
  • Meerkat, Gnome 2X
    • Просмотр профиля
    • UBUNTU.LOS-BERDOS
CHMOD в BASH скрипте
« : 15 Октября 2010, 22:47:17 »
Здравствуйте!

Продолжаю защищать свой сервер )))

Вы мне здорово помогли с этим скриптом, который удаляет файлы старше 30 дней:

# Автоудаление старых бэкапов



################# /Grin/Backups/www ######################
# databases
find /Grin/Backups/www/databases -mtime +30 -delete
# sites
find /Grin/Backups/www/sites -mtime +10 -delete
##########################################################


Мне бы переделать этот скрипт так,
Чтоб он назначал права (chmod) файлам старше 30 дней только на чтение (root естественно должен иметь права)

find /Grin/Backups/www/sites -mtime +10 -chmod 700 -R          # разве так будет правильно?

Подправьте пожалуйста.)


Это я хочу назначать права на файлы, которые заливают люди на сайт так,
чтоб никто несмог переименовывать или удалять.
ведь ссылки привязаны.

И очень важно чтоб срабатывало на файлах,
но только тех которые с момента записи на хард  лежали там 5 дней например
Ищу желающих людей администрировать
проэкт http://ubuntu.los-berdos.org.ua

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: CHMOD в BASH скрипте
« Ответ #1 : 15 Октября 2010, 23:36:13 »
find /Grin/Backups/www/sites -mtime +10 | xargs chmod -R 700 *
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн Jeka-Grin

  • Автор темы
  • Участник
  • *
  • Сообщений: 249
  • Meerkat, Gnome 2X
    • Просмотр профиля
    • UBUNTU.LOS-BERDOS
Re: CHMOD в BASH скрипте
« Ответ #2 : 15 Октября 2010, 23:40:19 »
find /Grin/Backups/www/sites -mtime +10 | xargs chmod -R 700 *

Но ведь  -mtime это последнее ИЗМЕНЕНИЕ самого файла,
а мне нужно чтоб 10 дней с момента ЗАПИСИ на мой хард
Ищу желающих людей администрировать
проэкт http://ubuntu.los-berdos.org.ua

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: CHMOD в BASH скрипте
« Ответ #3 : 15 Октября 2010, 23:43:45 »
А, так  вам еще это нужно. Попробуйте искать по дате создания. А как файл пишется на диск? Может можно в имя файла добавить дату создания.

UP Ну вот вам еще в помощь:
date -r file_name.tarВы получите дату последней модификации файла (если у вас архивы бэкапа, то скорей всего это и есть дата создания). Выглядит оно примерно так:
Fri Oct  8 06:31:54 MSD 2010Как видите преобразовать это в число будет трудно, хотя можно поколдовать с date. Мне больше нравится вариант с занесением даты в имя архива.
« Последнее редактирование: 15 Октября 2010, 23:54:47 от aliftin »
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн Jeka-Grin

  • Автор темы
  • Участник
  • *
  • Сообщений: 249
  • Meerkat, Gnome 2X
    • Просмотр профиля
    • UBUNTU.LOS-BERDOS
Re: CHMOD в BASH скрипте
« Ответ #4 : 15 Октября 2010, 23:52:29 »
А как файл пишется на диск?



#!/bin/bash

# Назначение переменных
DATE=$(date +"%Y-%m-%d_%H-%M")

# DB "venet" (wsnet.com.ua)
mysqldump -uroot -pMYPASS NAME_OF_DATABASE > /Grin/Backups/www/databases/$DATE.wsnet_venet.sql


Cron каждый час исполняет этот скрипт.
Файлов много, и в названиях файлов стоит их дата создания:

2010-10-15_08-00.wsnet_venet.sql
Ищу желающих людей администрировать
проэкт http://ubuntu.los-berdos.org.ua

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: CHMOD в BASH скрипте
« Ответ #5 : 15 Октября 2010, 23:58:55 »
Ну так где проблема? Читайте про sed/awk и придумывайте как сравнить текущую дату и дату из имени.
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн Jeka-Grin

  • Автор темы
  • Участник
  • *
  • Сообщений: 249
  • Meerkat, Gnome 2X
    • Просмотр профиля
    • UBUNTU.LOS-BERDOS
Re: CHMOD в BASH скрипте
« Ответ #6 : 16 Октября 2010, 00:00:27 »
Да. в файлах есть дата их создания.
Но применить это нужно с совсем другими данными

Понимаете, это мне нужно сделать с фильмами и другими файлами
залитыми по FTP и размещёнными на сайте.

Так, чтоб после 10 дней после заливки их уже никто не мог удалить.

Ведь эти файлы, фильмы создавались и модифицировались уже давно
Мне нужно вычислить отсчёт и действие именно с момента записи на мой хард
Ищу желающих людей администрировать
проэкт http://ubuntu.los-berdos.org.ua

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: CHMOD в BASH скрипте
« Ответ #7 : 16 Октября 2010, 00:06:08 »
Да я понял вас. Я не могу придумать как сравнить даты.

UP Придумал костыль: можно отталкиваться от порядкового номера дня в году. Выглядит это примерно так:
date +"%j" -r  ./file_name.tar
281

Теперь просто сравните полученное число с тем которое сегодня и делайте что вам нужно. Но помните, это будет работать до нового года. Придется сделать заглушку.

UP Можно еще дату последней модификации вот так получить:
ls --full-time ./file_name.tar | awk '{print $6}'
« Последнее редактирование: 16 Октября 2010, 00:34:02 от aliftin »
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн Jeka-Grin

  • Автор темы
  • Участник
  • *
  • Сообщений: 249
  • Meerkat, Gnome 2X
    • Просмотр профиля
    • UBUNTU.LOS-BERDOS
Re: CHMOD в BASH скрипте
« Ответ #8 : 16 Октября 2010, 00:36:38 »
Если пойти другим путём:

chmod 700 -R /FILMS
и каждый день обрезать права с новых файлов,
но ведь к папке /FILMS тоже применится аттрибут "чтение"
и люди несмогут больше заливать. тогда если добавить команду:

chmod 700 -R /FILMS
chmod 777 /FILMS   # позволит создавать новые файлы в папке


Нельзя как применить аттрибуты ко ВСЕМ файлам в папке /FILMS,
но не меняя аттрибуты самой папки /FILMS   ?
Ищу желающих людей администрировать
проэкт http://ubuntu.los-berdos.org.ua

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: CHMOD в BASH скрипте
« Ответ #9 : 16 Октября 2010, 00:43:54 »
Конечно. Выглядит это примерно так:
chmod 700  /films/*
UP Кажется вот так должен выглядеть скрипт, который изменяет права на файлы, созданные 30 дней назад:
#!/bin/bash
#Sat Oct 16 00:55:56 MSD 2010
IFS=$'\n' #Разделитель
today=`date +"%j"` #Порядковый номер дня
time_of_storage=30 #Количество дней, после которого с файлом что то происходит


for i in `ls ./`
do
file_date_creating=`date +"%j" -r "$i"` #Порядковый номер дня создания проверяемого файла

if [ "$today" -lt "$file_date_creating" ]
then
let "temp=today + 365 - file_date_creating " #Временная переменная, необходимая для сравнения

if [ "$temp" -gt "$time_of_storage" ]
then
echo "Тут какое то действие"
fi
else
let "temp=today - file_date_creating" #Временная переменная, необходимая для сравнения

if [ "$temp" -gt "$time_of_storage" ]
then
echo "Тут какое то действие"
fi
fi


done

Мне он кажется верным, но его нужно протестировать и доработать.
« Последнее редактирование: 16 Октября 2010, 01:42:10 от aliftin »
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн Jeka-Grin

  • Автор темы
  • Участник
  • *
  • Сообщений: 249
  • Meerkat, Gnome 2X
    • Просмотр профиля
    • UBUNTU.LOS-BERDOS
Re: CHMOD в BASH скрипте
« Ответ #10 : 16 Октября 2010, 01:58:58 »
Проверю и отпишусь
Ищу желающих людей администрировать
проэкт http://ubuntu.los-berdos.org.ua

Оффлайн smaharbA

  • Участник
  • *
  • Сообщений: 220
    • Просмотр профиля
Re: CHMOD в BASH скрипте
« Ответ #11 : 18 Октября 2010, 23:53:12 »
бредятина какая то

-type f
-type d
Я конечно далек от мысли...(с)

Оффлайн terrible_user

  • Активист
  • *
  • Сообщений: 438
    • Просмотр профиля
Re: CHMOD в BASH скрипте
« Ответ #12 : 19 Октября 2010, 11:55:05 »
find {параметры поиска} -exec chmod 700  {} \;
Бери больше, кидай дальше

Оффлайн Jeka-Grin

  • Автор темы
  • Участник
  • *
  • Сообщений: 249
  • Meerkat, Gnome 2X
    • Просмотр профиля
    • UBUNTU.LOS-BERDOS
Re: CHMOD в BASH скрипте
« Ответ #13 : 19 Октября 2010, 22:02:32 »
find {параметры поиска} -exec chmod 700  {} \;

А какие будут параметры поиска файлов
которые НЕ модифицырованные 30 дней назад,
А СОЗДАННЫЕ\ЗАПИСАННЫЕ НА HDD 30 дней назад ???
Ищу желающих людей администрировать
проэкт http://ubuntu.los-berdos.org.ua

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: CHMOD в BASH скрипте
« Ответ #14 : 20 Октября 2010, 00:04:09 »
Да что вы так переживаете. У вас же там что то типа хранилища фильмов, а значит их содержимое изменяется никак.
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

 

Страница сгенерирована за 0.023 секунд. Запросов: 21.