Môi trường của tôi là Ubuntu 12.04 LTS và sudo
phiên bản là 1.8.3p1.
Đầu tiên tôi đăng nhập như một người dùng bình thường:
$ whoami
fin
$ cat /etc/passwd | grep -i "root\|fin"
root:x:0:0:root:/root:/bin/bash
fin:x:1000:1000:This is a normal user:/home/fin:/bin/bash
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 30 2012 /bin/sh -> dash
$ ls -l /bin/bash
-rwxr-xr-x 1 root root 920788 Apr 3 2012 /bin/bash
$ echo $SHELL
/bin/bash
$ ps | grep "$$" | awk '{ print $4 }'
bash
$ ls -l ./test.sh
-rwxr-xr-x 1 fin fin 37 Sep 27 16:46 test.sh
$ cat ./test.sh
ps | grep "$$" | awk '{ print $4 }'
$ ./test.sh
bash
$ sudo ./test.sh
sh
Tôi cho rằng đầu ra cuối cùng cũng phải là bash
vì /etc/passwd
cho thấy rằng việc sử dụng root bash
, tôi có thiếu điểm sudo
nào không?
sh
hay phân tích cú pháp/etc/passwd
khi nhận đượcENOEXEC
lỗi?