Второй год не могу сдать лабораторку по UNIX "написать пр-му выдающую список пользователей, имеющих право записи в данный файл.#!/bin/bash
if str=`ls -l -- "$1"` 2>/dev/null
then
{
u=`echo $str | cut -c 3`
g=`echo $str | cut -c 6`
o=`echo $str | cut -c 9`
username=`echo $str | nawk '{print $3}'`
groupname=`echo $str | nawk '{print $4}'`
gid=`cat /etc/group | nawk -F: '$1=="'$groupname'" {print $3}'`
uid=`id -u "$username"`
#Функция вывода имен пользователей группы, кроме владельца файла
print_users_of_group()
{
{ #Вывод имен пользователей, для которых данная группа является вторичной
#niscat group.org_dir
cat /etc/group
} | nawk -F: '$1=="'$groupname'" {print $NF}' | nawk -F, '{for(i=1; i<=NF; i++) { if ($i!="'$username'") {print $i}}}'
{ #Вывод имен пользователей, для которых данная группа является первичной
#niscat passwd.org_dir
cat /etc/passwd
} | nawk -F: '$4=="'$gid'" && $1!="'$username'" {print $1}'
}
{
if [ "$u" = "w" ]
then
echo $username #Вывод имени владельца-пользователя
fi
if [ "$g" = "w" ]
then
print_users_of_group
fi
if [ "$o" = "w" ]
then
{
print_users_of_group
echo $username
{
#niscat passwd.org_dir
cat /etc/passwd
} | nawk -F: '{print $1}';
} | sort | uniq -u #Удаляет все повторяющиеся сторки (для удаления имени владельца и имен пользователей группы-владельца из всего списка)
fi
} | sort | uniq
} else echo "error"
fi