# "xxx.sh" brak dostepu

## qwaszs

Proszę kolegów i koleżanki coś spie...łem. Mianowicie, mam program księgujący, który odpala się za pomocą skryptu run.sh. Próba odpalenia każdego skryptu *.sh kończy się komunikatem "brak dostępu". Nadmienię, że to mi działało, potem coś przestawiłem (ale nie wiem co ) i przestało działać. Myślałem, że to wina xfce, ale na fluxboksie mam to samo.

----------

## Jacekalex

Spróbuj:

```
chmod +x run.sh

./run.sh
```

Ewentualnie zobacz, czy nie majstrowałeś z flagą noexec w fstab, przy opcjach partycji, na której są skrypty.

A jak nie pójdzie (skrypt, nie program księgowy), to wrzuć na na paste lub wkleja wynik 

```
strace ./run.sh
```

 i daj tutaj linka.

Program strace trzeba zainstalować, jeśli jeszcze go nie masz.

I napisz, na jakim Linuxie to nie działa.

Bo na forum Gentoo ktoś, kto nie zna elementarnych podstaw Linuxa (używanie skryptów powłoki), zdarza się równie często, jak Twardowski na księżycu.  :Very Happy: 

To by było na tyle

 :Cool: 

----------

## qwaszs

```

$ strace ./run.sh

execve("./run.sh", ["./run.sh"], [/* 53 vars */]) = -1 EACCES (Permission denied)

dup(2)                                  = 3

fcntl64(3, F_GETFL)                     = 0x2 (flags O_RDWR)

fstat64(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0

mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7801000

_llseek(3, 0, 0xbfa71b44, SEEK_CUR)     = -1 ESPIPE (Illegal seek)

write(3, "strace: exec: Permission denied\n", 32strace: exec: Permission denied

) = 32

close(3)                                = 0

munmap(0xb7801000, 4096)                = 0

exit_group(1)                           = ?

```

wynik strace nie wiele mi mówi

wpis do fstab:

```
/dev/sda6               /home           ext3            defaults,noatime,users  0 0
```

nie uruchomiłem go nawet jako root

dodatkowo uzupełmianie tabulatorem ignoruje skrypt (tzn piszę ścieżkę dostęu np: /home/user/program/ i nazwa skryptu już się nie dopełnia)

Ostatnie reinstalowałem system (gentoo) 

Wygląda to jakbym odgórnie zablokował wykonywanie skryptów. Proszę o dalsze sugestie, bo pewnie jest szkolny błąd.

----------

## qwaszs

PS. chyba trafiłeś na Twardowskiego  :D

----------

## Jacekalex

 *Quote:*   

> 
> 
> ```
> execve("./run.sh", ["./run.sh"], [/* 53 vars */]) = -1 EACCES (Permission denied) 
> ```
> ...

 

Pokaż wyniki 

```
ls -l ./run.sh
```

I przede wszystkim:

```
 ls -l `which sh` `which bash`
```

```
ls -l `echo $SHELL`
```

Powinieniś zobaczyć wyniki podobne do tych, (to u mnie i działa):

```
 ls -l `which sh` `which bash`

-rwxr-xr-x. 1 root root 1062299 10-19 15:31 /bin/bash

lrwxrwxrwx. 1 root root       4 10-19 15:31 /bin/sh -> bash

```

```
 ls -l `echo $SHELL`

-rwxr-xr-x. 1 root root 1062299 10-19 15:31 /bin/bash
```

Spróbuj też uruchomić tak:

```
/bin/bash run.sh
```

Nie kombinowałeś na tym systemie czasem z Selinuxem albo Grsecurity?

To by było na tyle

 :Cool: 

----------

## qwaszs

```

wielki ~ ls -l 'which sh' 'which bash'

ls: nie ma dostępu do which sh: Nie ma takiego pliku ani katalogu

ls: nie ma dostępu do which bash: Nie ma takiego pliku ani katalogu

wielki ~ # ls -l 'which.sh' 'which.bash'

ls: nie ma dostępu do which.sh: Nie ma takiego pliku ani katalogu

ls: nie ma dostępu do which.bash: Nie ma takiego pliku ani katalogu

wielki ~ # ls -l 'echo $SHELL'

ls: nie ma dostępu do echo $SHELL: Nie ma takiego pliku ani katalogu

```

```

ls -l ./run.sh 

-rwxrwxr-x 1 zbyszek zbyszek 116 10-11 09:43 ./run.sh

```

nie kombinowałem

----------

## joi_

nie przepisuj ręcznie tego co napisał Jacekalex, tylko wklej - użyłeś ' zamiast `...

co masz w pierwszej linijce skryptu?

pewnie pisałeś skrypt pod Windowsem, co?  :Very Happy: 

----------

## qwaszs

```

wielki ~ # ls -l `which sh` `which bash`

-rwxr-xr-x 1 root root 768952 01-12 21:50 /bin/bash

lrwxrwxrwx 1 root root      4 01-12 21:50 /bin/sh -> bash
```

