当前位置:首页 » 编程软件 » shell脚本sudo

shell脚本sudo

发布时间: 2023-02-06 12:43:06

❶ shell脚本中怎么实现:暂停,按键继续

1、其中 yum install tomcat 执行过程中需要用键盘输入两次字符”y”以便确认选项,Dockerfile 脚本命令如下。

❷ shell执行sudo命令时,自动输入密码

输入该命令后还需要用户输入sudo密码

自动输入密码方式1:

自动输入密码方式2:

其中123就是用户密码。

比如可以在shell脚本中输入用户密码,就可以自动执行sudo相关命令了。

❸ jenkins执行shell脚本,使用scp免密传输失败问题

问题:Jenkins默认使用jenkins用户去启动,jenkins用户并没有权限去执行ssh免密登陆,所以导致执行失败

注:配置linux双机互信后,jenkins也需要将公钥加入到目标机器,才能达到shell脚本中scp免密传输的条件

一、验证登录

1、切换jenkins用户

# su jenkins

切换后还是root账号

2、分析解决:

2.1 应该是/etc/passwd文件中的/bin/bash被yum安装的时候变成了/bin/false

# vim /etc/passwd

jenkins:x:990:988:Jenkins Automation Server:/var/lib/jenkins:/bin/false( bash)

将bin/false改为/bin/bash

再次执行切换

# su jenkins

bash-4.1$

2.2  结果命令提示符的用户名不是jenkins而变成了 bash-4.1$,原因是在安装jenkins时,jenkins只是创建了jenkins用户,并没有为其创建home目录

# vim ~/.bash_profile

在文件的最后添加 export PS1='[\u@\h \W]\$',执行文件使修改项起作用

# source ~/.bash_profile

验证是否成功   # su jenkins

二、为jenkins系统用户开启免密登录

1、在Jenkins的使用过程中,如果在脚本中使用到sudo命令,有可能出现如下所示的错误:

sudo: no tty present and no askpass program specified

这是因为Jenkins服务器在执行sudo命令时的上下文有误,导致这个命令执行的异常。

2.1 解决方法:

# sudo visudo

在文件末尾加上jenkins ALL=(ALL) NOPASSWD: ALL

2.2 重启jenkins,测试

# su jenkins

# sudo su -s /bin/bash jenkins

测试成功,jenkins免密登录成功。

PS:如果误操作修改了/etc/sudoers的权限来修改上述文件,则会导致如下所示的错误:

sudo :/etc/sudoers is world writable

sudo : no valid sudoers source found, quitting

sudo : unable to initialize poling plugin

这是Linux的一种保护机制。因此,如果出现上述误操作,则需要执行如下命令来解决:

$ pkexec chmod 0440 /etc/sudoers

三、jenkins用户开通ssh免密登录

1、安装ssh

# yum install ssh

1.1 将ssh服务设置开机自启

# sudo systemctl enable sshd

1.2 启动ssh

# sudo systemctl start sshd

2、生成jenkins用户秘钥证书

# su jenkins

# ssh-keygen -t rsa

2.1 查看是否生成成功

# /var/lib/jenkins/.ssh/

# ls

3、将公钥传输到目标linux系统

ssh--id -i /var/lib/jenkins/.ssh/id_rsa.pub root@目标ip:path

------------------------------------------------------------------------------------------

参考:https://blog.csdn.net/weixin_43840640/article/details/90371472

❹ 怎样通过shell脚本判断一个用户是否具有sudo权限

可是使用id命令来判断,supper权限的用户id貌似为0,那么你就判断一下子这个用户的id是否为0
id -u xxx

❺ ubuntu shell脚本的指令问题

如果说是 declare 命令不能用,那原因是由于你用的不是bash.如果是其他命令(你最好列出来具体的命令名字),要么是由于你没有使用和《鸟哥》里所使用的同样的shell,要么就是你的系统里没有安装对应的软件。

比方说,有的命令是shell自带的命令,如declare, let 等,如果你发现不能用,那是由于使用的shell 不同或者版本不同。
有的命令不是shell自带命令,而是系统中装的一些工具软件, 比如 find, tar, grep 等等,这种类型的命令数量远大于shell自带命令,在ubuntu默认安装中,很可能有一些没有安装,需要你自己去装。
所以具体你缺什么命令,不一定是shell的问题,也可能是你没有安装对应软件包。

最后,建议你还是用bash,毕竟是最流行的shell,大多数人,大多数教程,都讲得是它,所以不建议你初学时用其他shell,等对linux shell有一定了解后,再换到自己喜欢用的shell会比较合适。

❻ 在Ubuntu下编写shell脚本读取文件

需求功能:

创建测试用例文件 text :

创建shell脚本:

运行结果:

利用 awk 'END{print NR}' [文件名] 来输出行数:

在shell脚本中添加该功能:

运行结果:

上面的shell文件只是把文件名写死在脚本中,并没有实际使用意义,所以需要编写一个指令来指定需要读取的文件,就像 vim [文件名] 一样

“$1” 代表第1个参数,也就是在 read 之后紧跟的参数,将其作为文件名传入:

将脚本移动至环境变量对应的目录中:(可以自己更改 /bin/xxx 来决定运行命令的名称,但注意不能重复)
sudo mv read /bin/read
然后添加运行权限:
sudo chmod 755 /bin/read

打开终端的目录可以是任何位置,通过以下命令即可运行shell脚本:
sudo read [文件路径]

同理,我们还可以自己为复杂指令编写shell脚本,来提高命令的使用效率,例如开关ss服务,打开锐捷客户端认证等等。

❼ shell编程中,如何将编写的脚本把其脚本名当做shell命令来使用

首先确保你的shell脚本正确,且有执行权限。

然后sudo cp 目录/你的脚本文件名 /bin/你的脚本文件名

然后就可以了。

直接用

你的脚本文件名当作shell命令了。

看我的例子

sudocp/home/blue/mvmv.sh/bin/mvmv.sh
mvmv

然后我的桌面上的stop文件就变成了STOP了。(因为我的shell脚本如下)

#!/bin/bash
cd/home/blue/Desktop/
mvstopSTOP

说明这种方法成功。

❽ 编写的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可以成功添加用户

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:829
制作脚本网站 发布:2025-10-20 08:17:34 浏览:1093
python中的init方法 发布:2025-10-20 08:17:33 浏览:799
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:964
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:855
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1207
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:428
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:308
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:983
python股票数据获取 发布:2025-10-20 07:39:44 浏览:952