编写的shell程序运行前必须赋予该脚本文件什么权限

作者&投稿:童奖 (若有异议请与网页底部的电邮联系)
编写的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可以成功添加用户

可执行

题主你好,
linux系统下, 如果想执行一个文件,必须要给该文件赋予可执行权限, 而赋予权限的命令为:
chmod +x 文件名
举例来说, 下图为我编写的输出文本 hello world 的shell脚本内容,脚本名为ok.sh:

a.我们先看一下不给ok.sh这个脚本加可执行权限(x)时,执行它终端会怎么说:

从上图的输出可以看出,终端告诉我们"权限被拒绝", 说白了就是无权对文件做执行操作.
b.下面我们给文件加上可执行权限后, 再执行看一下:

通过上图可以看出, 在使用chmod命令给ok.sh文件加上可执行权限后, 对其执行, 终端成功输出了我们想要的结果: hello world
-----
希望可以帮到题主, 欢迎追问.



急救:编写一个简单的Shell程序,实现将指定的文件内容中小写字母转换成大...
include<stdio.h> include<stdlib.h> include<ctype.h> void convert(char * befor_ch);int main(void){ int i;char str[80];gets(str);printf("原始自符串 => %s\\n" , str);printf("使用库存函数-自符串 =>");for(i=0;str[i]!='\\0';i++){ printf("%c" , tolower(str[...

什么是shell脚本
shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。当普通用户成功登录,系统将执行一个称为shell的程序。

编写一个shell脚本程序,它带一个命令行参数,这个参数是一个文件。_百度...
!\/bin\/bash 脚本名称假设为:test.sh if [[ $# -ne "1" || ! -f $* ]];then echo "Usage:.\/test.sh 参数(请输入普通文件名)"exit 1 fi uname=$(ls -l $1 | awk '{print $3}')ctime=$(ls -l $1 --full-time | awk '{print $6}')echo "所有者为:$uname"echo "...

帮忙写下这个shell程序的注释 感激不尽
!\/bin\/sh sumints - a program to sum a series of integers if [ $# -eq 0 ] #如果参数个数为0 then echo "Usage: sumints integer list" #打印"Usage: sumints integer list"exit 1 #退出shell程序 fi ...

linux中的shell究竟是什么?
linux中的shell究竟是;ll程序呢? 简单的说shell程序就是一个包含若干行 shell或者linux命令的文件.象编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.如VI等.在文本编辑环境下,依据shell的语法规则,输入一些shell\/linux命令行,形成一个完整 的程序文件.tcsh shell 不使用test命令,但是tcsh...

使用vi写一个小shell程序。该程序根据你输入的一个词,判定这是本机上...
1、用su - user判定用户存不存在 2、用which判断命令存在不存在 3、例如:!\/bin\/sh if [[ -z $1 ]];then echo "Usage: $0 str"exit 0;fi str=$1 su -l $str -s \/usr\/bin\/echo eval which $str

linux shell 脚本实现tcp\/upd协议通讯
实现连续的,读与写操作。 实例截图: 其它实现方法: 其实通过:telnet也可以实现的。 [chengmo@centos5 shell]$ (echo "stats";sleep 2)|telnet 127.0.0.1 11211 通过nc命令实现: [chengmo@centos5 shell]$ (echo "stats")|nc 127.0.0.1 11211 不需要加延迟,直接打开通道 第二个程序里面,看到shell完全可以...

请帮写一个执行某程序1000次的shell脚本
!\/bin\/bash time=0 while[ time -ne 1000 ]do 执行次数+1 let "time = $time + 1"如果脚本位置与putget位置一样,这么写,如果不一样,请写上绝对路径 .\/putget 123456 done 记得将脚本权限改成可执行 chmod +x ...sh

设计一个shell脚本程序,要求有如下功能: 实现自动备份功能和清理备份...
!\/bin\/bashTIME=`date +%Y"\/"%m"\/"%d" "%H":"%m`if [ -f \/home\/shell.log ]thenecho "$TIME running" > \/home\/tmp.logcat \/home\/shell.log >> \/home\/tmp.logmv \/home\/tmp.log \/home\/shell.logelsetouch \/home\/shell.logfi脚本名字status.sh,放到\/root下 (写的有点小问题,功能...

用shell写一个程序,把一个大文件拆分成为多个小文件,要求:拆分文件以...
!\/bin\/awk { if(\/[ ]*create table\/){ name=$0;sub("[ ]*create table ","",name);} print>name;} 就是判断当前行是不是create table 如果是,就设置name变量为table 名。随后把当前行输出到name文件。因此每次遇到create table 就会变换name 文件名。不需要判断;结尾的行。

广灵县13648963705: 编写的shell程序运行前必须赋予该脚本文件什么权限 -
倪颜康诺: 程序要运行,就必须有执行权限.用代码表示为:chmod +x script.sh 有三种权限更改方式:chmod/acl/sudo 前两者用来更改文件权限,sudo用来更改应用程序或者是命令的执行权限 chmod的局限是无法实现多种权限分配(用户群体只有三种)...

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