```

wielki ~ # ls -l `echo $SHELL`

-rwxr-xr-x 1 root root 768952 01-12 21:50 /bin/bash
```

sorki

```

#!/bin/sh 

srcdir=`dirname $0` 

cd $srcdir 

./ld-linux.so.2 --library-path './lib/' ./ledger $@ &> ~/ledger.log
```

cały skrypt 

```

#!/bin/sh 

 export LD_LIBRARY_PATH=`pwd` 

 exec ./bricscad "$@" 

```

ten też nie działa

----------

## Jacekalex

```
./run.sh

./run.sh: line 3: /home/user/Desktop/bricscad: Nie ma takiego pliku ani katalogu

./run.sh: line 3: exec: /home/user/Desktop/bricscad: nie można uruchomić: Nie ma takiego pliku ani katalogu
```

Jak widać, próbuje coś robić - skrypt nr 2.

Natomiast Ledger (ten ze skryptu nr 1), - to o ile pamietam jest program, który działa jako cgi  przez przegladarkę (o ile to ten Ledger).

Instaluje się go na Apachu albo innym serwerze www.

Skrypt numer 1 też działa, w logu pozostawił:

```
cat ~/ledger.log

./run.sh: line 4: ./ld-linux.so.2: Nie ma takiego pliku ani katalogu
```

Wniosek:

Skrypt run.sh, jakby nie wygladał, jak tylko ma atrybut wykonalności, działać musi, błędów bym radził szukać gdzie indziej.

Jeśli w terminalu w środowisku graficznym nie chce, to zobacz, czy na konsoli tekstowej są takie same błędy, czy inne, czy w ogóle nie ma żadnej reakcji.

To by było na tyle

 :Cool: 

----------

## qwaszs

Zrobiłem mały eksperyment. Rozpakowałem bricscad na koncie innego użytkownika, kliknołem na briscad.sh i też nic. Gdzie xfce4 przechowuje informację jakim programem otwierać poszczególne pliki? bo skasowałem wszystkie ustawienia na moim koncie, a mimo wszystko xfce pamiętał co czym otwierać, może to tam ?

----------

## SlashBeast

Nie masz tam czasem skonfigurowanego grsecurity albo selinuksa? Mi to wyglada na Trusted Path Exec z grseca.

----------

## qwaszs

jak to sprawdzić?

Żadnego pakietu zawierającego nazwę selinux nie mam zainstalowanego

----------

## Jacekalex

Pokaż Pan dla pewności, panie Twardowski, wynik małego testu:

z konta root:

```
grep -i security /boot/config-$(uname -r) | grep -v '#'
```

To z ramki powyżej trzeba skopiować do terminala myszką.   :Smile: 

Żeby nie było takiej wtopy, jak tutaj.    :Very Happy: 

Pozdro

 :Cool: 

----------

## qwaszs

```
grep -i security /boot/config-$(uname -r) | grep -v '#'

grep: /boot/config-3.0.6-gentoo: Nie ma takiego pliku ani katalogu
```

co to powinno pokazać?

w katalogu boot nie mam takiego pliku ani katalogu, używam lilo

----------

## Jacekalex

A gdzie w ogóle masz ten konfig kernela?

Sprawdź w konfigu kernela tak:

```
egrep -i 'grkern|security|pax' /gdzie/jest/konfig/kernela/config-$(uname -r)
```

Gdzie ścieżkę /gdzie jest/konfig/kernela musisz wypełnić osobiście.   :Smile: Last edited by Jacekalex on Mon Jan 16, 2012 6:15 pm; edited 1 time in total

----------

## qwaszs

Czy o to chodziło?

```
egrep -i 'grkern|security|pax' /usr/src/linux/.config

CONFIG_EXT2_FS_SECURITY=y

CONFIG_EXT3_FS_SECURITY=y

# CONFIG_EXT4_FS_SECURITY is not set

# CONFIG_JFS_SECURITY is not set

# Security options

# CONFIG_SECURITY_DMESG_RESTRICT is not set

CONFIG_SECURITY=y

# CONFIG_SECURITYFS is not set

CONFIG_SECURITY_NETWORK=y

# CONFIG_SECURITY_NETWORK_XFRM is not set

# CONFIG_SECURITY_PATH is not set

CONFIG_SECURITY_SELINUX=y

CONFIG_SECURITY_SELINUX_BOOTPARAM=y

CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1

CONFIG_SECURITY_SELINUX_DISABLE=y

CONFIG_SECURITY_SELINUX_DEVELOP=y

CONFIG_SECURITY_SELINUX_AVC_STATS=y

CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1

# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set

# CONFIG_SECURITY_SMACK is not set

# CONFIG_SECURITY_TOMOYO is not set

# CONFIG_SECURITY_APPARMOR is not set

CONFIG_DEFAULT_SECURITY_SELINUX=y

# CONFIG_DEFAULT_SECURITY_DAC is not set

CONFIG_DEFAULT_SECURITY="selinux"
```

