最近內部風險整改, 各種進程使用root身份進行啟動不符合要求, 於是各路神仙各施其法,為的就是讓 某進程不以root 啟動: 先以 redis 為例: 原有進程如下: #超一流標準的執行文件位置及配置文件位置 root 9602 1 0 23:25 ? 00:00:00 /usr/bin/redi ...
最近內部風險整改, 各種進程使用root身份進行啟動不符合要求,
於是各路神仙各施其法,為的就是讓 某進程不以root 啟動:
先以 redis 為例:
原有進程如下:
#超一流標準的執行文件位置及配置文件位置
root 9602 1 0 23:25 ? 00:00:00 /usr/bin/redis-server /etc/redis/redis.conf
於是有了以下操作:
一 、簡單直接類
# kill -9 9602
# su redis
This account is currently not available
# usermod -s /bin/bash
# su redis
# /usr/bin/redis-server /etc/redis/redis.conf
於是redis由一個非登錄用戶變成了一個登陸用戶,而且下次開機還是要手動啟動一次進程。。
二、開機啟動類
# echo 'su -c "/usr/bin/redis-server /etc/redis/redis.conf" redis ' >> /etc/rc.local
測試了一下
# /bin/bash /etc/rc.local
This account is currently not available
# vi /etc/rc.local
把redis改為了 newuser
# useradd newuser
# /bin/bash /etc/rc.local
於是服務開機啟動設置成功,但redis被棄用了。。
三 、 服務設置類 (推薦)
# echo '
[Unit]
Description=redis daemon
[Service]
Type=forking
#這個是配置啟動用戶
User=redis
ExecStart= /usr/bin/redis-server /etc/redis/redis.conf
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
' > /usr/lib/systemd/system/redisd.service
# chown -R redis /var/log/redis/ (日誌文件redis需要有讀寫許可權,具體日誌文件位置不細說 我的就當作放在這裡)
# systemctl start redisd
# systemctl enable redisd
Created symlink from /etc/systemd/system/multi-user.target.wants/redisd.service to /usr/lib/systemd/system/redisd.service
# ps -ef|grep redisd
redis 10175 1 0 23:52 ? 00:00:00 /usr/bin/redis-server *:6379
設置成了服務自啟動,還是以redis用戶啟動了,是不是很高大上?