
lxc
ホストを設定してコンテナを構成するスクリプトを作成しています。このスクリプトを無人で使用したいです。コンテナを作成して実行した後、時々ユーザーとしてログインしますsudo
。残りの唯一のことは、私がそれをできることを確認することですsudo
。
無効にしたくありませんsudo
。ユーザーが実際にパスワードを入力したときに何が起こるのかを模倣したいだけです。
これまで私は次のことをしました。
if [ ! -d /var/lib/lxc/$puppetmastername/rootfs/var/lib/sudo/$user ]; then
sudo mkdir /var/lib/lxc/$puppetmastername/rootfs/var/lib/sudo/$user
fi
sudo touch /var/lib/lxc/$puppetmastername/rootfs/var/lib/sudo/$user/0
sudo grep '!tty_tickets' /etc/sudoers
if [ $? -ne 0 ]; then
echo 'Defaults !tty_tickets' >>/var/lib/lxc/puppetmaster/rootfs/etc/sudoers
fi
残念ながら、これだけでは十分ではありません。コンテナにはまだパスワードが必要です。
答え1
ファイルを編集し/etc/sudoers
、ユーザーにパスワードなしでrootとして特定のプログラムを実行する権限を付与する必要があります。
yourusername ALL = (root) NOPASSWD: /path/to/prog1, /path/to/prog2, ...
あなたの場合は、次のことを試すことができます。
myusername ALL = (root) NOPASSWD: /bin/mkdir, /usr/bin/touch, /bin/grep
NOPASSWD
その項目がユーザーと一致する最後の項目であることを確認する必要があります。項目の 2 つが/etc/sudoers
ユーザーと一致する場合は、NOPASSWD
その項目の後にルールが続く必要があります。