首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在/tmp Ubuntu22.04上执行"exec“时拒绝的权限

问在/tmp Ubuntu22.04上执行"exec“时拒绝的权限
EN

Ask Ubuntu用户
提问于 2022-09-28 11:39:56
回答 1查看 1.6K关注 0票数 0

我有下面的脚本,它对Ubuntu18.04很好

代码语言:javascript
复制
#!/bin/bash
set -euo pipefail
# This form is convenient for locking a file without spawning a
# subprocess. The shell opens the lock file for reading and
# writing as file descriptor 9, then flock is used to lock the
# descriptor.
# Source: https://man7.org/linux/man-pages/man1/flock.1.html
ansible_path="/tmp/ansible-pull.lck"
touch -a $ansible_path
chown ubuntu:ubuntu $ansible_path
exec 9<>$ansible_path
flock -n 9

当我在Ubuntu22.04上执行脚本时,我得到了错误

代码语言:javascript
复制
sudo ./deploy.sh
./deploy.sh: line 11: /tmp/ansible-pull.lck: Permission denied

错误行是:exec 9<>$ansible_path。我认为这是/tmp文件夹的问题所在,因为将ansible_path更改为/var/ansible-pull.lck使其工作。但我不知道/tmp有什么问题,因为它没有装入任何文件系统

代码语言:javascript
复制
mount |grep tmp
devtmpfs on /dev type devtmpfs (rw,relatime,size=475076k,nr_inodes=118769,mode=755,inode64)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,inode64)
tmpfs on /run type tmpfs (rw,nosuid,nodev,size=192760k,nr_inodes=819200,mode=755,inode64)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k,inode64)
tmpfs on /run/snapd/ns type tmpfs (rw,nosuid,nodev,size=192760k,nr_inodes=819200,mode=755,inode64)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=96376k,nr_inodes=24094,mode=700,uid=1000,gid=1000,inode64)

在18.04和22.04之间的/tmp目录上可能有什么不同吗?

EN

回答 1

Ask Ubuntu用户

发布于 2022-09-28 11:54:16

默认情况下,/tmp目录上有粘性位。这意味着,只有该目录中文件的所有者才能修改它们。

由于您要将所有者更改为ubuntu,那么无论谁试图编辑该文件,都会得到一个权限被拒绝的错误,甚至是root用户。

在你的情况下你有几种选择。

  1. 删除chown ubuntu:ubuntu $ansible_path行。
  2. 从/tmp中删除粘性位(不推荐!)。
  3. 在/tmp中创建一个目录并在该目录中创建文件

参考文献:在/tmp中拒绝许可

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1432705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档