sudo -u 和 su -c 之间的区别

sudo -u 和 su -c 之间的区别

以下命令从具有 sudo 权限的帐户执行:

tomcat我有一个使用以下命令创建的用户

sudo useradd -g tomcat -d /usr/local/tomcat -m -s /bin/false tomcat

我还test使用以下命令创建了一个用户

sudo adduser test

我有一个文件夹,并且该文件夹上设置了temp权限777

chmod 777 temp

以下是我的观察:

## This works and I can see temp/a.txt being created
sudo -u tomcat touch temp/a.txt 

## Does not work. 
sudo su -c "touch temp/b.txt" tomcat

## works
sudo -u test touch temp/c.txt

## works
sudo su -c "touch temp/d.txt" test

所以我的问题是 tomcat 用户到底出了什么问题?

答案1

tomcat 的 shell 是 /bin/false,你可以用 su - as 运行

sudo su -s /bin/bash -c "touch temp/b.txt" tomcat

相关内容