Использование `useradd -R` для chrooting

Я считаю, что следующий -вкладыш должен работать:

L=`grep -h "ER" * | grep -v Cheese | wc -L`; grep -h "ER" * | grep -v Cheese | grep -P ".{$L}"

Первая команда находит все строки в файлах в каталоге, содержащем «ER» (вам нужна только опция -R, если у вас есть подкаталоги, иначе глобус *— это все, что вам нужно ), удаляет строки с помощью Cheese, а затем находит самую длинную из этих строк с помощью команды wc -L.

Вторая команда (увы )снова выполняет поиск соответствующих строк, но затем ищет строки максимальной длины. Вам может не понадобиться опция -Pдля grep, в зависимости от вашей версии grep.

0
02.01.2020, 14:49
1 ответ

Вы неправильно поняли назначение и поведение опций -Rв useradd.

Насколько я понимаю, это не имеет никакого отношения к chrooting пользователя :этот переключатель позволяет изменять файлы аутентификации (/etc/passwd + /etc/shadow )в другом каталоге, чем /. Это может быть полезно, например, для управления пользователями контейнера LXC.

Демонстрация:

/tmp$ mkdir fakeroot
/tmp$ mkdir fakeroot/etc
/tmp$ touch fakeroot/etc/{shadow,passwd}
/tmp$ find fakeroot/
fakeroot/
fakeroot/etc
fakeroot/etc/shadow
fakeroot/etc/passwd
/tmp$ sudo useradd -R /tmp/fakeroot toto
/tmp$ cat /tmp/fakeroot/etc/* 
toto:!:1000:
toto:x:1000:1000::/home/toto:
cat: /tmp/fakeroot/etc/passwd-: Permission denied
toto:!:18263:0:99999:7:::
cat: /tmp/fakeroot/etc/shadow-: Permission denied
/tmp$ grep toto /etc/passwd
/tmp$

Как видите, команда useradd изменила только файлы в каталоге /tmp/fakeroot и оставила нетронутым системный файл в каталоге /etc/

4
28.01.2020, 02:38

Теги

Похожие вопросы