openKylin论坛

标题: 执行脚本和可执行程序时一直提示没有权限(Permission denied) [打印本页]

作者: wanjie    时间: 2020-2-13 16:08
标题: 执行脚本和可执行程序时一直提示没有权限(Permission denied)
在银河麒麟的16.04版本上,运行自己编写的测试程序和脚本时,一直提示 没有权限(Permission denied)的问题。我尝试过切换到root权限,将待测试程序和脚本的权限赋予777后,仍然会提示 没有权限(Permission denied)的问题。
我也查看过当前系统的/etc/fstab文件,上面显示是正常的。请问,这是个什么问题啊???

作者: 熟悉的陌生人    时间: 2020-2-13 16:17
可否发下脚本内容
作者: wanjie    时间: 2020-2-13 16:41
熟悉的陌生人 发表于 2020-2-13 16:17
可否发下脚本内容

就是简单的shell测试脚本。
#!/bin/sh
echo "hello kylin os!"
作者: 熟悉的陌生人    时间: 2020-2-13 20:06
wanjie 发表于 2020-2-13 16:41
就是简单的shell测试脚本。
#!/bin/sh
echo "hello kylin os!"

会不会是因为你的用户,你换成root执行下试试

作者: wanjie    时间: 2020-2-13 22:33
熟悉的陌生人 发表于 2020-2-13 20:06
会不会是因为你的用户,你换成root执行下试试

切换root后试过了。也是一样的效果
作者: kaiwazi    时间: 2020-2-17 09:57
楼主你少了个点 。。。应该是 . ./test.sh
作者: wanjie    时间: 2020-2-17 10:33
kaiwazi 发表于 2020-2-17 09:57
楼主你少了个点 。。。应该是 . ./test.sh

???不是吧。我就在test.sh的当前目录下执行的呀。../test.sh,这是要在上一层目录找到test.sh之后再执行啊,但我的上一层目录是没有test.sh这个脚本的啊
作者: wanjie    时间: 2020-2-17 10:40
kaiwazi 发表于 2020-2-17 09:57
楼主你少了个点 。。。应该是 . ./test.sh

我刚刚测了下 . test.sh (.与test.sh中间有一个空格)这样是可以的。但是,执行我自己写的可执行文件时,还是不行。这是为什么啊???
作者: 笨鸟弟弟    时间: 2020-2-18 13:19
这样试试
  1. vi xx
  2. #!/bin/bash
  3. echo "hello,kylin os!"
  4. :wq
  5. chmod +x xx
  6. ./xx
复制代码

作者: wanjie    时间: 2020-2-18 20:56
笨鸟弟弟 发表于 2020-2-18 13:19
这样试试


我试过了。bash和sh我都试过了。一样的不行。。。。
作者: kaiwazi    时间: 2020-2-18 21:24
kwz@kwz:~/test$ ls
test.sh
kwz@kwz:~/test$ ll
总用量 12
drwxrwxr-x  2 kwz kwz 4096 2月  18 21:24 ./
drwxr-xr-x 39 kwz kwz 4096 2月  18 21:23 ../
-rwxrwxr-x  1 kwz kwz   33 2月  18 21:24 test.sh*
kwz@kwz:~/test$ . ./test.sh
hello kylin os!
kwz@kwz:~/test$


作者: lanzinc    时间: 2020-2-18 22:51
chmod a+x 脚本文件
作者: wanjie    时间: 2020-2-19 09:16
kaiwazi 发表于 2020-2-18 21:24
kwz@kwz:~/test$ ls
test.sh
kwz@kwz:~/test$ ll

嗯。这样是可以的。我也验证过。只是有点好奇 . 操作符可以这样执行脚本。我看了下,用 . 操作符,底层好像也是用bash来执行的脚本,但为什么我直接用 bash 来执行test.sh脚本却不行呢?
作者: wanjie    时间: 2020-2-19 09:17
lanzinc 发表于 2020-2-18 22:51
chmod a+x 脚本文件

我已经将脚本文件的权限打开了,已经给到777了。还是不行的
作者: 笨鸟弟弟    时间: 2020-2-19 10:10
wanjie 发表于 2020-2-18 20:56
我试过了。bash和sh我都试过了。一样的不行。。。。

由于你的贴图我无法看清楚,你是放在哪里,然后怎么执行的,判断大概你的执行路径不对,我发解析,
你直接复制我的代码,在桌面编辑后,放到系统的{bin}文件夹里,然后打开终端直接运行就可以,
不用./这样来运行直接输入名称回车,
作者: wanjie    时间: 2020-2-19 11:14
笨鸟弟弟 发表于 2020-2-19 10:10
由于你的贴图我无法看清楚,你是放在哪里,然后怎么执行的,判断大概你的执行路径不对,我发解析,
你直 ...

