Используйте xmlint для извлечения значения атрибута с помощью XPath:
xmllint --xpath 'string(/blah/blah1[@name="andy"]/@branch)' file.xml
Для обработки XML лучше использовать синтаксический анализатор XML, поскольку порядок атрибутов может измениться и могут быть вставлены разрывы строк, в результате чего атрибуты имени и ветви будут находиться в разных строках файла.
Вы можете использовать следующее решение:
chown user1 /path/to/file
chmod 644 /path/to/file
Это даст от rw
до user1
и от r
до user2
Для каталогов необходимо добавить x
, чтобы дать пользователю возможность изменять этот каталог:
chmod 755 /path/to/file
Будьте осторожны с -R
, потому что это также изменит подкаталоги
Для автоматизации работы можно использовать что-то вроде. Будьте очень осторожны с начальным каталогом, потому что эти команды могут изменить права доступа к файлам, которые вы не хотите трогать
find /path/to/file -type f -exec chmod 644 {} \;
для файлов
find /path/to/dir -type d -exec chmod 755 {} \;
для каталогов
Традиционные разрешения Unix довольно грубо -детализированы, различая только владельца (, пользователя ), группу и другие, где пользователь (, точнее процесс ), может принадлежать к нескольким группам.. Большинство современных инсталляций Linux создают частную группу для каждого пользователя, чтобы немного больше изолировать пользователей между собой (многие устаревшие системы Unix имели общую группу users
для всех пользователей,. Я сделал некоторые из своих групп файлов доступными для чтения/записи, каждый мог провести с ними целый день ).
Вы можете создать группу, к которой принадлежат только user1
и user2
, и использовать групповые разрешения, чтобы получить то, что вы хотите, но это совсем не идеально.
Современное ядро/файловые системы/инструменты Linux обрабатывают списки контроля доступа (ACL ), см. acl(5)
. Используя ACL, вы получаете более детальное управление, то есть, скажем, «user1
имеет точно такие же разрешения на объект foo
».