在我们写shell脚本,每当想创建目录或文件时,经常会遇见权限不足的问题,用sudo命令每次又要输入密码.那我们该怎么办呢?
方法一:给用户权限,既然你权限不足那我就给你权限. 优点:简单直接
# 用管理员权限编辑 /etc/sudoers 文件
vim /etc/sudoers
#在文件中添加如下内容
用户名称 ALL=(ALL) NOPASSWD: /bin/mkdir #表示用户拥有所有sudo创建目录的权限且不用输入密码
用户名称 ALL=(ALL) NOPASSWD: /bin/touch #表示用户拥有所有sudo创建文件的权限且不用输入密码
方法二:使用expect,优点:所以用户都可以用 缺点:因为他会把密码写在脚本中,所以不安全,可以把该脚本设置部分人能查看权限
#!/usr/bin/expect -f
# 设置超时时间(秒)
set timeout 30
# 启动 sudo 命令
spawn sudo mkdir -p /path/to/new_directory
# 期望 "password" 提示并发送密码
expect {
"*?assword:*" { send "你的密码\r" }
# 如果没有密码提示,则认为命令成功执行
timeout { puts "No password prompt, command executed successfully." }
}
# 等待命令完成
expect eof