sudo
execute a command as another user
以前学过的要转换用户身份做一个事情的方法有:
1,
suid可以在执行一个命令转换身份
2,
su - user1 <<EOF
touch 123
exit
EOF
3,
su - user1 -c "touch 456"
管理员有root的密码,在管理时也不用root用户,而用一个普通用户(为了安全,防止用root做误操作)。但是普通用户并没有所有的权限,所以可以在root对这个普通用户授权,让它能够做root能做的事情).
用处1:用于管理员给只有普通用户密码的助理工程师授于一些相应命令权限,但root密码却不给助理工程师的情形。
网络路由管理:张三
服务管理:李四
磁盘存储管理:王五
进程管理:马六
软件包管理:田七
......
用处2:很多公司要求root管理员为了防止误操作,不用root,而用普通用户(sudo授于你所需要的命令权限,但对于很危险的操作,如init等就不授权)sudo来操作
例1:root授于普通用户abc所有的操作权限
# vim /etc/sudoers
91 root ALL=(ALL) ALL
92 abc ALL=(ALL) ALL --加上这一句表示把所有的相关权限给abc用户
# su - abc
$ touch /root/abc --abc不允许在root家目录创建文件
touch: cannot touch `/root/abc': Permission denied
$ sudo touch /root/abc --命令前加sudo,第一次使用sudo,会有下面的一段话
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for abc: --输入的是abc的密码,而不是root的密码,就可以成功创建
$ sudo ls -l /root/abc --再次用sudo就不需要输入密码了,也可以看到其实还是用的root的身份
-rw-r--r-- 1 root root 0 Nov 7 09:59 /root/abc
例2:授于普通用户abc部分权限
# vim /etc/sudoers
Cmnd_Alias SERVICES = /usr/bin/systemctl restart sshd,/usr/bin/systemctl restart httpd
root ALL=(ALL) ALL
abc ALL=SERVICES
测试,abc用户使用sudo,只能restart sshd服务和httpd服务
改成如下
Cmnd_Alias SERVICES = /usr/bin/systemctl * sshd,/usr/bin/systemctl restart *
表示可以对sshd做start,stop,status,enable,disable等所有操作
可以restart后接任何服务
-----------------------------------------------------------------------------------------------
尝试安装下面的软件
笔记目录下/arch/safedog_linux64.tar.gz
安装方法,解压,然后cd到解压目录,执行install.py文件进行安装
# /etc/init.d/safedog restart
# systemctl restart safedog
# sdui