#include <fstream>
#include <cstdlib>
void error (const char* p, const char* p2="")
{
// std::cin <<p<<' '<<p2<<'\n';
std::exit(1);
}
int main(int argc, char* argv[])
{
if (argc!=3) error ("vrong args");
std::ifstream from (argv[1]);
if (!from) error ("input file not open ", argv[1]);
std::ofstream to (argv[2]);
if (!to) error ("output file not open ", argv[2]);
char ch;
while (from.get (ch)) to.put(ch);
if (!from.eof()||!to) error ("strange");
}
В результате в текущем каталоге создастся копия запрашиваемого файла другого пользователя.
Для проверки этой программы необходимо проделать следующие действия. Установить флаг SUID на исполняемый файл этой программы. Создать нового пользователя, не обладающего правами администратора и запретить ему права на чтение какого-либо файла. Скопировать ему нашу программу с правом её запуска. В результате этот пользователь не сможет прочитать содержимое файла с помощью проводника. Но запустив программу-шлюз и указав ей этот файл пользователь получит в своём каталоге копию этого файла с возможностью прочитать в нём информацию.
8.
Утилита df позволяет определить свободное пространство на диске. Выполним команду df -hP. Флаг -h позволяет увидеть размер памяти в привычном нам формате, а -P добавляет заголовки к каждому столбцу. Флаг -n позволяет отображать только типы и точки монтирования файловых систем на жестком диске.
# df
/dev/hd0t79 5237190 5159988 77202 99% /
/dev/cd0 0 0 0 100% (/fs/cd0/)
/dev/hd0 107699760 107699760 0 100% /dev/hd0t7.1
/dev/hd0 103073040 103073040 0 100% /dev/hd0t7
/dev/hd0 18426492 18426492 0 100% /dev/hd0t39
/dev/hd0 234441648 234441648 0 100%
--------------------
# df -hP
Filesystem Size Used Available Capacity Mounted on
/dev/hd0t79 2.4G 2.4G 38M 99% /
/dev/cd0 0 0 0 100% (/fs/cd0/)
/dev/hd0 51G 51G 0 100% /dev/hd0t7.1
/dev/hd0 49G 49G 0 100% /dev/hd0t7
/dev/hd0 8.7G 8.7G 0 100% /dev/hd0t39
/dev/hd0 112G 112G 0 100%
---------------------
# df -hPn
Filesystem Mounted on Type
/dev/hd0t79 / qnx4
/dev/cd0 (/fs/cd0/) blk-cd
/dev/hd0 /dev/hd0t7.1 blk-partition
/dev/hd0 /dev/hd0t7 blk-partition
/dev/hd0 /dev/hd0t39 blk-partition
/dev/hd0 blk-hd
9.
Для формирования ссылок на файл используются утилиты ln, link, cp. Команды ln и link создают жесткие ссылки на указанный файл. Символические ссылки позволяет создать команда ln с флагом –s. Пример использования приведён ниже.
# ln -s res.txt Newsl_res
# ls -l
total 80
drwxr-xr-x 4 root root 4096 Jan 10 20:09 .
drwxrwxrwx 8 root root 4096 Jan 10 18:17 ..
drwsr-xr-x 2 23 root 4096 Nov 05 17:39 1
drwxr-xr-x 3 root root 4096 Nov 05 17:39 2
-rwxrwxr-x 1 root root 1135 Nov 03 23:07 2_4.sh
-rw-rw-r-- 1 root root 459 Nov 04 18:58 2_7.c
-rwsr-xr-x 1 root root 92 Nov 04 18:12 2_7.sh
-rwSr--r-- 1 root root 92 Nov 04 18:12 2_7_1.sh
-rw-rw-r-- 1 root root 221 Nov 05 17:58 2_9.sh
lrwxrwxrwx 1 root root 9 Nov 05 17:24 Lfile2 -> file2.txt
lrwxrwxrwx 1 root root 7 Jan 10 20:09 Newsl_res -> res.txt
-rwsrwxr-x 1 root root 7483 Nov 04 18:47 a.out
-rwxrwxr-x 1 root root 2532 Nov 03 23:07 difference.txt
-rwxrwxr-x 1 root root 3 Nov 04 01:13 file.txt
-rw-rw-r-- 1 root root 5 Nov 05 17:23 file2.txt
-rwxrwxr-x 2 root root 2 Nov 04 17:55 link
lrwxrwxrwx 1 root root 11 Nov 04 17:52 link_my_file -> my_file.txt
-rw-rw-r-- 3 root root 646 Nov 05 17:58 link_to_res
-rwxrwxr-x 1 root root 117 Nov 01 23:52 links.sh
-rw-rw-r-- 3 root root 646 Nov 05 17:58 ln_to_res
-rwxrwxr-x 1 root root 2272 Nov 04 22:57 log2.txt
-rw-rw-r-- 3 root root 646 Nov 05 17:58 res.txt
lrwxrwxrwx 1 root root 22 Jan 10 20:08 sysl_res -> /home/Xromov/2/res.txt
-rwxrwxr-x 1 root root 32 Dec 14 00:41 types.sh
-rwxrwxr-x 1 root root 19 Dec 14 00:30 types.txt
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.