проверьте владение на всех файлах и каталогах, связанных с пакетами

В Redhat мы можем проверить владение на всех файлах и каталогах, связанных с пакетами при помощи следующей команды:

# rpm -Va | grep '^......U'

Есть ли какая-либо эквивалентная команда для Ubuntu? Я знаю это debsums эквивалентно rpm -Va, но я не понимаю значение grep '^......U'.

2
задан 18 November 2014 в 10:56

2 ответа

Если deb пакет все еще под /var/cache/apt/archives/, то можно использовать dpkg -c <packagename> для списка содержания пакета. Вывод в качестве примера для склонного-file_2.5.1_all.deb пакета (я нахожусь в системе Debian прямо сейчас):

drwxr-xr-x root/root         0 2012-06-03 10:32 ./
drwxr-xr-x root/root         0 2012-06-03 10:32 ./etc/
drwxr-xr-x root/root         0 2012-06-03 10:32 ./etc/apt/
-rw-r--r-- root/root      2144 2012-06-03 10:32 ./etc/apt/apt-file.conf
drwxr-xr-x root/root         0 2012-06-03 10:32 ./etc/bash_completion.d/
-rw-r--r-- root/root       748 2012-06-03 10:32 ./etc/bash_completion.d/apt-file
drwxr-xr-x root/root         0 2012-06-03 10:32 ./usr/
drwxr-xr-x root/root         0 2012-06-03 10:32 ./usr/bin/
-rwxr-xr-x root/root     10584 2012-06-03 10:32 ./usr/bin/diffindex-download
-rwxr-xr-x root/root      8762 2012-06-03 10:32 ./usr/bin/diffindex-rred
-rwxr-xr-x root/root     23919 2012-06-03 10:32 ./usr/bin/apt-file
-rwxr-xr-x root/root      6437 2012-06-03 10:32 ./usr/bin/rapt-file
drwxr-xr-x root/root         0 2012-06-03 10:32 ./usr/share/
drwxr-xr-x root/root         0 2012-06-03 10:32 ./usr/share/apt-file/
-rw-r--r-- root/root       558 2012-06-03 10:32 ./usr/share/apt-file/apt-file-update.update-notifier
-rwxr-xr-x root/root        98 2012-06-03 10:32 ./usr/share/apt-file/do-apt-file-update
-rwxr-xr-x root/root       370 2012-06-03 10:32 ./usr/share/apt-file/is-cache-empty
drwxr-xr-x root/root         0 2012-06-03 10:32 ./usr/share/man/
drwxr-xr-x root/root         0 2012-06-03 10:32 ./usr/share/man/man1/
-rw-r--r-- root/root      2628 2012-06-03 10:32 ./usr/share/man/man1/apt-file.1.gz
-rw-r--r-- root/root       905 2012-06-03 10:32 ./usr/share/man/man1/diffindex-download.1.gz
-rw-r--r-- root/root       646 2012-06-03 10:32 ./usr/share/man/man1/diffindex-rred.1.gz
-rw-r--r-- root/root      1023 2012-06-03 10:32 ./usr/share/man/man1/rapt-file.1.gz
drwxr-xr-x root/root         0 2012-06-03 10:32 ./usr/share/doc/
drwxr-xr-x root/root         0 2012-06-03 10:32 ./usr/share/doc/apt-file/
-rw-r--r-- root/root       401 2012-06-02 18:50 ./usr/share/doc/apt-file/README
-rw-r--r-- root/root       464 2012-06-02 18:50 ./usr/share/doc/apt-file/copyright
-rw-r--r-- root/root      8634 2012-06-03 10:28 ./usr/share/doc/apt-file/changelog.gz
drwxr-xr-x root/root         0 2012-06-03 10:32 ./var/
drwxr-xr-x root/root         0 2012-06-03 10:32 ./var/cache/
drwxr-xr-x root/root         0 2012-06-03 10:32 ./var/cache/apt/
drwxr-xr-x root/root         0 2012-06-03 10:32 ./var/cache/apt/apt-file/

можно теперь проверить полномочия и установить их соответственно.

Этот сайт имеет сценарий (распечатанный ниже), что Вы могли использовать для сбрасывания полномочий согласно подарку пакетов в системе.
Для ограничения объема сценария к синглу .deb пакет скопируйте рассматриваемый пакет от /var/cache/apt/archives/ до другой папки и поместите ту папку в ARCHIVE_DIR переменная сценария.

#!/bin/bash
# Restores file permissions for all files on a debian system for which .deb
# packages exist.
#
# Author: Larry Kagan <me at larrykagan dot com>
# Since 2007-02-20
ARCHIVE_DIR=/var/cache/apt/archives/
PACKAGES=`ls $ARCHIVE_DIR`
cd /
function changePerms()
{
CHOWN="/bin/chown"
CHMOD="/bin/chmod"
PERMS=`echo $1 | sed -e 's/--x/1/g' -e 's/-w-/2/g' -e 's/-wx/3/g' -e 's/r--/4/g' -e 's/r-x/5/g' -e 's/rw-/6/g' -e 's/rwx/7/g' -e 's/---/0/g'`
PERMS=`echo ${PERMS:1}`
OWN=`echo $2 | /usr/bin/tr '/' '.'`
PATHNAME=$3
PATHNAME=`echo ${PATHNAME:1}`
echo -e "CHOWN: $CHOWN $OWN $PATHNAME"
result=`$CHOWN $OWN $PATHNAME`
if [ $? -ne 0 ]; then
echo -e $result
fi
echo -e "CHMOD: $CHMOD $PERMS $PATHNAME"
result=`$CHMOD $PERMS $PATHNAME`
if [ $? -ne 0 ]; then
echo -e $result
fi
}
for PACKAGE in $PACKAGES;
do
if [ -d $PACKAGE ]; then
continue;
fi
echo -e "Getting information for $PACKAGE\n"
FILES=`/usr/bin/dpkg -c "${ARCHIVE_DIR}${PACKAGE}"`
for FILE in "$FILES";
do
echo "$FILE" | awk '{print $1"\t"$2"\t"$6}' | while read line;
do
changePerms $line
done
done
done
1
ответ дан 6 October 2019 в 20:09

От man rpm:

Формат вывода является строкой 8 символов, возможный "c", обозначающий конфигурационный файл и затем имя файла. Каждый из этих 8 символов обозначает результат сравнения атрибута (атрибутов) файла к значению тех атрибут (атрибуты), зарегистрированный в базе данных. Сингл "." (период) означает, что тест передал, в то время как сингл"?" указывает, что тест не мог быть выполнен (например, полномочия файла предотвращают чтение). Иначе (мнемонически ободренный) символ обозначает отказ соответствия --verify тест:

S размер файла отличается
...
U Пользовательское владение отличается

U в шестом столбце вывода указывает, что пользовательское владение изменилось (следовательно пять . в Вашем grep).

Я ничто не мог найти подобным в debsums или различное dpkg утилиты.

Интересно, возможно ли это даже с упаковкой Debian с тех пор:

  1. Неважно, кто владел файлами при создании пакета для установки, они принадлежат root:root. Только режимы остаются неповрежденными.
  2. Владение установлено с помощью a chmod в postinst сценарий (например, nslcd).

Единственный способ сделать это использовало бы своего рода IDS, такой как ПОМОЩНИК или OSSEC.

0
ответ дан 6 October 2019 в 20:09

Другие вопросы по тегам:

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