sudoersファイルで既存の実行可能ファイルとその親ディレクトリ権限をどのように見つけることができますか?

sudoersファイルで既存の実行可能ファイルとその親ディレクトリ権限をどのように見つけることができますか?

sudoersファイルにリストされている実行可能ファイルのリストを解析し、実行可能ファイルと親ディレクトリのグローバル書き込み可能権限を確認するコマンドを作成できますか?

実行可能ファイルのリストを取得できます。誰でも実行可能ファイルとその親ディレクトリの権限を見つけるのに役立ちます。

# for i in `cat /etc/passwd | cut -d: -f1`; do for j in `sudo -lU $i | grep '(root)' | awk '{print $3}'`; do if [ -e $j ]; then echo $j; fi; done; done
/usr/bin/tail
/usr/bin/tail
/usr/bin/tail
/usr/bin/php
/usr/local/nagiosxi/scripts/components/getprofile.sh
/usr/local/nagiosxi/scripts/repair_databases.sh
/usr/local/nagiosxi/scripts/manage_services.sh
/etc/init.d/npcd
/etc/init.d/npcd
/etc/init.d/npcd
/etc/init.d/npcd
/etc/init.d/npcd
/usr/bin/php
/usr/local/nagiosxi/scripts/components/getprofile.sh
/usr/local/nagiosxi/scripts/upgrade_to_latest.sh
/usr/local/nagiosxi/scripts/change_timezone.sh
/usr/local/nagiosxi/scripts/manage_services.sh
/usr/local/nagiosxi/scripts/reset_config_perms.sh
/usr/local/nagiosxi/scripts/manage_ssl_config.sh
/usr/local/nagiosxi/scripts/backup_xi.sh

ベストアンサー1

まず、あなたのスクリプトが私のコンピュータで動作しないことを指摘したいと思います。しかし、あなたはあなたのコンピュータで動作すると言ったので、その出力を使ってスクリプトをテストしました。

各ファイルの権限を一覧表示するには、次のように出力をパイプします。

| xargs ls -l

ディレクトリの権限を一覧表示し、このパイプを追加します(前のパイプの後ろではなくループ内)。

| sed 's|\(.*\)/.*|\1|' | xargs ls -ld

怠惰な方法は、スクリプトの結果を一時ファイルに出力してからcatを使用して読み込むことです。 (質問にそのように提供したので、すべて1行に書きました。

`for i in `cat /etc/passwd | cut -d: -f1`; do for j in `sudo -lU $i | grep '(root)' | awk '{print $3}'`; do if [ -e $j ]; then echo $j; fi; done; done` > /tmp/suexecs && echo `cat /tmp/suexecs | xargs ls -l` && echo `cat /tmp/suexecs | sed 's|\(.*\)/.*|\1|' | xargs ls -ld ` && rm /tmp/suexecs -f

シェルスクリプトで:

#!/bin/sh
for i in `cat /etc/passwd | cut -d: -f1`; do
    for j in `sudo -lU $i | grep '(root)' | awk '{print $3}'`; do
         if [ -e $j ]; then echo $j; fi; 
    done 
done > /tmp/suexecs
echo `cat /tmp/suexecs | xargs ls -l`
echo `cat /tmp/suexecs | sed 's|\(.*\)/.*|\1|' | xargs ls -ld`
rm /tmp/suexecs -f

おすすめ記事