#ksh #aix
#ksh #aix
Вопрос:
Здравствуйте, я пытаюсь написать скрипт, чтобы сделать это «Если файл существует, он должен принадлежать системному пользователю и группе. Разрешения для других должны быть r-x или более ограничительными.»
Системы Aix 7.2
#MODULE BODY
file_path="/bin/ssh-add"
if [ -e $file_path ];
then
user=`istat $file_path | grep Owner: | awk '{print $2}'`
uid=`id -u $user`
if [ $uid -lt 500 ];
then
permissions=`istat $file_path | grep Owner: | awk '{print $2}' `
if [ $permissions -le 755 ];
then
compliant="Yes"
actual_value='User = '$user', Permissions = '$permissions
else
compliant="No"
actual_value="Bad permissions"
fi;
else
compliant="No"
actual_value="Not system user"
fi;
else
compliant="Yes"
actual_value="NA"
fi;
# SCRIPT RESULT
echo :::$module_id:::$compliant:::$actual_value:::
echo " === End of $module_id module === "
Комментарии:
1. Хороший скрипт, в чем здесь вопрос? Вы не проверяли идентификатор группы. Что, если пользователь не является системным, но принадлежит к системной группе? И разрешение 722 < 733 < 755 и разрешает доступ на запись.
2.
istat
нормально, но это тот момент, когда я бы подумал о переходе на perl; это один пример для вдохновения
Ответ №1:
Я предлагаю использовать find
команду с -perm
опциями. Смотрите документацию здесь.
С помощью следующей команды вы можете убедиться, что у файла нет разрешения на запись другим пользователям.
find $file_path -perm o-w
С помощью следующей команды вы можете убедиться, что у файла нет разрешения на запись в group.
find $file_path -perm g-w
С помощью следующей команды вы можете убедиться, что у файла нет прав на запись ни для group, ни для других.
find $file_path -perm go-w