Список допустимых исполняемых файлов suid/sgid?

Может кто-нибудь сказать мне, где найти список допустимых программ suid/guid на Ubuntu (14.04)?

Примечание. Я могу использовать find для получения списка программ suid/sgid на моем компьютере, но я хочу знать, действительно ли они являются действительными программами; Есть ли список, с которым я могу сравнить их или какие-либо другие средства, чтобы определить, являются ли они действительными?

2 ответа

Решение

Одна идея - но нужно будет немного поработать над сценариями --- будь моим гостем;-)

  1. Найти файл suid/sgid; давай называть это scommand

  2. Проверьте, из какого пакета был установлен:

    dpkg -S /full/path/to/scommand 
    
  3. Сравните его разрешение с исходным пакетом deb, сначала загрузив пакет:

    apt-get download package
    
  4. Проверьте, должна ли команда иметь suid, установленный в пакете с

    dpkg -c package*deb | grep /full/path/to/scommand
    
  5. очистить, промыть, повторить.

Пример:

[romano:~/tmp] % ls -l /bin/passwd
ls: cannot access /bin/passwd: No such file or directory
[romano:~/tmp] 2 % ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 47032 Feb 17  2014 /usr/bin/passwd
[romano:~/tmp] % dpkg -S /usr/bin/passwd
passwd: /usr/bin/passwd
[romano:~/tmp] % apt-get download passwd
Get:1 http://archive.ubuntu.com/ubuntu/ trusty/main passwd amd64 1:4.1.5.1-1ubuntu9 [755 kB]
Fetched 755 kB in 1s (487 kB/s)
[romano:~/tmp] % dpkg -c passwd*.deb| grep /usr/bin/passwd
-rwsr-xr-x root/root     47032 2014-02-17 03:42 ./usr/bin/passwd

предостережение: может случиться так, что файл не является suid/sgid в пакете.deb и что он изменяется так сценариями установки / постустановки. В этом случае вы должны найти другие способы проверки, возможно, по сравнению с новой установкой.

Кажется, это работает: сначала выполняется поиск apt-cache для каждого пакета, который система может загрузить, затем загружает их все (сжатые в их.deb), а затем перебирает каждый файл с помощью dpkg -c, чтобы получить путь и разрешения для файлы в файлах.deb, вырезая первые три символа и ища бит suid, который должен быть установлен в начале строки, а затем печатает все пути, которые имеют атрибуты suid.

PKG=$(apt-cache search . | cut -f 1 -d ' ');
echo $PKG | xargs apt-get download;
F=(`find *.deb`); for i in ${F[@]};
do dpkg -c $i | cut -c 4- | grep ^s | cut -c 4- | cut -f 2 -d '.'  | tee > suid_root;
done

Примечание: для этого требуется много места на диске, и он не очень оптимизирован для скорости или чего-либо еще.

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