我有一个用例,其中 Linux 服务器上的文件夹需要打开其权限,以便我可以使用 sudo 帐户将文件从我的文件夹移动到共享文件夹。然后经常发生的情况是,我不是注销的人(ssh 连接断开),而我的主文件夹权限保持打开状态。我不关心打开的权限,除了当我尝试 ssh 重新登录时,打开的文件夹权限会阻止我的密钥身份验证工作,并且我被迫输入密码。
我想知道是否可以设置一种方法,在退出(正常或以其他方式)ssh 会话时始终将权限设置为 700。或者,如果有一种方法可以在我的主文件夹设置为 777 时使密钥身份验证起作用,那也会有所帮助。
顺便说一句,如果它有帮助,这就是我实际上正在尝试做的事情。我习惯scp
将本地构建的文件.jar
从我的机器移动到 Linux 服务器上的主文件夹。然后,我必须将其.jar
从我的主文件夹移动到可以执行的共享文件夹.jar
。要将其移动.jar
到共享文件夹,我必须使用提供的sudo
帐户,但是,sudo
除非我打开权限,否则该帐户无法访问我的主文件夹。
答案1
使用您评论中的信息,解决方案似乎是解决根本问题,而不是回答您实际提出的问题。
我使用 scp 将本地构建的 .jar 从我的计算机移动到 Linux 服务器上的主文件夹。然后,我必须将该 .jar 从我的主文件夹移动到可以执行该 .jar 的共享文件夹。要将 .jar 移至共享文件夹,我必须使用提供的 sudo 帐户,但是,除非我打开权限,否则该 sudo 帐户无法访问我的主文件夹。
正如您所注意到的,将主目录的权限设置为0777
阻止ssh
工作。这是设计使然。相反,创建一个子目录来包含您的jar
文件并安全地放宽该目录的权限。为你的主目录的组和其他人添加执行权限,以便你的sudo
帐户可以通过它访问目标文件夹:
chmod 711 "$HOME"`
mkdir -m777 "$HOME/subdir"
此时,考虑一个$HOME
可能的例子/home/serge
。现在,尽管ls /home/serge
您的帐户因权限问题而失败sudo
,但它将能够搜索您的主目录并进入子目录ls /home/serge/subdir
。
如果您的sudo
帐户和您自己的帐户在评论中有一个组 - 或者可以安排它们有一个共同的组 - 您可以放宽子目录的组权限:
chmod 710 "$HOME"
chmod 770 "$HOME/subdir"
chgrp {whatever} "$HOME/subdir"
或者,将文件传输到/tmp
(或/var/tmp
) 而不是您的主目录,从而避免整个困难。