问题源于使用哈工大老师操作系统课程的环境时,运行run这个shell文件出现这样的情况:
song@ubuntu:~/workspace/oslab$ ./run -bash: ./run: 权限不够 song@ubuntu:~/workspace/oslab$ sudo ./run sudo: ./run:找不到命令
搜索网上有这样的解决过程
1.编辑文件 /etc/sudoers,将Defaults env_reset ,改为 Defaults !env_reset
sudo vi /etc/sudoers
Defaults !env_reset
2.编辑文件~/.bashrc
sudo vi ~/.bashrc
在文件末尾添加新行,好吧在哪添加新行都成。
alias sudo='sudo env PATH=$PATH'
添加完之后,再source一下
source ~/.bashrc
---------------------
作者:Fighter Fong
来源:CSDN
原文:https://blog.csdn.net/qq_34296627/article/details/82828545
但是结果如下:
song@ubuntu:~/workspace/oslab$ ./run bash: ./run: 权限不够 song@ubuntu:~/workspace/oslab$ sudo ./run env: "./run": 权限不够
这才想到是不是文件本身没有执行权限,一查果真如此:
root@ubuntu:/home/song/workspace/oslab# ll 总用量 74220 drwxrwxr-x 5 song song 4096 Mar 14 21:54 ./ drwxrwxr-x 3 song song 4096 Mar 14 14:51 ../ drwxrwxr-x 2 song song 4096 Mar 14 20:19 bochs/ -rw-rw-r-- 1 song song 18135 Mar 14 20:20 bochsout.txt -rw-rw-r-- 1 song song 115 Mar 14 14:48 dbg-asm -rw-rw-r-- 1 song song 119 Mar 14 14:48 dbg-c -rw-rw-r-- 1 song song 12423461 Mar 14 14:48 gdb -rw-rw-r-- 1 song song 75 Mar 14 14:48 gdb-cmd.txt drwxrwxr-x 2 song song 4096 Mar 14 14:48 hdc/ -rw-rw-r-- 1 song song 63504384 Mar 14 20:20 hdc-0.11.img drwxrwxr-x 10 song song 4096 Mar 14 15:13 linux-0.11/ -rw-rw-r-- 1 song song 126 Mar 14 14:48 mount-hdc -rw-rw-r-- 1 song song 254 Mar 14 21:07 run -rw-rw-r-- 1 song song 268 Mar 14 14:48 rungdb
使用chmod命令给文件加权限
chmod的语法格式如下:
chmod [who] [opt] [mode] 文件/目录名
其中who表示对象,是以下字母中的一个或组合:
u:表示文件所有者
g:表示同组用户
o:表示其它用户
a:表示所有用户
opt则是代表操作,可以为:
+:添加某个权限
-:取消某个权限
=:赋予给定的权限,并取消原有的权限
mode则代表权限:
r:可读
w:可写
x:可执行
果断chmod +x run
-rwxrwxr-x 1 song song 254 Mar 14 21:07 run*