命令:su
作用:切换effective用户,会改变HOME变量
语法:
"su [参数] 用户名"
参数:
用法举例:
# "su username"与"su - username"的区别
# root用户下查看系统变量
echo -e "$HOME\n$PATH"
/root
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/py27/bin:/root/bin
pwd
/root
whoami
root
who am i
root pts/0 2016-04-27 23:35 (10.10.230.14)
# su su-test查看系统变量
su su-test
echo -e "$HOME\n$PATH"
/home/su-test
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/py27/bin:/root/bin
pwd
/root
whoami
su-test
who am i
root pts/0 2016-04-27 23:35 (10.10.230.14)
# 结论:
# $HOME变化
# $PATH不变
# 当前工作目录不变
# effective user变化(whoami查看出来的结果)
# 登录用户不变(who am i查看出来的结果)
# su - su-test查看系统变量
su - su-test
echo -e "$HOME\n$PATH"
/home/su-test
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/py27/bin:/home/su-test/bin
pwd
/home/su-test
whoami
su-test
who am i
root pts/0 2016-04-27 23:35 (10.10.230.14)
# 结论:
# $HOME变化
# $PATH变化
# 当前工作目录变化
# effective user变化(whoami查看出来的结果)
# 登录用户不变(who am i查看出来的结果)
命令:sudo
作用:临时获得root权限(su到root需要输入root的密码不安全,所以sudo是个好选择)
安装方法: yum install -y sudo
语法:sudo 正常命令输入
参数:
# 参数"-u"用法举例,用无法登录的sshd用户创建文件
su sshd
This account is currently not available.
cat /etc/passwd|grep sshd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
sudo -u sshd touch /tmp/mysshd
ll /tmp/mysshd
-rw-r--r--. 1 sshd sshd 0 Apr 28 03:10 /tmp/mysshd
# 参数"-c"用法举例,执行多条命令
sudo -u sshd sh -c "mkdir /tmp/tsshd; echo 'good'>/tmp/tsshd/tsshd.txt"
cat /tmp/tsshd/tsshd.txt
good
配置文件:
/etc/sudoers
修改配置文件命令:
visudo
使用此命令编辑会在保存后检查语法 使用此命令编辑会更加保证此文件安全,只会同时让一人编辑此文件
配置语法:
user_name host_allowed=(as_user) commands
意为该user_name在被允许的host_allowed上可以作为as_user的身份,执行commands这些命令
用法举例:
# 切换到test用户,尝试给su-test修改密码
su test
passwd su-test
passwd: Only root can specify a user name.
# 切换回root用户,执行visudo给test分配passwd的使用权限
visudo
*********************************************
# 添加如下内容
test ALL=(root) /usr/bin/passwd
*********************************************
# 切换到test用户,用sudo尝试给su-test修改密码
su - test
sudo passwd su-test
[sudo] password for test:
Changing password for user su-test.
New password:
BAD PASSWORD: it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.