shell脚本./不能执行,得chmod设什么权限能./执行,现在只能sh执行脚本命令

作者&投稿:堵玉 (若有异议请与网页底部的电邮联系)
编写的shell程序运行前必须赋予该脚本文件什么权限~

程序要运行,就必须有执行权限。用代码表示为:chmod +x script.sh
有三种权限更改方式:chmod/acl/sudo
前两者用来更改文件权限,sudo用来更改应用程序或者是命令的执行权限
chmod的局限是无法实现多种权限分配(用户群体只有三种),面对多权限时需要用ACL进行设置
第一种:Chmod
chmod (agou)(+-)(rwx) filename
agou 表示文件权限更改影响的范围,分别代表all, group, others, user
+-表示增加或者删除权限
rwx表示具体的权限类型
chmod a+x test.txt 表示给test.txt的所有使用者增加执行权限
chmod a-x,a-w test.txt 表示去除所有人执行和更改test.txt的权限
chmod XXX filename
三类用户一起设置,第一个X代表所有者,第二个X代表所属组,第三个X代表其他
r(4) w(2) x(1): chmod 755 test.txt 给test.txt的owner设置rwx的权限,给其他所有用户设置rx权限因为要计算每一种用户的权限,多用于批量处理权限。对用户单独设置权限多用英文,而非数字
权限细化的问题,chmod最多只有三个权限组,当有多个用户,并且每个用户的权限都不一样时,chmod有局限性。

第二种:ACL(setfacl/getfacl)
文件和文件夹的权限:
如果有多个用户组,权限设置是很复杂的事情,需要仔细规划(ACL和Chmod混合使用容易产生一些权限问题,建议单独使用)
文件夹的读权限:可以列出目录下内容
文件夹执行权限:可以进入到文件夹中,执行切换目录等操作
文件夹的写权限:可以在文件夹中增删文件
用户对某个文件有了rwx权限,不代表用户有权删除该文件,只代表对文件内容有了删除权限,要能对文件级别进行操作,需要设置相应的文件夹的w权限。
getfacl filename/filedirectory
查看文件/文件夹 权限:结果会展示user,group和other的整体权限,以及特殊用户的权限
setfacl -m u:username:rwx filename
给某个用户添加对某个文件或者文件夹的特殊权限
给普通用户添加完相应权限以后,root也会有相应的权限(理论上root拥有最多的权限)
setfacl -x u:username filename
删除用户对某个文件或者是文件夹的特殊权限

第三种:SUDO
不同于chmod/acl 设置某个文件的权限,sudo主要是为非root用户增加系统的处理和执行权限。比如只有root有useradd权限,通过sudo,可以为普通用户增加useradd权限。

为普通用户增加权限有两种方式:带密码验证和不带密码验证,并且可以指定sudo可运行的机器。
使用sudo有两个步骤:1. visudo编辑权限 2. 普通用户在使用命令前添加sudo
创建无密码sudo(执行脚本时通常采用无密码sudo)
编辑visudo: 运行visudo, 采用Vim编辑器编辑添加 sr localhost=NOPASSWD:/usr/sbin/useradd,给用户sr添加“添加用户”的超级权限
切换到sr用户
sudo useradd testadd,在sr模式下添加新的用户
创建有密码sudo(可以确保有密码用户才使用此命令)
编辑visudo: 运行visudo, 采用Vim编辑器编辑添加 sr localhost=/usr/sbin/useradd,给用户sr添加“添加用户”的超级权限
切换到sr用户
sudo useradd testadd,系统会弹出命令提示,验证完命令以后sr可以成功添加用户

编写好的shell脚本(如:test),可以采取两种方式进行运行:
一、 $ sh test
一般不采用这种调用方式,尤其不采用“sh<test”的调用方式,因为这种方式将禁止shell读取标准输入。
也可以采用 $ ksh test
这种方式要求shell具有“可读”的访问权限。
二、直接运行可执行的shell脚本之前,首先应使用下列chmod命令,把shell脚本文件设置为可执行的文件。
chmod 755 test(除文件属主可写之外,每个用户均具有读和可执行的访问权限)
chmod +rx test(同上)
chmod u+rx test(只有文件属主具有读和执行的访问权限)
按照上述要求设置shell脚本文件的访问权限后,可采用下列方式,直接运行shell脚本了。
1、test(如果命令检索路径包含当前目录)
2、./test(如果命令减缩路径不包含当前目录)
*说明: sh test 方式调用一个shell叫蹦可能会禁止某些shell特定的扩展功能,因而可能引起脚本无法正确执行。

