(转)由su和su -的区别谈学习linux运维方法
由su和su -的区别谈学习linux运维方法
原文:http://blog.51cto.com/oldboy/1053606
由su和su -的区别谈学习linux运维方法一例
老男孩Linux培训新班刚开始,老男孩发现群里就在讨论这个su和su -的区别,有的同学们说,直接su就可以,有的说必须要su -。有的同学直接发问,到底su和su -有什么区别?
1授之以“鱼”的答案
6.6.1.3 su命令实例
当不加任何参数执行su命令时,表示要切换到root用户,但这样执行,会遇到一些问题。因为虽然是切换到root用户了,但并没有改变为root用户登录环境,用户默认的登录环境,可以在/etc/passwd 中查得到,包括家目录,shell类型等。比较规范的操作方法是”su -“。见下面的实例。
实例1:由普通用户oldboy切换到root用户
[oldboy@oldboy ~]$ whoami #→确认当前用户为oldboy
oldboy
[oldboy@oldboy ~]$ su #→不加用户就表示切到root用户。当然也可以使用su root。
Password: #→这里当然就是root用户的密码了。
[root@oldboy oldboy]# env
HOSTNAME=oldboy
USER=oldboy
MAIL=/var/spool/mail/oldboy
PWD=/home/oldboy
HOME=/root
LOGNAME=oldboy
...省略部分无关内容...
#→细心的读者应该已经看到了,如果使用su而不加上“-”这个参数,那么,切换前的用户的相关信息还会存在,这会引起很多麻烦,甚至会出现意想不到的结果。因此,切换用户时,最好是 “su - 用户名”。这是生产场景中标准的切换用户的操作方法。
[root@oldboy oldboy]# exit #→退出当前用户,这个命令也可以用ctrl+d快捷键命令替代。
[oldboy@oldboy ~]$ su - #→带上“-”参数做切换,也可用su - root命令。这是生产场景中的标准操作方法。
Password:
[root@oldboy ~]# env|egrep "USER|MAIL|PWD|LOGNAME" #→切换后的环境变量信息结果。使用egrep过滤包含想查看的字符串的行。
USER=root
MAIL=/var/spool/mail/root
PWD=/root
LOGNAME=root
#→这次和上次就不同了,所有的环境变量信息都切换到了root下。因此,请大家在切换用户时一定要加上“su - 用户名”,这里提醒下,不光是切到root呦,切换到其他用户也是一样,呵呵。
su命令总结:
1)普通用户切换到root用户,可使用su -或su - root。必须输入root密码才能完成切换。
2)root用户切换到普通用户,可使用“su - 普通用户名”的写法。不需要输入任何密码就能完成切换。切换到普通用户后,在执行一些命令如ifconfig时,可能会遭遇到环境变量PATH路径问题而找不到某些系统命令(一般是/sbin,/usr/sbin等下面的命令),这时就需要将普通用户的PATH,配置成root的PATH内容,前面的文章已讲解过这个配置方法,不清楚的读者,可以翻阅下。
3)如果仅希望在某用户下执行命令,而不直接切换到该用户下操作,可以使用 su - 用户名 -c "命令"的方式,-c指定用户身份执行任务。
企业案例如下:
####分用户方案启动服务命令####
su - wasadmin -c '/bin/sh /home/wasadmin/bin/deploy.sh'
上文摘录于老男孩Linux培训讲课与出书教案笔记部分。
老男孩评论:虽然这样给同学们讲解不错,但这依然是授之以鱼的讲解方式,学生必须要意识到自己如何能获取到这样的知识,而不是轻易去问老师获得,只有学会了学习方法与自学能力才是学习Linux运维比较高的境界,也是未来发展之道。
2授之以“渔”的答案
1)可以去搜索引擎搜索,然后根据说的去实践下,最后别忘了总结。
这个算是“渔”,但还不彻底,即不是学习Linux运维的优秀思想,但是很多初学者默认就会这样(但搜索的技能缺乏很多),所以,这条路也算可以吧,但最好还是下面的思想。
2)要了解su和su -的区别,其实就是要知道su -的作用就可以了,su -这样的命令显然,-是su的参数,因此,完全可以man su或者su --help获取到你想要的答案,然后,在辅助上面教案的提示去实践敲一下体会下(别忘了总结好笔记)。
man su或者su --help的如下:
su 参数选项 |
注释说明(带※的表示重要,需要掌握) |
-, -l, --login |
make the shell a login shell #→※使一个shell成为登陆的shell,如执行su - oldboy 时,表示该用户想改变身份为 oldboy,并且使用oldboy用户的环境变量配置,如:/home/oldboy/.bash_profile等。 |
[oldboy@student ~]$ su --help
Usage: su [OPTION]... [-] [USER [ARG]...]
Change the effective user id and group id to that of USER.
-, -l, --login make the shell a login shell
…省略部分…
[oldboy@student ~]$ man su
NAME
su - run a shell with substitute user and group IDs
SYNOPSIS
su [OPTION]... [-] [USER [ARG]...]
DESCRIPTION
Change the effective user id and group id to that of USER.
-, -l, --login
make the shell a login shell
…省略部分…
实践的过程非常重要,见上文。
拓展:在举个例子就是老男孩曾经发布在博客的考试题
1.如何取得/etiantian文件的权限对应的数字内容,如-rw-r--r-- 为644,要求使用命令取得644这样的数字。
解答如下:
http://oldboy.blog.51cto.com/2561410/791638
这道题就是一个很好的培养学习思维和自学能力的例子。其中的当命令结果包含我们需要的内容的时候,我们要想到此命令是否有具体的参数能够一步达到我们需要的结果。
重视学习方法的学习,才是学好Linux运维之道,这也是老男孩写博客时很少发表一些服务的部署过程给大家或者具体的业务脚本,因为,老男孩觉得这些都是授之以“鱼”的方法,应尽可能避免或者一定要多种方法结合,完全授之以“鱼”作用比较小。所以,“渔”的过程基本是在老男孩给学生留的课后作业部分完成的,老男孩讲“渔”,同学们给老师“鱼”。
补充一个老男孩课后要求大家上交捕的“鱼”:
提示:既然同学们学会捕鱼的技巧了,就要让老男孩看到鱼:下面是要求大家上交的捕的鱼:
老男孩培训第15次讲课课后shell作业:
(面授班按个人分配的总结,网络班全部都编写)
请全体同学务必完成,捕鱼的技巧不是老男孩讲了你们就会的,必须要多次的实践才能掌握,同学们加油,有不会的问题课后群内讨论或者找导师咨询。
1)lnmp一键安装脚本<==zhengdong
要求:linux centos5.8,nginx1.3.4,mysql5.5.27,php5.3.17
2)linux系统一键优化脚本<==chenya
3)lamp一键安装脚本<==zhangji
4)rsync,sersync,inotify一键安装及配置脚本<==sanyapen
5)mysql多实例安装及备份脚本<==zhangxian
6)apache,nginx,mysql,rsync的服务检测监控脚本<==yanggongwan
7)mysql主从同步一键实现脚本<==fengyiwe
8)lamp一键安装脚本<==lifen
(转)由su和su -的区别谈学习linux运维方法的更多相关文章
- Linux运维:CentOS6和7的区别
Liunx笔记:CentOS6和CentOS7的区别 路飞学城运维人员 在线流程图软件 Ago linux运维群: 93324526 笔者QQ:578843228 常用安装包下载 yum instal ...
- 网络工程师和Linux运维工程师有什么区别?学哪个比较好?
网络工程师和Linux运维工程师有什么区别?学哪个比较好? 机缘巧合下,我进入了一家从事vpn与系统集成的公司,很感谢公司能留下我这个非网络工程专业的毕业生,从对网络一窍不通,慢慢可以自己独立完成工作 ...
- 从谷歌CRE谈起,运维如何培养服务意识?
从谷歌CRE谈起,运维如何培养服务意识? 2016年10月,谷歌云平台博客(Google Cloud Platform Blog)上更新了一篇文章,谷歌宣布了一个新的专业岗位,CRE(Customer ...
- Linux运维之——每日小技巧,谈进程与线程的区别
线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源. ...
- Linux运维之--LVS、Nginx、HAproxy有什么区别?
LVS: 是基于四层的转发 HAproxy: 是基于四层和七层的转发,是专业的代理服务器 Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发 区别: LVS由于是基于四层的 ...
- 文科生细谈学习Linux系统的重要性
首先大概介绍下自己,我学的是公共事业管理方面的专业,可以说是面向纯理论,社区管理社会管理的专业,但是从大二开始,对网络及服务器运维方面产生浓厚兴趣,并不断在网上找相关资料. 在这期间经历过很多,单说桌 ...
- su和su - 的区别
Linux中切换用户的命令是su或su -.前天我在使用useradd这个命令时,才体会到这两者的本质区别.如图: 我首先是用su命令切换到root身份的,但是运行useradd时,出现错误:bash ...
- shell切换用户执行后面语句 su与su -的区别
关于su和su -的区别,切换用户是可以使用su tom或者su - tom来实现,但是两者有区别,su只是切换身份,但shell环境仍然是原用户的shell,su -是连用户的shell环境一起切换 ...
- Linux下su与su -命令的区别
在启动服务器ntpd服务时遇到一个问题 使用 su root 切换到root用户后,不可以使用service命令: 使用 su - 后,就可以使用service命令了. 原因: su命令和su -命令 ...
随机推荐
- GSM/GPRS操作示例
A6(GPRS) 博文转自安信科技: http://wiki.ai-thinker.com/gprs/examples 1.电话接收 相关指令 ATDxxxxx;//xxx为电话号码 示例 打电话 ...
- C++ ORM ODB入门
1.ORM ORM, Object Relational Mapping, 对象关系映射,用来将基于对象的数据结构映射到SQL的数据结构中.即将基于对象的数据映射到关系表中的字段,然后我们可以通过对象 ...
- Python知识点: __import__
用法:libvirt = __import__('libvirt') help(__import__) __import__(...) __import__(name, globals={}, ...
- ComboBox设置Text属性
WPF ComboBox 控件设置 Text属性时 必须将 IsEditable="true" 才能显示
- javascript基础之回调函数
简单来说,回调函数:也就是将要执行的函数. 回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A.我们就说函数A叫做回调函数.如果没有名称(函数表达式),就叫 ...
- css菜鸟之HTML 中块级元素设置 height:100% 的实现
HTML 中块级元素设置 height:100% 的实现 当你设置一个页面元素的高度(height)为100%时,期望这样元素能撑满整个浏览器窗口的高度,但大多数情况下,这样的做法没有任何效果. 为什 ...
- 判断页面是在pc端打开还是在移动端打开
在项目开发中会遇到在不同的设备中打开页面是不同的,比如: 我在手机中打开一个网站和pc打开一个网站,页面是不同的 具体实施如下 //判断打开网站的终端 var ua = window.navigato ...
- BluetoothGetRadioInfo 函数
DWORD BluetoothGetRadioInfo( HANDLE hRadio, PBLUETOOTH_RADIO_INFO pRadioInfo );获取蓝牙设备的信息.参数: hRadio ...
- position应用之相对父元素的定位
分别添加以下style即可: 父元素position:relative; 子元素position:absolute; right:0px; bottom:0px;
- CentOS 7 配置 samba服务器
一.在服务器端上安装软件并进行相关配置(以下操作需用用户root进行): 1.安装samba: yum -y install samba samba-client 2.启动服务并设置开机启动: sys ...