初级运维-su及sudo命令详解

2012年03月18日 其他 评论 1 条 阅读 8,844 views 次

4.0用户切换命令su及sudo命令详解 su 用户直接相互切换命令,相互切换需要输入所切换用户的密码,管理员除外 sudo 可执行其他用户的所能执行的命令,sudo还可以为一条命令对用户授权 在生产环境下一般使用普通用户,只有在必要时才使用root用户 4.1su用户切换命令 当前用户没有权限执行某个命令或文件时,切换到相关权限用户,使用su命令可切换到任意用户

su [OPTION]... [-] [USER [ARG]...]

-,l,login 三个参数作用相同,一个用户shell成为登录的shell(常用)

-c 切换到一个shell下,执行一个名,然后退出(常用)

su实例

1、su不加-参数和加-参数的区别实例

使用su不加任何参数,默认是切换到root用户,不变环境变量

使用su – 普通用户切换到root用户,改变环境变量

在生产环境中是需要加参数-

(1)su不加参数

[xu@localhost ~]$ su

Password: 

[root@localhost xu]# env |egrep "HOSTNAME|MAIL|PWD|LOGNAME" 查看pwd等环境变量

HOSTNAME=localhost.localdomain

MAIL=/var/spool/mail/xu

PWD=/home/xu

LOGNAME=xu

使用su不加任何参数,切换到root用户,但是环境变量还是xu用户的
(2)su加参数-

[xu@localhost ~]$ su -

Password: 

[root@localhost ~]# env |grep -E "HOSTNAME|MAIL|PWD|LOGNAME"

HOSTNAME=localhost.localdomain

MAIL=/var/spool/mail/root

PWD=/root

LOGNAME=root

加上-参数后,使用的root用户的环境变量

总结:每个用户的login shell有四个文件和一个目录分别是

/etc/profile 全局用户环境变量

/etc/bashrc

/etc/bashrc.d/

~/.bash_profile

~/.bashrc

[root@localhost ~]# echo "echo /etc/profile" >> /etc/profile

[root@localhost ~]# echo "echo /etc/bashrc" >> /etc/bashrc 

[root@localhost ~]# echo "echo ~/.bash_profile" >> ~/.bash_profile 

[root@localhost ~]# echo "echo ~/.bashrc" >> ~/.bashrc

首先,往login shell四个文件中分别添加此路径

[xu@localhost ~]$ su 

Password: 

/etc/bashrc

/root/.bashrc

[root@localhost xu]# exit

Exit

当不使用-参数时,只加载/etc/bashrc和当前用户家目录~/.bashrc没有加载全局环境变量

[xu@localhost ~]$ su -

Password: 

/etc/profile

/etc/bashrc

/root/.bashrc

/root/.bash_profile

当使用-参数,加载所有的环境变量,在生产环境中,很少使用不加-参数,加载环境变量的顺序是/etc/profile--/etc/bashrc--/root/.bashrc--/root/.bash_profile

2、普通用户切换到管理员账号

(1)后面可以不加root用户名,默认是切换到管理员用户

[xu@localhost ~]$ su - 

Password: 

[root@localhost ~]#

(2) 后面加root用户名

[xu@localhost ~]$ su - root

Password: 

[root@localhost ~]#

3、root用户切换到普通用户

[root@localhost ~]# su - xu

[xu@localhost ~]$

管理员用户切换到普通用户是不需要密码的,因为root用户拥有最高权限

4、使用su在用户下执行命令

[xu@localhost ~]$ su - -c "touch /tmp/sutest"

Password: 

[xu@localhost ~]$ ll /tmp/sutest 

-rw-r--r-- 1 root root 0 Mar 10 00:12 /tmp/sutest 属主属组都是root用户

千万注意在-c参数后面所执行的命令要加双引号,经常犯得毛病,在此记录一下

执行过程:

普通用户登录到root用户执行touch /tmp/sutest后退出到普通用户

5、su命令的优缺点

优点:操作简单,方便管理linux系统,每个普通用户都能切换到root执行

缺点:每个普通用户都能登陆到root用户,并能改掉root密码,如果在root下有误操作都可能导致系统崩溃或数据损失

在生产环境中,我们为了安全起见,一般会使用普通用户来启动服务进程(如apache,nginx,resin,tomcat等)

$ps -ef |grep tddoc

把脚本放入到/etc/rc.local

su - tddoc -c '/bin/sh /home/tddoc/bin/deploy.sh'

不是直接使用root用户来启动,系统相对安全了

4.2sudo 授权命令

sudo相比su而言,相对安全些,它不需要登录到root下去执行一些操作,而是root用户授权给普通用户权限去执行一些指令

1 条留言  访客:1 条  博主:0 条

  1. 来看 看 虽然没看懂。。。

给我留言

Copyright © 羽飞博客 保留所有权利.   Ality主题 皖ICP备14013844号-1

用户登录