chmod +x 脚本名称
给个执行权限就行了,x对应数字1

shell脚本文件没有执行权限,需要添加执行权限的
chmod +x 脚本名称

linux系统?给个ll,会看的比较清楚吧


Shell脚本:${...}在字符串中的多种用法
1、${var} 限定变量。如果一个变量名A是另一个变量名AB的前部分,那么,如果要在AB相连时,要得到A的值,就必须使用${var}限定。如果变量名不会产生歧义时(即独立的变量名),${var}与$var没有任何区别。var="hello"var_01="hello01"echo  $var $var_01 ${var}_01 >>> hello ...

shell编程,输入一个字符串,判断是否是数字。
read a if [[ $a =~ \/\\-?[0-9][0-9.]+\/]] ; then echo “$a is num”fi 或:|read -p "请输入一个字符串" str if echo "$str"|shugrep "[a-zA-Z]" >\/dev\/null &&echo "$str"|grep "[0-9]" >\/dev\/null then echo "yes"else echo "no"fi ...

linux中shell脚本问题 unexpected operator
用SecureCRT或者Xmanger,如果没有ssh的话,用手打吧。你的脚本我执行了,应该是没问题。--- !\/bin\/bash Check $1 is equal to "hello"history 2012\/02\/11 first release if [ "$1" == "hello" ]; then echo "hello.how are you"elif [ "$1" == "" ];then echo "you must i...

《传奇》SF服务端里检测某个地图某个怪物的数量的脚本怎么写?
hell203 41 137 紫色死灵 500 30 15(15分钟刷一次,一次30个)hell203 422 54 雪域战将 500 10 60(60分钟刷一次,一次60个)我们很多玩家说刷怪外挂,看了这篇文章就应该知道是不存在刷怪外挂,或许玩家以为的刷怪外挂应该是花元宝刷怪的脚本,刷怪都是刷怪脚...

动漫中常用的英文缩写是什么意思?
!日本动画一般是边做边播~~ 4。原作 举个例子,《龙珠》的原画是鸟山明,所以原作往往指漫画的原作者,不过也有动画是根据小说改编的,那他的原作就是小说的作者。 5。脚本 脚本:1,剧本的别称。2,写脚本的人。 6。原案 和“脚本”类似,但更接近“策划”。剧情的大致构思,...