这张图片是我的测试脚本的内容、所在位置,以及我所做的测试。我没有把测试脚本放到/bin文件夹下。因为在实际的使用中,我们不会把所有的脚本都放在/bin目录下。我们一般都会自己指定脚本文件的存放路径的。
作者: 笨鸟弟弟    时间: 2020-2-19 18:13
看了你的终端输出,原来是你的执行不对,
你应该这样执行
pwd #确认你所在的位置
然后cd 进入你文件所在的位置

./t.sh  #告诉在当前位置执行文件解析 # 无论是root权限用户还是权限都应该我这样,除了你把它扔进 /bin目录下,
而不是你那样来执行文件,你根本不明白自己在做什么?你更不明白linnux文件目录结构,


作者: wanjie    时间: 2020-2-20 09:23
笨鸟弟弟 发表于 2020-2-19 18:13
看了你的终端输出,原来是你的执行不对,
你应该这样执行
pwd #确认你所在的位置

说实话哈,我是真的不是太了解linux的文件目录结构。我之前的所有操作都是在我的脚本和可执行文件所在目录下操作的。不是太理解为什么还需要再来cd 到文件所在的位置???这是什么原因啊?
我刚刚又试了一下,操作了一下cd,但是再操作的时候,还是会报之前的错误。我的操作有什么问题吗?我执行脚本的时候,一般会这么操作。
一、进入脚本所在的目录,然后直接使用命令:bash 脚本
二、在做任意的目录,然后使用命令:bash 脚本所在的完整路径(从根目录到脚本,如我写的测试脚本 /home/guest/temp/t.sh)
请问一下,我这些操作与linux的文件目录结构有什么关联啊?一直不是太了解底层的东西。望不吝赐教。谢谢,谢谢!万分感谢!


作者: wanjie    时间: 2020-2-20 13:50
笨鸟弟弟 发表于 2020-2-19 18:13
看了你的终端输出,原来是你的执行不对,
你应该这样执行
pwd #确认你所在的位置

抱歉,还是没能明白你说的。我对linux的文件目录结构是真的不是太了解。还望能不吝赐教下。我试着将我的测试脚本放到了/bin目录下,但是测试的时候,还是一样的。


作者: wanjie    时间: 2020-2-20 14:13
笨鸟弟弟 发表于 2020-2-19 18:13
看了你的终端输出,原来是你的执行不对,
你应该这样执行
pwd #确认你所在的位置

说实话哈,我是真的不是太了解linux的文件目录结构。我之前的所有操作都是在我的脚本和可执行文件所在目录上去执行的。然后,我执行的时候,一般会有两种方式:
一、进入到脚本所在的目录,然后直接使用bash或sh,后面再加上脚本名。如: bash t.sh
二、使用bash或sh,后面会加上脚本的完整路径。如: bash /home/guest/temp/t.sh
一直以来我都是只会使用,不是太了解底层的东西。不好意思!能请你解释一下底层的逻辑吗?
另外,我刚刚也尝试了下,通过cd进入到文件所在的位置,但是执行出来的结果还是一样的。不知道是为什么?是我的操作有什么问题吗?



而我通过 . 操作符来操作的时候,发现脚本通过 . 操作符是可以正常显示的,但是可执行文件却是不行的。这个是什么原因啊?你能帮忙解释下吗?

作者: kaiwazi    时间: 2020-2-29 10:02
lz你看看我 我先用的bash后用的sh都可以。。。
kwz@kwz:~$ ll test.sh
-rwxrwxrwx 1 kwz kwz 35 2月  29 09:52 test.sh*
kwz@kwz:~$ cat test.sh
#!/bin/bash
echo "hello kylin os!"
kwz@kwz:~$ bash test.sh
hello kylin os!
kwz@kwz:~$ bash ./test.sh
hello kylin os!
kwz@kwz:~$ sh ./test.sh
hello kylin os!
kwz@kwz:~$ . ./test.sh
hello kylin os!
kwz@kwz:~$ ./test.sh
hello kylin os!
kwz@kwz:~$ vim test.sh


这里改成sh
kwz@kwz:~$ ll test.sh
-rwxrwxrwx 1 kwz kwz 33 2月  29 09:59 test.sh*
kwz@kwz:~$ cat test.sh
#!/bin/sh
echo "hello kylin os!"
kwz@kwz:~$ bash ./test.sh
hello kylin os!
kwz@kwz:~$ bash test.sh
hello kylin os!
kwz@kwz:~$ sh ./test.sh
hello kylin os!
kwz@kwz:~$ sh test.sh
hello kylin os!
kwz@kwz:~$ ./test.sh
hello kylin os!
kwz@kwz:~$

都可以正常输出。。。
作者: kaiwazi    时间: 2020-2-29 10:10
wanjie 发表于 2020-2-19 09:16
嗯。这样是可以的。我也验证过。只是有点好奇 . 操作符可以这样执行脚本。我看了下,用 . 操作符,底层好 ...

    ./test.sh 就是bash test.sh,在子进程中执行
    . ./test.sh与source ./test.sh的功能相同,在当前进程中执行
作者: kaiwazi    时间: 2020-2-29 10:15
kaiwazi 发表于 2020-2-29 10:10
./test.sh 就是bash test.sh,在子进程中执行
    . ./test.sh与source ./test.sh的功能相同,在当 ...

https://blog.csdn.net/u012398613/article/details/52163606
这篇文章可能有用?
作者: zhaotianxu    时间: 2020-3-6 15:45
wanjie 发表于 2020-2-18 20:56
我试过了。bash和sh我都试过了。一样的不行。。。。

这明显不是脚本的问题,有可能是整个bash环境都被锁了,有没有装麒麟安全管理工具之类的东西?
作者: lililala6868    时间: 2020-3-17 10:11
仍然会提示 没有权限福彩3DPermission denied)的问题。
我也查看过当前系统的/etc/fstab文件,上面显示是正常的。请问,这是个什么北京快3问题啊
作者: lanzinc    时间: 2021-10-28 09:21
lililala6868 发表于 2020-3-17 10:11
**** 作者被禁止或删除 内容自动屏蔽 ****

su
cp /home/guest/xx.sh ~
cd
./xx.sh
ls /home/guest -ld

会不会是目录权限的问题,你的是guest,不太懂

lanzinc@LIUSHENHUALUSHUI:~$ ls -ld guest
drw-rw-r-- 2 lanzinc lanzinc 4096 10月 28 09:13 guest
lanzinc@LIUSHENHUALUSHUI:~$ cd guest
bash: cd: guest: 权限不够
lanzinc@LIUSHENHUALUSHUI:~$ chmod o+x guest
lanzinc@LIUSHENHUALUSHUI:~$ ls -ld guest
drw-rw-r-x 2 lanzinc lanzinc 4096 10月 28 09:13 guest
lanzinc@LIUSHENHUALUSHUI:~$ cd gues
bash: cd: gues: 没有那个文件或目录
lanzinc@LIUSHENHUALUSHUI:~$ cd guest
bash: cd: guest: 权限不够
lanzinc@LIUSHENHUALUSHUI:~$ chown guest guest
chown: 无效的用户: "guest"
lanzinc@LIUSHENHUALUSHUI:~$ chmod u+x guest
lanzinc@LIUSHENHUALUSHUI:~$ ls -ld guest
drwxrw-r-x 2 lanzinc lanzinc 4096 10月 28 09:13 guest
lanzinc@LIUSHENHUALUSHUI:~$ chmod o-x guest
lanzinc@LIUSHENHUALUSHUI:~$ chmod u-r guest
lanzinc@LIUSHENHUALUSHUI:~$ ls -ld guest
d-wxrw-r-- 2 lanzinc lanzinc 4096 10月 28 09:13 guest
lanzinc@LIUSHENHUALUSHUI:~$ cd guest
lanzinc@LIUSHENHUALUSHUI:~/guest$ ls
ls: 无法打开目录'.': 权限不够
lanzinc@LIUSHENHUALUSHUI:~/guest$ mkdir xx.sh
lanzinc@LIUSHENHUALUSHUI:~/guest$ rm xx.sh
rm: 无法删除'xx.sh': 是一个目录
lanzinc@LIUSHENHUALUSHUI:~/guest$ rm xx.sh -r
lanzinc@LIUSHENHUALUSHUI:~/guest$ echo "echo hello" > xx.sh
lanzinc@LIUSHENHUALUSHUI:~/guest$ chmod 777 xx.sh
lanzinc@LIUSHENHUALUSHUI:~/guest$ ls xx.sh -l
-rwxrwxrwx 1 lanzinc lanzinc 11 10月 28 09:18 xx.sh
lanzinc@LIUSHENHUALUSHUI:~/guest$ sh xx.sh
hello
lanzinc@LIUSHENHUALUSHUI:~/guest$ cd ..
lanzinc@LIUSHENHUALUSHUI:~$ sh guest/xx.sh
hello
lanzinc@LIUSHENHUALUSHUI:~$

我没重现你这个问题

ls -l `which bash`
看看bash是不是设了啥特殊权限

总不会是内核的进程管理出问题了吧
作者: chenhj520    时间: 2022-7-9 15:32
lanzinc 发表于 2021-10-28 09:21
su
cp /home/guest/xx.sh ~
cd

唉.....  这个系统使用起来还是太不方便。问题多多
作者: 飞鹿    时间: 2022-8-12 20:22
chenhj520 发表于 2022-7-9 15:32
唉.....  这个系统使用起来还是太不方便。问题多多

我也遇到了权限问题,关闭了ksec也不行,原贴在这里 【银河麒麟安装anaconda,权限不够】




欢迎光临 openKylin论坛 (https://forum.openkylin.top/) Powered by Discuz! X3.3