{{ cat }}'s docs

6.3.0: 用户-su/sudo


命令:su
作用:切换effective用户,会改变HOME变量
语法:
"su [参数] 用户名"
参数:

  • -,-l,--login 会改变PATH变量

用法举例:

# "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 指定命令执行时的用户身份
  • -c 后面跟需要执行的命令字符串(-c参数使用方法:sudo sh -c "cmd")
    # 参数"-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.

Contents