-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathk01-361-9-2.sh
executable file
·140 lines (134 loc) · 6.37 KB
/
k01-361-9-2.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!/bin/bash
clear
echo ""
echo "Разработчик: Кустов Даниил"
echo "Группа: K01-361"
echo "Описание: Данная программа выводит права пользователя к файлу"
echo ""
echo "Начать выполнение? (y/n): ";
yn='y'
while [ $yn = "y" -o $yn = "Y" ]; do # проверка существования файла
read yn;
if [ $yn = "y" -o $yn = "Y" ]; then
clear
echo "Введите путь к файлу:"
read FILENAME
clear
while ! [ -e $FILENAME ]; do echo "Такого файла не существует. Повторить? (y/n)"
read yn
if [ $yn = "y" -o $yn = "Y" ]; then
clear
echo "Введите путь к файлу:"
read FILENAME
elif [ $yn = "n" -o $yn = "N" ]; then
clear
echo "Программа завершена!"
echo "Разработчик: Кустов Даниил"
echo "Группа: K01-361"
exit 0
else
while ! [ $yn = "n" -o $yn = "N" -o $yn = "y" -o $yn = "Y" ]
do
echo "Ошибка ввода! Введите y/n:"
read yn
if [ $yn = "y" -o $yn = "Y" ]; then
clear
echo "Введите путь к файлу:"
read FILENAME
elif [ $yn = "n" -o $yn = "N" ]; then
clear
echo "Программа завершена!"
echo "Разработчик: Кустов Даниил"
echo "Группа: K01-361"
exit 0
fi
done
fi
done
clear
echo "Введите имя пользователя"
read USER
clear
while ! [ $(getent passwd $USER ) ]; do # проверка существования пользователя
echo "Такого пользователя не существует. Повторить? (y/n)"
read yn
if [ $yn = "y" -o $yn = "Y" ]; then
clear
echo "Введите имя пользователя:"
read USER
elif [ $yn = "n" -o $yn = "N" ]; then
clear
echo "Программа завершена!"
echo "Разработчик: Кустов Даниил"
echo "Группа: K01-361"
exit 0
else
while ! [ $yn = "n" -o $yn = "N" -o $yn = "y" -o $yn = "Y" ]
do
echo "Ошибка ввода! Введите y/n:"
read yn
if [ $yn = "y" -o $yn = "Y" ]; then
clear
echo "Введите имя пользователя:"
read USER
elif [ $yn = "n" -o $yn = "N" ]; then
echo "Программа завершена!"
echo "Разработчик: Кустов Даниил"
echo "Группа: K01-361"
exit 0
fi
done
fi
done
clear
GR=$(groups $USER) # группа нашего пользователя
string1=$GR
lg=${#string1}
let "GROUPLENGTH =$lg-3"
let "GROUPLENGTH = $GROUPLENGTH/2" # длина слова группы пользователя
length1=$GROUPLENGTH
GROUP=${string1:0:length1}
rwx=$(echo $(stat -c %A $FILENAME)) # Права на файл
USERFILE=$(echo $(stat -c %U $FILENAME)) # Пользователь файла
GROUPFILE=$(echo $(stat -c %G $FILENAME)) # Группа файла
if [ $USER == $USERFILE ]; then # условие для одинаковых имен пользователей
m="1"
else if [ $GROUP == $GROUPFILE ]; then # условие для одинаковых групп
m="4"
else m="7" # условие для постороннего пользователя
fi
fi
string2=$rwx
position2=$m
a=${string2:position2:3}
echo "Файл: $FILENAME"
echo "Пользователь: $USER"
if [ $a == "rwx" ]; then echo "Полномочия: ЧИТАТЬ/ПИСАТЬ/ИСПОЛНЯТЬ"
fi
if [ $a == "rw-" ]; then echo "Полномочия: ЧИТАТЬ/ПИСАТЬ"
fi
if [ $a == "-wx" ]; then echo "Полномочия: ПИСАТЬ/ИСПОЛНЯТЬ"
fi
if [ $a == "r-x" ]; then echo "Полномочия: ЧИТАТЬ/ИСПОЛНЯТЬ"
fi
if [ $a == "-w-" ]; then echo "Полномочия: ПИСАТЬ"
fi
if [ $a == "r--" ]; then echo "Полномочия: ЧИТАТЬ"
fi
if [ $a == "--x" ]; then echo "Полномочия: ИСПОЛНЯТЬ"
fi
if [ $a == "---" ]; then echo "Данный пользователь ничего не может делать с файлом"
fi
echo "Повторить? (y/n): ";
yn=y
elif [ $yn = "n" -o $yn = "N" ]; then
echo "Прекращено пользователем."
clear
else echo "Ошибка ввода! Введите y/n:"
yn=y
fi
done
clear
echo "Программа завершена!"
echo "Разработчик: Кустов Даниил"
echo "Группа: K01-361"