Предположим, я в каталоге /home /userA

Существует переменная окружения $ XMLFILES, которая указывает на /u /xml /xmlfiles. Переменная среды $ XMLFILES находится в среде / профиле пользователя A

Я вхожу как userA, затем 'su' в userB и захожу в /home /userB /testdata.

Я не понял, что я был userB, поэтому я дал команду

rm $XMLFILES/*

И вдруг я вижу это

bash-3.00$ rm $XMLFILES/*
rm: /bin not removed: Permission denied
rm: /boot is a directory
rm: /cdrom is a directory
rm: /dev is a directory
rm: /devices is a directory
rm: /etc is a directory
rm: /export is a directory
rm: /home is a directory
rm: /kernel is a directory
rm: /lib is a directory
rm: /lost+found is a directory
rm: /mnt is a directory
rm: /net is a directory
rm: /noffprotect: override protection 644 (yes/no)? ^C

Я нажал [CTRL+C], как только увидел сообщение о защите от переопределения. Я думаю, что так как $ XMLFILES был нулевым, потому что я вошел как пользователь userB, команда, которая была выполнена, была на самом деле

rm *

Теперь я не понимаю, почему он попытался удалить все из корневой папки? так как я был в /home /userB, должен ли он просто попытаться удалить все в «верхнем уровне» /home /userB? команда rm не была даже рекурсивным удалением.

Учитывая, что пользователь, в который я вошел как не пользователь root, вызвал бы это какой-либо ущерб?

2 ответа2

6

Нет, поскольку $XMLFILES был пуст, он попытался удалить /* . Все, что можно сделать, это удалить файлы из корневого каталога, который обычный пользователь не должен создавать в первую очередь.

2

$ XMLFILES была бы пустой строкой, поэтому то, что вы на самом деле выдавали, было бы

рм ""/*

который был бы оценен вплоть до

рм /*

Вот почему вы должны быть очень осторожны с использованием $ переменных (т.е. сначала проверьте их существование) в аргументах командной строки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .