В «удалятор» на Go сделал такую политику:
Указывается название цели. Потом цель ищется в каком-то месте, в каталогах и подкаталогах его. Если вдруг она находится - спрашивает оно у юзера о том, нужна ли юзеру цель; если нет - удаляет через exec.Command("rm", "%v", current_target)
. Ошибку, при наличии, выводит в
if orth_err := exec.Run(); orth_err != nil{
fmt.Println(orth_err)
return
}
В действительности, когда файл находится, rm(а точнее ранний вариант использования rm -f) его быстро сносит, без каких-либо проблем. Тогда я решил прикольнуться и, от рута, забрать себе права на файл. По идее, юзер обыкновенный, не принадлежащий группе рута, не должен мочь удалить такой файл из-за неналичия прав, ОДНАКО, ему удаётся!
Убрал -f, попробовал удалить голым rm - получается. Тогда я снова присвоил права на файл руту, но уже чтобы Owner = root, Group = root. rm справляется, ни смотря ни на что. Однако, уже в таком случае, запущенный вручную rm, говорит о защите от записи(но удалить всё равно может, если написать y
), а в удаляторе он выдаёт Код ошибки 1 и, без вопросов, удаляет файл.
Суть оригинального эксперимента быда в том, чтобы узнать, передаст ли запущенный от рута удалятор права суперпользователя на команду rm.