su命令
此命令主要用于用户切换
1. 如果要切换到root角色,需要使用 su - 命令, 单纯的使用 su 命令会导致很多环境变量没有修改.
2. 如果想切换到root命令执行单个命令可以加上-c参数,比如:
su - -c "head -n /etc/shadow"
就可以用root角色执行一次head 命令.
sudo 命令
可以切换身份执行某些命令
1. sudo -u sshd touch /tmp/mysshd 用 sshd 用户执行 touch 命令 (sshd 是无法登陆的系统账号,所以我们可以使用sudo来用sshd身份执行某些命令而不用登陆)
2. sudo -u sshd -c "touch /tmp/mysshd;rm -rf /tmp/mysshd" 加上 -c 参数可以执行多行命令.
3. root 执行 sudo 不需要输入密码, 其他用户需要输入密码后才能使用个sudo命令.
4. /etc/sudoers 里面包含的用户才可以使用sudo命令, 需要用visudo来修改 /etc/sudoers.
5. 在visudo 的第 58行添加
lishuaiqi ALL=(ALL) ALL 后就可以执行sudo 执行root命令.
在前面加上%表示用户组.该用户组的所有用户都可以使用sudo命令
如果加上NOPASSWD: ALL 就可以不用输入密码执行sudo.
我们可以通过加上!来限制用户使用哪些命令
比如我给pro1设置了
!/usr/bin/passwd !/usr/bin/passwd root
那么pro1这个用户就不能执行 sudo passwd 这个命令来修改root的密码如果执行别的命令会报下面的错误
6. 我们可以在visudo 中给用户和命令起一个别名,这样便于统一管理
User_Alias Cmnd_Alias 这样就把pro1的权限设置成了下面的命令.