日本动漫的一些知识?
脚本:1,剧本的别称。2,写脚本的人。 6。原案 和“脚本”类似,但更接近“策划”。剧情的大致构思,基本设定等都是他们来决定,但最后的脚本不一定是他们来完成。 7。监督 嘿嘿,就是“导演”,全组的首脑、核心,就像我~~~` 8。CV Character Voice 声优(你不要说你知道什么是声优)。也有部分动画最后用“CAST”...

...还是perl脚本编程还是会写简单的溢出webs hell 还是zhi h_百度...
都不会,都不会

linux下怎么运行perl程序
1、perl解释器基本在所有的linux平台上都是自带的,用户可以通过如下命令判断是否有perl解释器:which perl 2、如果自己的linux系统上没有perl解释器,可以去其官网下载安装。3、在具备perl解释器的情况下,可以参考如下运行步骤:1)、用vim编写test.pl,代码如下:!\/usr\/local\/bin\/perlprint "HellonWorld!

日本描述二战的动漫
《起风了》是导演兼脚本的宫崎骏以同名漫画所改编的动画电影。讲述的是日本零式战斗机的开发者堀越二郎年轻时的故事。 尽管影片的题材与战争有关,《起风了》却传递了一种安静的反战信息。其公映的日期却正值日本政治环境中对外交政策采取鹰派立场的敏感时期。而宫崎骏本人也指出了日本应对以往历史罪行道歉以及不能随意修...

能杀死怪物的只有人类——HELLSING补番总结
其次,从制作方面看,这部番剧由Satelight(白学 妖尾 长门大萌神的消失)出品,黒田洋介(高达00 圣斗士冥王篇 军火女王)、仓田英之负责脚本,配音阵容也各种华丽,中田让治(言峰绮礼 愉悦 )、折笠富美子(露西亚)、速水奖(蓝染 时辰 就是你的锅 )、坂本真绫(贞德 式姐 对,我就是型月厨 )。从出品公司到脚本再到...

弥勒县19643963550: shell 脚本为何无法运行 -
占皆乙水: 第一,脚本权限要为可执行 #chmod +x test.sh第二,脚本所在的目录在环境变量 PATH 中,或者直接执行 #./test.sh关于shell脚本这块的知识,请查阅书籍《Linux就该这么学》

弥勒县19643963550: shell脚本运行不了 -
占皆乙水: 脚本执行是成功的啊.你在脚本最后加上 echo $JAVA_HOME echo $PATH echo $CLASSPATH 要判断脚本是否执行成功是输入:echo $? 返回0则成功 还有就是,脚本相当于一个子shell.在里面定义变量相当于局部变量,不会对系统本身的系统变量做出改变.所以你在命令行中看echo $JAVA_HOME 不会改变滴!!还有如果你想让脚本定义的系统变量对系统产生影响的话可以用命令 source set_java_env.sh

弥勒县19643963550: crontab中启动的shell脚本不能正常运行,但是使用手动执行没有问题 ? -
占皆乙水: 1、这种情况多数为环境变量加载问题2、例如你用ls命令,其实依赖PATH环境变量3、可以改为全路径,比如/bin/ls4、或者将环境变量加载到脚本#!/bin/sh. ~/.bash_profile ls -lrt $*

弥勒县19643963550: shell脚本./不能执行,得chmod设什么权限能./执行,现在只能sh执行脚本命令 -
占皆乙水: shell脚本文件没有执行权限,需要添加执行权限的 chmod +x 脚本名称

弥勒县19643963550: LINUX下SHELL编程脚本无法执行,提示no such file or directory. -
占皆乙水: 结束符的问题,该hello文件,你恐怕是在windows下写的吧,文件的格式有问题.你可以:或者:在windows下打开该文件,然后另存为,这时要选择行结束符为 unix terminators - LF或者:在用VI 打开 ,然后删除所有的"^M"

弥勒县19643963550: php执行shell脚本,为什么执行不了 -
占皆乙水: 直接执行shell脚本没有权限问题,因为一般你也是root登陆的.但是使用php执行就会存在.这里你要先确定使用shell脚本操作的文件或者文件夹是否开启777权限

弥勒县19643963550: shell脚本怎么执行 -
占皆乙水: 编写好的shell脚本(如:test),可以采取两种方式进行运行:一、 $ sh test 一般不采用这种调用方式,尤其不采用“sh<test”的调用方式,因为这种方式将禁止shell读取标准输入.也可以采用 $ ksh test 这种方式要求shell具有“可读”的访问权...

弥勒县19643963550: 这个shell脚本怎么才能运行起来? -
占皆乙水: 首先,如果你想运行shell脚本的话,必须确保这个脚本具有执行权限,如果没有执行权限,可以用如下命令加上执行权限:chmod +x 文件名; 其次,你的shell脚本可以运行,里面的内容必须正确;另外,写shell的时候要对自己写的内容了解,否则造成的损失是不可估量的.

弥勒县19643963550: 你好,关于crontab配置shell脚本不执行的问题能帮忙解答下不? -
占皆乙水: 先试试直接执行shell脚本,如果ok,那就是因为你没有引入用户的环境变量,在脚本开始加一句 . ~/.profile引入用户环境变量即可.如果你这个用户直接执行shell都不成功,就是shell本身的问题,和crontab没关系.

弥勒县19643963550: shell初学者脚本求教(这段代码为什么不能运行成功?) -
占皆乙水: 你好.我看了一下.逻辑是没有问题的.问题是格式 if [$# -eq 0]改为 if [ $# -eq 0 ]括号 [] 与之间的判断逻辑两边各加上一个空格就可以了 .希望对你有帮助 .

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网