Санкт-Петербургский Государственный Институт Точной Механики и Оптики (Технический Университет)

Отчёт

Дисциплина

«Многопользовательские Операционные Системы»

Лабораторная работа №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