Почему root имеет доступ к моему X-серверу?

Для этого можно использовать комбинацию awk и xargs ,

sort -r directories | awk -F/ 'cache[$3, $4, $6]++' | xargs -L1 rm -rf

каталогов это просто файл, содержащий все ваши каталоги, sort -r каталоги могут быть легко заменены конвейером (например, printf "% s \ n" / home / * / * / Content / * / * | сортировка -r ).

sort -r помещает каталоги в начало списка (он использует тот факт, что ваши даты можно сравнивать лексикографически, если бы их не было, вам бы сначала пришлось их правильно проанализировать) . Наконец, awk ведет учет, когда он впервые видит ( пользователь , среда , продукт ), он не печатает его, печатаются все следующие вхождения. Это создает список каталогов для удаления, который затем удаляется с помощью xargs / rm .

Примечание: если ваши имена файлов / каталогов содержат пробелы или «странные» символы, это не совсем сработает, поэтому вам придется изменить команду.


Что делает awk -F / 'cache [$ 3, $ 4, $ 6] ++' ? Сначала он разбивает входные строки на / . Затем для каждой входной строки он проверяет, присутствует ли кортеж, содержащий 3-е, 4-е и 6-е значения, в ассоциативном массиве cache .В первый раз, когда кортеж виден не в массиве, поэтому cache [$ 3, $ 4, $ 6] возвращает 0 , поэтому строка удаляется, ++ затем устанавливает cache [$ 3, $ 4, $ 6] на 1 . В следующий раз, когда будет виден кортеж cache [$ 3, $ 4, $ 6] вернет что-то > 0 , что означает, что строка будет напечатана.

Вот простой рабочий пример:

$ cat example
a,c,0
a,a,2
c,a,0
a,b,2
b,a,2
a,b,0
c,a,1
b,b,0
a,b,1
a,a,1
a,a,0
b,a,1
b,c,2
b,b,2
b,c,1
a,c,1
c,c,1
$ awk -F, 'cache[$1, $2]++' example
a,b,0
c,a,1
a,b,1
a,a,1
a,a,0
b,a,1
b,b,2
b,c,1
a,c,1
$ fgrep a,b example
a,b,2
a,b,0
a,b,1
$

Обратите внимание, как строка a, b, 2 пропала, а a, b, 0 и a, b, 1 - нет. Использование ассоциативного массива и оператора ++ является довольно распространенным шаблоном в awk , например, см. 43. Удалите повторяющиеся непоследовательные строки .

1
03.08.2018, 05:39
1 ответ

Если вы использовали suдля переключения на root, переменная среды XAUTHORITYдоступна в корневой оболочке, запущенной с помощью su. А поскольку root может читать ваши файлы, он имеет доступ к файлу Xauthority. В моей системе:

root@host# medit   

запускается нормально, тогда как опустошение XAUTHORITYприводит к сбою:

root@host# XAUTHORITY= medit
No protocol specified

(medit:25388): Gtk-WARNING **: 12:35:31.963: cannot open display: :1
8
27.01.2020, 23:12

Теги

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