Chmod только для файлов или директорий

На самом деле это единственный раздел про unix на этом форуме

Модератор: /dev/random

uzak
Сообщения: 14

Chmod только для файлов или директорий

Сообщение uzak » 28.10.2014 01:02

Можно ли ограничиться только одной командой chmod без find, чтобы рекурсивно выставить права только на файлы в каталоге? или только на папки а файлы не трогать? Вроде давно где-то видел такое, в манах ничего не нашел.

Заодно спрошу гугру баша о предназначении X прав (chmod +X)
выполнение (или доступ к каталогу) (x); выполнение, если файл является каталогом или уже имеет право на выполнение для какого-нибудь пользователя (X)


Не могу понять. x - на чтение (поиск файлов в каталоге), X - права на исполнение файлов в каталоге, так что ли?
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 2578
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: Chmod только для файлов или директорий

Сообщение Hephaestus » 28.10.2014 07:28

uzak писал(а):
28.10.2014 01:02
Можно ли ограничиться только одной командой chmod без find, чтобы рекурсивно выставить права только на файлы в каталоге?
Ну, вообще для рекурсивной обработки есть опция -R.
А вот различать файлы и каталоги chmod вроде не умеет. Да и не должен уметь. Не его это проблема, ибо "всё есть файл". И по маске он добросовестно их обрабатывает.
А чем find не устраивает?
Он позволяет для найденных объектов выполнить какую-либо команду. Вполне штатное решение.
Так что искать и различать - задача find, а задача chmod - выставлять права. Unux-way.

uzak писал(а):
28.10.2014 01:02
Не могу понять. x - на чтение (поиск файлов в каталоге), X - права на исполнение файлов в каталоге, так что ли?
Заглавная X сохраняет уже выставленное право без изменения. Соответственно для каталога это право на доступ, для файла - право на выполнение.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 4866
ОС: Gentoo

Re: Chmod только для файлов или директорий

Сообщение /dev/random » 28.10.2014 07:42

uzak писал(а):
28.10.2014 01:02
Можно ли ограничиться только одной командой chmod без find, чтобы рекурсивно выставить права только на файлы в каталоге? или только на папки а файлы не трогать? Вроде давно где-то видел такое, в манах ничего не нашел.

Нет. Если нужно именно то, что вы описали, то без find не обойтись. Но если вся требующаяся разница между файлами и каталогами заключается в флаге выполнения, то см. ниже.

uzak писал(а):
28.10.2014 01:02
Заодно спрошу гугру баша о предназначении X прав (chmod +X)
выполнение (или доступ к каталогу) (x); выполнение, если файл является каталогом или уже имеет право на выполнение для какого-нибудь пользователя (X)


Не могу понять. x - на чтение (поиск файлов в каталоге), X - права на исполнение файлов в каталоге, так что ли?

"x" (строчный), если применяется к файлу, означает выполнение, а если к каталогу - использование в качестве каталога: вход, обращение к имеющимся в нём файлам, и т.д. Не путать с чтением: если чтение разрешено, а выполнение - нет, то вы можете только посмотреть список файлов, не более. И наоборот, если выполнение разрешено, а чтение нет, то вы можете использовать каталог по назначению, но только если откуда-то из сторонних источников знаете, какие в нём файлы. Получить их список нельзя, а обращаться, если имя известно - можно.

"X" (заглавный) - это не права, а chmod-специфичный флаг. При снятии эквивалентен "x". При установке означает установить "x", но не везде, а у всех каталогов и тех файлов, у которых "x" уже для кого-нибудь установлен. Т.е. если файл разрешено исполнять, допустим, группе, то chmod a+X сделает его исполнимым для всех, а если не разрешено исполнять никому, то так всё и останется.
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 2578
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: Chmod только для файлов или директорий

Сообщение Hephaestus » 28.10.2014 09:54

/dev/random писал(а):
28.10.2014 07:42
если чтение разрешено, а выполнение - нет, то вы можете только посмотреть список файлов, не более.
Вроде не совсем так.
Помню было такое, что сняв случайно флаг выполнения с нескольких каталогов (попали под шаблон), потом не мог войти ни в один из них.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 4866
ОС: Gentoo

Re: Chmod только для файлов или директорий

Сообщение /dev/random » 28.10.2014 10:39

Hephaestus писал(а):
28.10.2014 09:54
/dev/random писал(а):
28.10.2014 07:42
если чтение разрешено, а выполнение - нет, то вы можете только посмотреть список файлов, не более.
Вроде не совсем так.
Помню было такое, что сняв случайно флаг выполнения с нескольких каталогов (попали под шаблон), потом не мог войти ни в один из них.

Не вижу противоречия. Вход - это не просмотр списка файлов, это отдельная операция. Без флага выполнения он, соответственно, недоступен, как я и написал.
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Chmod только для файлов или директорий

Сообщение drBatty » 28.10.2014 14:14

Hephaestus писал(а):
28.10.2014 09:54
если чтение разрешено, а выполнение - нет, то вы можете только посмотреть список файлов, не более.

Вроде не совсем так.

именно так.Флаг +x это использование, т.е. без него вы не можете использовать каталог как каталог. Но можете список файлов просмотреть. И да, право +x должны иметь _все_ каталоги по пути от корня.

$

$ ll -d td drw------- 2 drb users 80 окт 28 15:12 td/ $ ls -la td /bin/ls: невозможно получить доступ к td/.: Отказано в доступе /bin/ls: невозможно получить доступ к td/..: Отказано в доступе /bin/ls: невозможно получить доступ к td/f2: Отказано в доступе /bin/ls: невозможно получить доступ к td/f1: Отказано в доступе итого 0 d????????? ? ? ? ? ? ./ d????????? ? ? ? ? ? ../ -????????? ? ? ? ? ? f1 -????????? ? ? ? ? ? f2


видно, что _имена_ файлов доступны, но всё остальное — нет. К самим файлам тоже нет доступа.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: