проверка разрешений скрипта aix

#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