Linux使用nologin用户执行命令
发表于|更新于|基础运维
我们知道可以通过编辑
/etc/passwd给某些用户设置 shell 为nologin或false可以阻止这些用户登录
但某些时候需要特定的用户来执行命令,可以使用 sudo 或 su 来临时切换用户执行
使用 su
su -s 是指定 shell,这里 www 用户默认 shell 是 nologin 这里指定使用 /bin/bash, -c 后面接需要运行的命令
1 | su www -s /bin/bash -c "mkdir /tmp/111" |
使用 sudo
使用 www 用户来执行 mkdir /tmp/111
1 | sudo -u www mkdir /tmp/111 |
文章作者: 张理坤
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 杂烩饭!
相关推荐
2026-07-14
linux用户管理
增加用户useradd [选项] 用户名 选项 说明 -g 指定用户的用户主组,(查看用户属于哪个组直接从 passwd 文件查看) -G 指定用户的附加组 (查看用户属于哪个附加组直接从 group 文件查看) -u 指定用户 ID,即指定用户标识符 ((ID 是唯一的),不想使用系统默认指定的 ID 则可以使用 -u 指定 ID,默认 Centos6.x500 之后递增,Centos7.x 从 1000 之后递增 -d 自定义用户的家目录,不要系统默认创建的家目录 -m 创建用户的家目录 -M 不创建家目录 -c 备注信息,可写可不写 -s 指定用户登录的 shell,不写默认是/bin/sh,通常会给程序创建一个不允许登陆的账号 -s /sbin/nologin 或 -s /bin/false -r 创建一个系统账号,centos7 系统账号的 UID 是从 1-999 之间的,centos6 是从 1-499 之间的 常用格式: 修改用户信息usermo...
2025-01-07
常用shell组合命令
循环遍历{1..3} 这种格式 seq for 循环 while 循环 遍历列表 这个 list 也可以写成 list=(a b c) 这种形式 遍历换行字符串 条件判断shell条件判断 脚本里的交互命令修改密码 自动执行 fdisk 删除文件只保留最近 20 个 jar 版本 写入文件不处理变量 这样的可以处理变量 使用 sudo 写入 写入内容控制台看得见 tee -a 为追加, tee 前面可以加 sudo 或者 运行 5s 自动退出 脚本里获取目录或名字脚本里获取路径这种方法可能是绝对路径,也可能是相对路径: 绝对路径 脚本里获取脚本文件名 $0 在 bash 里表示执行脚本的命令,如 ./xx.sh 或 /opt/xxx.sh 批量启动服务 判断里面有变量,用双中括号 sudo 执行命令举个例子 截取文件名或路径名 去除字符串中间的空格 输入 yes 或 no 执行不同的选项 获取网卡 IP 获取网卡设备名 获取当前目录下的所有目录 使用 shell 生成随机 MAC 地址 以禁止登录的用户执...
2026-07-14
Linux终端复用器Screen和tmux
参考阮一峰的博客https://www.ruanyifeng.com/blog/2019/10/tmux.html 作用想象一下, 我在自己电脑远程 SSH 连接服务器, 正在命令行执行 mysqldump, 突然 (断网\电脑蓝屏) 了, 那么终端就断了, mysqldump 也就断了, 就需要重新来过. 终端复用器就是创建一个虚拟的终端, 可以挂在后台, 随时想进就进, 还有其他好用的功能, 比如将终端日志保存到文件内. 常用的工具有 tmux 和 screen, tmux 类似于 screen, 但是功能更强大, screen 的记录日志功能很好用, 两者各有千秋. 另外终端复用器对 rz/sz 这种工具的兼容性都不好, 建议不要用来进行 rz/sz 传文件 tmux安装 快速使用输入 tmux 即可启动, 在终端下面有一条状态栏, 显示当前的终端编号. 退出输入: exit 或者按下 Ctrl + d 或者直接关闭窗口查看后台运行的会话: tmux ls进入会话: tmux a -t 0 常用操作 操作 命令或快捷键 打开 tmux tmux 新建 tmu...
2026-07-14
Bash中双横线的作用
看个例子: 假设有个文件叫 -f, 我想把这个文件删除假设我要用 rm -f -f 来删除,会发现无法删除,bash 把第二个 -f 当作参数了 这个时候可以使用 --(当然有其他方法,这里先不讨论) 这里的 -- 表示这个程序的参数已经结束了,后面所有的内容都是参数的值了,比如第二个 -f 就不会认为它是 rm 的参数了 现在使用 kubectl exec 也会推荐你用 – 后面再接上命令
2026-07-14
linux磁盘扩容(非LVM)
LVM 是 Logical Volume Manager 的缩写,中文逻辑卷管理,LVM 是建立在磁盘分区和文件系统之间的一个逻辑层,LVM 会更加灵活,可以动态扩容缩容分区大小。调整分区大小有风险,请做好充分测试再决定是否执行。如果启用了 lvm,请查看 LVM逻辑卷管理那么怎么知道机器有没有启用 LVM 呢,可以执行 sudo lvdisplay 查看有没有已存在的 LV,lsblk 查看现有的文件系统有没有 LVM 网上查到的方法都是使用 fdisk 删除分区后再重新创建, 这种方式会有安全问题, 而 growpart 命令是安全的. 扩容器查看容量大小 如果你要扩容的路径对应的 Filesystem 不是 /dev/sdx 请不要看这篇文章 先增加硬盘容量 需要 growpart 命令, 没有请安装 Ubuntu和DebianCentOS和Fedora 执行 growpart 命令 最后调整文件系统大小ext文件系统xfs文件系统RHEL在早期的 RHEL 中,由于 resize2fs 无在线 resize 功能,故额外提供了 ext2online。
2026-07-14
Kubeadm之单节点master升级高可用master
单节点升级 master 总体来说就是两步, 先修改 apiserver 地址为负载均衡地址,然后添加新的 master 节点。 搭建集群的时候我们注意一下就可以减少后期维护的烦恼,比如: 使用 hostname 而不是 ip 来作为 kube-apiserver 地址 单节点也把负载均衡安排上 假设已经有一个没有负载均衡的单节点 master,现在想将它切换为高可用集群,记录以下步骤: 部署负载均衡参考 Kubernetes之master高可用方案 更新证书 因为我们部署了负载均衡,所以需要通过负载均衡的地址来访问 apiserver,因为证书是针对域名或者 ip 做的签名,如果 ip 变了证书就失效了,这也是为什么建议使用 hostname 来代替 ip 如果你是用 kubeadm init 来创建的集群,那么你需要导出一个 kubeadm 配置 添加证书 SANs 信息 生成新的证书备份旧证书 生成新的证书 验证证书,确定包含新添加的 SAN 列表 重启 apiserver 保存新的配置这步操作其实是把 kubeadm 的配置给保存在集群中, 以...
公告
此博客为我记录运维工作总结所用,供网友阅读参考,如有侵权,请通知我,我会核实后进行处理。
欢迎加博主微信,进微信运维技术交流群:

