Консультация № 187423
02.06.2013, 21:47
96.88 руб.
0 5 1
Здравствуйте! У меня возникли сложности с таким вопросом:
Написать shell-процедуру, которая выполняет действия: выводит на экран список всех пользователей системы, включенных в заданную первым параметром группу пользователей; для каждого из заданных третьим и следующими параметрами имен пользователей выводит на экран права доступа к заданному вторым параметром файлу.

Обсуждение

давно
Мастер-Эксперт
4666
2757
03.06.2013, 14:29
общий
это ответ
Здравствуйте, Посетитель - 396844!
Смотрите на форуме: года идут, а задачи и решения остаются.
Думаю, что это Ваша задача.
Цитата: Linux Forum ? Программирование ? Shell-процедуры
написать shell-процедуру,которая выводит на экран всех пользователей системы, включенных в заданную первым параметром группу пользователей, для каждого из заданных третьим и последующих параметрами имен пользователей выводит на экран права доступа к заданному вторым параметром файлу.

Код:

#!/bin/sh

function ff()
{
echo "Users in group '$1':"
sed -rn "/^$1:/s/([^:]*:){3}//;T;s/,/\n/gp" /etc/group | tee users.tmp
FILE_NAME="$2"
echo "FILE_NAME: $FILE_NAME"
PERM=`stat --format="%a" "$FILE_NAME" | sed -r 's/.*(...)$/\1/'`
OWNER=`stat --format="%U" "$FILE_NAME"`
GROUP=`stat --format="%G" "$FILE_NAME"`
echo "PERM: $PERM, OWNER: $OWNER, GROUP: $GROUP"
while [ -n "$3" ]
do
USER="$3"
echo "USER '$USER'"
if [ "$USER" = "$OWNER" ]; then
echo "user - owner. perm = ${PERM:0:1}"
else
GR=`sed -rn "s/^$GROUP:.*$USER[^:]*$/&/p" /etc/group`
if [ -n "$GR" ]; then
echo "user - in group. perm = ${PERM:1:1}"
else
echo "other user. perm = ${PERM:2:1}"
fi
fi
shift
done
}

ff "adm" "/dev/audio" "root" "ksu" "adm"


[size=1]
очень часто мелькает имя ksu это рандомное или что то значит?)))
это имя юзера от которого я сейчас работаю.
PS: а ещё это имя здешнего компьютера. короче я сейчас ksu@ksu. просто это не мой компьютер
[/size]
Об авторе:
Не все сисадмины одинаково полезны ...
Неизвестный
04.06.2013, 22:40
общий
а не могли бы вы пояснить её пожалуйста
Неизвестный
05.06.2013, 00:37
общий
и не могли бы вы добавить права доступа к файлу который задается вторым параметром
давно
Старший Модератор
31795
6196
05.06.2013, 11:59
общий
Посетитель - 396844 (Посетитель) отправил сообщение модераторам : не могли бы вы прокомментировать задачу


Больше так не делайте.
Спасибо.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
07.06.2013, 22:07
общий
> а не могли бы вы пояснить её пожалуйста
Код:


#!/bin/sh

function ff()
{
# Показываем всех пользователей в группе указанной в $1
echo "Users in group '$1':"
sed -n "s/^$1:.*://;T;s/,/\n/g;p" /etc/group

# Показываем имя файла заданного в $2
FILE_NAME="$2"
echo "FILE_NAME: $FILE_NAME"

# Выясняем и показываем права доступа, владельца и группу файла
PERM=$(stat --format="%a" "$FILE_NAME" | sed -r 's/.*(...)$/\1/')
OWNER=$(stat --format="%U" "$FILE_NAME")
GROUP=$(stat --format="%G" "$FILE_NAME")
echo "PERM: $PERM, OWNER: $OWNER, GROUP: $GROUP"

# В цикле перебираем всех пользователей заданных в $3, $4, ...
while [ -n "$3" ]
do
# Показываем очередное имя пользователя
USER="$3"
echo "USER '$USER'"

# Если пользователь владелец файла, показываем сообщение об этом
if [ "$USER" = "$OWNER" ]; then
echo "user - owner. perm = ${PERM:0:1}"
else
# в противном случае показываем что пользователь в группе владельцев
# или относится к "остальным", с показом прав доступа
GR=$(sed -n "/^$GROUP:.*$USER[^:]*$/p" /etc/group)
if [ -n "$GR" ]; then
echo "user - in group. perm = ${PERM:1:1}"
else
# или
echo "other user. perm = ${PERM:2:1}"
fi
fi
shift
done
}

ff "adm" "/dev/audio" "root" "ksu" "adm"


> и не могли бы вы добавить права доступа к файлу который задается вторым параметром
Они выводятся в сообщениях "perm =". "perm" от слова "permission", тоесть "права доступа"
Форма ответа