Bash 无密码脚本

Bash 无密码脚本,bash,sudo,sudoers,Bash,Sudo,Sudoers,我想制作一个无sudoless密码的脚本,它不会提示任何执行该脚本的用户输入密码 问题:我的脚本包含用于将文件发送到备份服务器的rsync实用程序,但当需要发送的文件夹包含一些文件时,如果access设置为none,我总是会遇到权限被拒绝错误。而其他文件也归root所有,但其访问权限设置为只读。我使用公钥身份验证将文件发送到目标/备份,这样它就不会提示输入密码,但如果没有sudo和密码输入,它就无法发送上述受访问保护的文件 尝试:我尝试了这个解决方案,但不起作用。仍然存在同样的错误 编辑:sud

我想制作一个无sudoless密码的脚本,它不会提示任何执行该脚本的用户输入密码

问题:我的脚本包含用于将文件发送到备份服务器的
rsync
实用程序,但当需要发送的文件夹包含一些文件时,如果
access
设置为none,我总是会遇到
权限被拒绝错误。而其他文件也归root所有,但其
访问权限设置为只读。我使用公钥身份验证将文件发送到目标/备份,这样它就不会提示输入密码,但如果没有sudo和密码输入,它就无法发送上述受访问保护的文件

尝试:我尝试了这个解决方案,但不起作用。仍然存在同样的错误

编辑:sudoers文件

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

ortega ALL=(ALL) NOPASSWD: /home/usr/path/transmit_ckpnt.sh
# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

您有几个选择:

  • 设置根crontab作业以执行
    chown
    (让根用户定期执行作业)
  • 用于
    chmod
    将文件放入已装入卷的容器中
  • 设计一个与你正在做的根任务相同的非根任务
  • 1.根crontab 计划在指定的时间或时间间隔执行命令。在这里,您可以使用命令
    sudo crontab-u root-e
    创建一个。这将打开编辑器,编写crontab:

    2.Docker权限升级 此方法要求已经是
    根目录
    ,或者是计算机的一部分。作为docker组成员的非root用户,您可以将任何目录作为卷装载到docker容器中。在容器中,您是root用户,对装入的卷所做的更改将保持不变。只需
    chmod
    容器中的文件

    文件权限
    • 使用和更改
    无密码rsync
    • 该命令支持使用,允许您在快速一次性密钥交换后以较少的密码登录到其他计算机

    如果由于权限错误而无法
    chown
    chmod
    文件,这是因为拥有比您(root)更多权限的用户将需要帮助您更改文件权限。

    中的解决方案允许您使用
    sudo
    运行脚本,但不需要密码。当你测试它时,你是否使用了
    sudo
    ?@GordonDavisson是的,我用sudo测试过它。然后我必须输入密码才能让它工作。如果没有sude,它就不能正常工作,对受保护的文件也会出现同样的错误。理论上,您可以使用setuid脚本。这就像是把一门上了膛的大炮指向你的房子,希望没有人扣动扳机。@ram我想你复制了sudoers的条目太字面了--“ortega”部分是允许使用该条目的用户名,所以如果那不是你的用户名,它就不会有任何效果。将其更改为运行备份的用户名。如果您没有
    root
    访问权限,那么我认为这是不可能的,我不久前遇到了相同的问题,我使用带有公钥身份验证的
    rsync
    ,并使用
    sudo-I
    以root身份运行所有内容,但它只起作用。当我以root用户身份运行时,它从未提示输入发送权限保护文件的密码。如果您有root访问权限,请尝试此操作。我必须重复执行此操作,这就是为什么我希望自动执行此操作,并且不希望每次都提示输入密码,即使在
    rsync
    之前每次都使用
    chmod
    ,我仍然必须输入密码。有没有办法不用输入密码就可以进行chmod?我想这又回到了这个问题上。我更新了帖子,扩展了
    crontab
    方法,让root定期执行一项需要
    root
    的任务,而
    docker
    方法,老实说,这有点像黑客,但可以作为脚本的一部分,crontab将在satrtup运行任务,我的问题是50毫秒,即定期向特定文件夹添加一个新文件夹,其中包含一个文件,在重新同步时会抛出上述错误。crontab的执行频率可能高达每分钟一个。docker卷装载只是一个命令,可以在任何地方/任何时候执行