Санкт-Петербургский Государственный Институт Точной Механики и Оптики (Технический Университет)
Отчёт
Дисциплина
«Многопользовательские Операционные Системы»
Лабораторная работа №3
Вариант №7
Студенты:
Группа: Преподаватель: |
Семёнов А. В. Канавец С. А.
№ 350 Дергачёв А.М. |
Санкт-Петербург
2002 г.
Задание:
Написать программу, выдающую список файлов, для которых заданный пользователь имеет право записи.
Исходный текст программы:
:
# Coded by Elk & Zulus
#
echo "Input a User"
read user
hdir=`niscat passwd.org_dir | fgrep "$user:" | cut -f6 -d:`
iden=`niscat passwd.org_dir | fgrep "$user:" | cut -f3 -d:`
find $hdir/unix -user $iden -perm -u+w
Используемые команды и операторы:
“#” – символ комментария.
echo – отображает на экране указанную строку текста.
niscat – чтение файла “group.org_dir”
read – читает одну строку из стандартного входного потока и записывает её содержимое в указанные переменные.
man - чтение страниц руководства.
Примеры:
$ man rm
chmod – изменение режима доступа к файлу.
fgrep – поиск фрагмента текста в одном или нескольких файлах и вывод результатов поиска.
cut – позволяет вырезать фрагменты строк из текстовых файлов или из стандартного входного потока. Извлечённый подобным образом текст направляется в стандартный выходной поток.
find – поиск файлов по заданной маске и с заданными параметрами.
Решение задачи другим способом:
:
# Coded by Elk & Zulus
# Lab 3a
# 7.Написать программу, выдающую список файлов, для которых заданный пользователь имеет право записи.
clear
flag="0"
while true
do
if [ $flag == "1" ]
then
echo "
Press any key to continue...
"
read pause
clear
fi
flag="1"
echo
ls -l qqq?
echo
echo "Input a User"
read user
if [ $user = "q!" ]
then
clear
exit
fi
echo
mygroup=`groups`
currentuser=`who | cut -f1 -d" "`
if [ $user = $currentuser ]
then
ls -l | awk '{if(substr($0,3,1)=="w") print $0}'
continue
fi
id=`niscat passwd.org_dir | fgrep "$user:" | cut -f4 -d:`
group=`niscat group.org_dir | fgrep "$id:" | cut -f1 -d:`
group_ls=`ls -l | fgrep -v "total" | awk '{print $4; exit}'`
#print $group
#print $group_ls
if [ $group_ls = $group ]
then
ls -l | awk '{if(substr($0,6,1)=="w") print $0}'
continue
else
ls -l | awk '{if(substr($0,9,1)=="w") print $0}'
continue
fi
done