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

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

程序要运行,就必须有执行权限。用代码表示为:chmod +x scriptsh

有三种权限更改方式:chmod/acl/sudo

前两者用来更改文件权限,sudo用来更改应用程序或者是命令的执行权限

chmod的局限是无法实现多种权限分配(用户群体只有三种),面对多权限时需要用ACL进行设置

第一种:Chmod

chmod (agou)(+-)(rwx) filename

agou 表示文件权限更改影响的范围,分别代表all, group, others, user

+-表示增加或者删除权限

rwx表示具体的权限类型

chmod a+x testtxt 表示给testtxt的所有使用者增加执行权限

chmod a-x,a-w testtxt 表示去除所有人执行和更改testtxt的权限

chmod XXX filename

三类用户一起设置,第一个X代表所有者,第二个X代表所属组,第三个X代表其他

r(4) w(2) x(1): chmod 755 testtxt 给testtxt的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,系统会d出命令提示,验证完命令以后sr可以成功添加用户

#!/bin/bash

#参数一为文件名,包含扩展名 比如 ccctxt, 参数2为要删除的行数

# 脚本名如果是 ash ,执行方式是  /ash ccctxt 10

if [ ! -f $1 ];then   #查找文件是否存在,不存在的话 异常退出

     echo $1 done found!

     exit 1

 fi

 if [[ $2 -gt `wc -l $1 | grep -o '[[:digit:]]'` ]];then #如果行数大于文件行数,异常退出

     echo line $2 not exist

     exit 1

 fi

 sed "$2d" $1 # 如果sed引入shell变量,需要将单引号换成双引,若转义

 if [[ $ -eq 0 ]];then # 判定sed是否执行成功并输出结果。行数为小数的话 SED命令执行失败,异常退出

     echo line $2 deleted

 else

     echo line $2 not deleted

     exit 1

 fi

 exit 0

1 #!/bin/bash

  2 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

  3 export PATH

  4 echo -e "------please input---------  \n"

  5 read -p "please input a file or path  " filename

  6 test ! -e $filename && echo "not file or path" && exit  0

  7 test -d $filename && ls $filename && exit 0  

  8 test -f $filename && cat $filename | more && exit 0

  9 test -x $filename && /$filename && exit 0

 10 exit 0

亲自用vim给你写的,简单测试了一下。

脚本名 tartestsh

#!bin/bash

FNAME=$2 #取文件名

if [ '$2' == 'targz'] #匹配后缀

`tar -zxvf $2`#解压命令 `是1键左面那个

fi

#后面继续各种if去吧 就那么几种情况

用的时候就是 /tartestsh filename 就OK了

cd到脚本所在路径

ls -l sh|awk '{print $9}'>filenamelst

for i in filenamelst

sh $i

done

运行时间长的话可以后台运行:

nohup for i in filenamelst

sh $i

done &

以上就是关于编写的shell程序运行前必须赋予该脚本文件什么权限全部的内容,包括:编写的shell程序运行前必须赋予该脚本文件什么权限、请设计一个程序,linux如何通过命令行参数接受一个文件名为filename.txt(纯、linuxshell脚本程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10177833.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存