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
答え2
アプリケーションがシステムにインストールされていないが、ユーザーにまだrootアクセス権が割り当てられていることを示します。
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
システムにインストールされているアプリケーションを表示し、ユーザーにrootアクセス権が割り当てられている
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
システム上のアプリケーションの権限のリスト
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`
rm /tmp/suexecs -f
システムに存在するアプリケーションディレクトリを一覧表示する権限
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 |awk 'BEGIN{OFS=FS="/"};{$NF="";print $0}'| xargs ls -ld`
rm /tmp/suexecs -f