----------

## Jacekalex

Jeśli to konfig używanego aktualnie kernela, to tak.

Masz włączonego SELINUXA - on też może blokować wykonanie skryptu.

Tu masz instrukcję do Selinuxa:

http://www.gentoo.org/proj/pl/hardened/selinux/selinux-handbook.xml

Chociaż:

```
CONFIG_SECURITY_SELINUX_DISABLE=y 
```

To powinno wyłaczyć Selinuuxa.

Generalnie w dmesg i /var/log/messages powinno pisać, dlaczego skrypty się nie wykonują.

To by było na tyle

 :Cool: 

----------

## qwaszs

chyba

"CONFIG_SECURITY_SELINUX_DISABLE=n"

Tak w ogóle to czy potrzebuję selinuxa, czy mogę to w wyłączyć? Poczytam

----------

## qwaszs

przekompilowanie jądra bez selinuxa też nic nie dało

dmesg i messages też nic nie mówią

Dodatkowe infoermacje:

Jeżeli rozpakuję (w tym przypadku Briscad) w katalogu root i odpalę briscad.sh to program się uruchamia

Jeżeli rozpakuję (w tym przypadku Briscad) w  innym katalogu i odpalę briscad.sh, nawet jako root, to program się nie uruchamia

pomocy

----------

## qwaszs

Witam ponownie

Przeinstalowałem system, pierwsze co zrobiłem to próba uruchomienia *.sh - brak dostępu :(

To nie może być mój błąd. Nie wiem co robić.

mój make.conf może coś we flagach?

```
# Please consult /usr/share/portage/config/make.conf.example for a more

# detailed example.

CFLAGS="-O2 -march=i686 -pipe -s"

CXXFLAGS="${CFLAGS}"

# WARNING: Changing your CHOST is not something that should be done lightly.

# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.

CHOST="i686-pc-linux-gnu"

MAKEOPTS="-j3"

LANGUAGE="48"

LINGUAS="pl en"

VIDEO_CARDS="nvidia fbdev vesa intel"

ALSA_CARDS="hda"

ACCEPT_LICENSE="skype-eula"

GENTOO_MIRRORS="http://gentoo.po.opole.pl ftp://gentoo.po.opole.pl rsync://ftp.vectranet.pl/gentoo/ http://ftp.vectranet.pl/gentoo/ ftp://ftp.vectranet.pl/gentoo/ http://gentoo.mirror.pw.edu.pl/"

SYNC="rsync://rsync7.pl.gentoo.org/gentoo-portage"

USE="32bit X a52 aac aacplus aalib acpi alac alsa amr animgif ao apng ass

     audacious audio audiofile automount autotrace avcodec avconv avformat bl

     bluetooth cairo cdda cddb cdemud cdio cdparanoia cdr cdrdao cdrom cdsound

     colordiff consolekit corefonts css dar32 dbase dbus device-mapper dga

     djvu dvd dvdarchive dvdchapjump dvdnav dvdr dvi dvipdfm edd edit excel

     exif extras faac faad fbcon fbcondecor fbosd ffmpeg firefox firefox3 flac

     flake fontconfig fonts foomaticdb fpx fusion gd gdu gif gimp

     graphicsmagick gtk gtk2-perl gtk3 gtkhotkey gui gzip hpcups hpijs hwdb

     ieee1394 imagemagick imlib iptv java java6 javascript jbig jpeg jpeg2k

     libass libburn libcaca libcanberra libextractor libmpeg2 libtool libusb

     libv4l libv4l2 lightning lilo linguas_pl_PL live lm_sensors logrotate mad

     mclib menuorg metric mime mms mmx mmxext mng mozilla mp3 mp4 mpeg mpg123

     mplayer msdoc new-login ntfs ntfsprogs nvidia obex odbc odf odk ods ogg

     ogg123 ole opengl osdmenu output_udp parport pcf pci pdf pdf-writer

     pdfannotextractor pdfimport perl pixmaps playlist plot plotutils pmu png

     pnm policykit ppds pvr python python2 python3 qt-faststart qt3support qt4

     quicktime rar real rtc rtmp scanner schroedinger shm skins slit smp sound

     sox spell sqlite sqlite3 ssh subtitles suid svg svga swscale t1lib tga

     thunar thunderbird tiff toolbar transcode truetype udev udisks ui unzip

     usb utils v4l vcd vcdx vdr vidix vim wav waveout wavpack webdav webm

     win32 win32codecs wma wmf xcb xcf xface xfconf xfs xft xine xinerama

     xklavier xml xorgmodule xosd xpm xprint xps xscreensaver xslt xulrunner

     xv xvfb xvid xvmc yaepg zip -em84xx -filters"
```

----------

