20 Nov 2014
命令: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 指定命令执行时的用户身份
-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.