Автор Гілка: Проблема з роздільним встановленням атрибутів...  (Прочитано 1115 раз)

Юрій.(Guest)

  • Гість
Є наявною проблема з роздільним встановленням атрибутів. Опісля ревізії є декілька десятків тек (а з вкладеними теками - сотні!), причому атрибути у різних файлів різні і не завжди гожі. Хотів би встановити усім текам атрибути:
Власник +r+x+w Група +r+x-w Інші +r+x-w
Файлам:
Власник +r-x+w Група +r-x-w Інші +r-x-w
Усі інші атрибути (X...s...t...u...g...o) познімати і з файлів і з тек. Робити це вручну - справа невдячна і займе може цілу добу. Якби написати програму, яка-б рекурсивно пройшлась-б по цьому сховищу даних і встановила атрибути!... Справа у тому, що я-б і сам міг-б написати програму, але у поставці C-бібліотек з GCC немає файлу типу dos.h, у якому були-б функції findfirst/findnext та setfattr/getfattr. Що робити? Які модулі підключати? Як знімати усі атрибути і встановлювати їх? Якими функціями користуватись? Попередньо красно дякую за конкретні відповіді! Може, хтось вже дасть готову програму чи скаже чим користуватись, чи скрипт хтось дасть для цього? Справа термінова. Дуже попередньо дякую!

Відсутній borman

  • Графоман
  • ****
  • дописів: 416
  • Карма: +0/-0
  • Debianizer
Очевидно, найкраще обробку проводити скриптом. Один з можливих сценаріїв:
1) find * в початковій теці (виводить список всіх файлів)
2) для кожного рядка виконати ls -ld <вмість_рядка>
3) якщо перша літера з виводу попередньої команди -- d (маємо справу з текою) виконуємо chmod 744 <вмість_рядка>, інакше (файл) chmod 755 <вмість_рядка>.

До речі, атрибути 744 для тек виглядають досить дивно. Команду cd для такої теки нікому окрім власника виконати не вдасться. Краще все ж виставляти всюди 755. Тоді взагалі все просто -- chmod -R вам допоможе...
dd if=/dev/zero of=/dev/null

Відсутній ping

  • Новачок
  • *
  • дописів: 4
  • Карма: +0/-0
  • I Love YaBB 2!
Можна і простіше:
find /home/mydir -type f -exec chmod  u=rxw,g=rx,o=rx {} \;
find /home/mydir -type d -exec chmod u=rw,g=r,o=r {} \;
До речі, атрибути 744 для тек виглядають досить дивно. Команду cd для такої теки нікому окрім власника виконати не вдасться. Краще все ж виставляти всюди 755. Тоді взагалі все просто -- chmod -R вам допоможе...
Наприклад, так: chmod  -R u=rxwX,g=rxX,o=rxX /home/mydir;
(атрибут "Х" впливає лише на теки) Крім того, варто переконатися, що атрибут "х"(execute) для файлів справді Вам потрібен...