このbashスクリプトでは、ルートIDが1つしかないかどうかを確認するために修正しようとしています。脆弱で現在はこのスクリプトは重複したuidがあるかどうかをチェックし、同じuidを共有するユーザーを表示します。前もって感謝します! :)Bash:ルートIDが1つしかなく、すべてのユーザーUIDが一意であるかどうかを確認する方法は?
バッシュスクリプト:
#!/bin/bash
/bin/cat /etc/passwd| /bin/cut -f3 -d":" | /bin/sort -n | /usr/bin/uniq-c | while
read x ; do
[ -z "${x}" ] && break
set -$x
if [ $1 -gt1 ]; then
users=`/bin/gawk -F: '($3 == n) { print $1 }' n=$2 /etc/passwd| /usr/bin/xargs`
echo "Duplicate UID ($2): ${users}"
fi
done
予想される出力:
Audit criteria: There is only one root id
Vulnerability: Yes
Details: See below
root:!:0:0::/:/usr/bin/bash
jdoe:*:0:1:John Doe:/home/jdoe:/usr/bin/bash
私はUNIQの-c' 'で' UNIQ-C 'を交換することをお勧めして見てください:http://www.shellcheck.net/ – Cyrus
があります'cut'、' grep'、 'awk'などの基本的なコマンドにフルパスを使用している理由は? – codeforester
@codeforesterこれは私に与えられた例であり、私はbashスクリプトの初心者として、あなたがそれを指摘するまでそれを実現しなかったのです。 –