'Permissão negada' ao tentar executar o script sh como parte do bit setuid Lição

1

Eu estou tentando seguir com uma lição sobre bits setuid e fiz o seguinte em uma VM CentOS 7 (via Terminal.app no meu Mac):

  1. crie o usuário adam & program.sh file em sua pasta pessoal
  2. program.sh é um script básico que contém:

    echo "This is a test" >> /etc/stickytestfile.txt
    
  3. defina chmod 777 , bem como chmod u+s a program.sh e /usr/bin/sh

mas ainda recebo "Permissão negada". Como devo proceder?

-bash-4.2$ whoami
adam
-bash-4.2$ ls -al
total 32
drwsrwxrwx. 2 adam adam 4096 Oct  7 17:44 .
drwxr-xr-x. 6 root root   58 Oct  7 15:30 ..
-rw-------. 1 adam adam  853 Oct  7 19:26 .bash_history
-rw-r--r--. 1 adam adam   18 Nov 20  2015 .bash_logout
-rw-r--r--. 1 adam adam  193 Nov 20  2015 .bash_profile
-rw-r--r--. 1 adam adam  231 Nov 20  2015 .bashrc
-rw-rw-r--. 1 adam adam   29 Oct  7 16:07 adampersonalfile
-rw-rw-r--. 1 adam adam   27 Oct  7 16:07 adamsharedfile
-rwsrwxrwx. 1 root root   50 Oct  7 17:44 program.sh
-bash-4.2$ whereis sh
sh: /usr/bin/sh /usr/share/man/man1/sh.1.gz
-bash-4.2$ ls -al /usr/bin/sh
lrwxrwxrwx. 1 root root 4 Oct  2 16:05 /usr/bin/sh -> bash
-bash-4.2$ su
Password:
bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
[root@localhost adam]# chmod u+s /usr/bin/sh
[root@localhost adam]# ls -al /usr/bin/sh
lrwxrwxrwx. 1 root root 4 Oct  2 16:05 /usr/bin/sh -> bash
[root@localhost adam]# exit
exit
-bash-4.2$ sh program.sh
program.sh: line 1: /etc/stickytest.txt: Permission denied
    
por calebsuresh 08.10.2016 / 08:12

1 resposta

1

Veja a seção INVOCATION da página man bash, bash (1) :

    If the shell is started with the effective user (group) id not equal to the real user (group) id, and the -p option is not supplied, …, and the effective user id is set to the real user id.  If the -p option is supplied at invocation, the startup behavior is the same, but the effective user id is not reset.
(Emphasis added.)

Se você executar o bash sem a opção -p , se estiver executando setuid (id de usuário efetivo não igual ao id de usuário real), ele imediatamente “libera privilégios”; isto é, reverte para sua identidade real.

A propósito, você está usando a terminologia errada. O pouco que você está falando é o bit setuid, não o bit pegajoso.

P.S. Espero que as instruções que você está seguindo lhe digam para ter certeza de definir o modo inicial do bash (bits de permissão) e restaurá-lo quando você terminar.

    
por 08.10.2016 / 10:04

Tags