Вот два perl
один -вкладыша. Первый меняет файл bar
на -место:
perl -p -0777 -i -e 'substr($_,2,1)^=chr(1<<5)' bar
Второй читает файл foo
и записываетbar
perl -p -0777 -e 'substr($_,2,1)^=chr(1<<5)' < foo > bar
Чтобы адаптироваться к вашему приложению :2 выбирает, какой байт :0..file _длина -1, т. е. 2 является третьим байтом. 5 выбирает, какой бит перевернуть :0 -7, т. е. 5 — это 6-й бит. Это будет работать только для файлов, которые помещаются в память.
-p
итерация по файлу, печать после каждой итерации -0777
читать весь файл в память на каждой итерации (, поэтому будет только одна итерация)-e
запустите следующий perl-код внутри цикла substr
выберите один символ в файле, начиная с индекса 2 ^=chr
XOR этого символа с 1 сдвинутым 5 раз, т.е. 2^5
Этот ответ является упрощенной версией ответа Тоддкауфмана
.
Вы можете использовать опцию groupadd
's -g
, чтобы указать идентификатор, который вы хотите, чтобы новая группа имела.
При изменении идентификаторов групп с помощью groupmod
имейте в виду, что вам придется настроить права собственности на файлы, использующие старый идентификатор.
Is it ok to have two groups with GID in linux system
Это возможно (с использованием параметра -o
в groupadd
и groupmod
), но по умолчанию это предотвращается.Имена пользователей и групп просто сопоставляют имя с идентификатором, поэтому дублирование идентификаторов может привести к неожиданным результатам. Например. вы не ожидали бы, что chown
присоединение каталога к группе с одним именем также даст доступ к группе с другим именем.
Такие системы, как LDAP (Облегченный протокол доступа к каталогам ), существуют для решения именно той проблемы, которую вы описываете -, управляя разрешениями согласованным образом в нескольких системах.
Вы сможете создавать пользователей/группы в одном месте, и все системы, подключенные к серверу LDAP, будут использовать одни и те же идентификаторы для каждого имени пользователя/группы.