0

0

[20170705]理解linux su命令.txt

PHP中文网

PHP中文网

发布时间:2017-07-05 18:16:15

|

1983人浏览过

|

来源于php中文网

原创

[20170705]理解linux su命令.txt

--//我一般在维护时经常使用root用户登录,然后su - oracle 转到其他用户操作
--//一般都加入 - 参数.这个已经成了条件反射...^_^.

# man su       
change the effective user id and group id to that of user.

-, -l, --login
make the shell a login shell

--//也就是使用login里面的shell,设置好对应的环境.
--//如果执行没有-,也就是仅仅run a shell with substitute user and group ids,不替换里面的环境变量或者相关参数.

1.测试1:
--//当前以root用户登录:
# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
# echo $oracle_home
# export aaa=test
# echo $aaa
test

# su  - oracle
$ id
uid=1001(oracle) gid=1001(oinstall) groups=101(fuse),1001(oinstall),1002(dba),1003(racoper),1004(asmdba)

$ echo $aaa

--//无显示.

$ echo $oracle_home
/u01/app/oracle/product/11.2.0.4/dbhome_1

2.如果执行不加参数 - 呢?

$ echo $oracle_home

--//环境变量oracle_home没有设置,而root设置的环境变量aaa呢?
$ echo $aaa
test

--//可以发现可以显示环境变量aaa.

3.这样看来应该很少使用-参数.
--//实际上rac的管理oracle引入许多东西,建立grid用户.通过一些特殊例子来说明问题:
--//以grid用户登录:
[grid@dm01dbadm02 ~ ]$ ocrcheck
status of oracle cluster registry is as follows :
         version                  :          3
         total space (kbytes)     :     262120
         used space (kbytes)      :       3852
         available space (kbytes) :     258268
         id                       : 2101855892
         device/file name         :   +dbfs_dg
                                    device/file integrity check succeeded
                                    device/file not configured
                                    device/file not configured
                                    device/file not configured
                                    device/file not configured
         cluster registry integrity check succeeded
         logical corruption check bypassed due to non-privileged user

--//ok.如果你加入参数:
$ ocrcheck -local
protl-602: failed to retrieve data from the local registry
procl-26: error while accessing the physical storage operating system error [permission denied] [13]

--//跟踪看看:
$ strace -f -o /tmp/b1.txt ocrcheck -local
protl-602: failed to retrieve data from the local registry
procl-26: error while accessing the physical storage operating system error [permission denied] [13]

$ grep 'permission denied' /tmp/b1.txt
14849 open("/u01/app/11.2.0.4/grid/cdata/dm01dbadm02.olr", o_rdonly|o_sync) = -1 eacces (permission denied)

--//要打开文件/u01/app/11.2.0.4/grid/cdata/dm01dbadm02.olr.

$ ls -l /u01/app/11.2.0.4/grid/cdata/dm01dbadm02.olr
-rw------- 1 root oinstall 272756736 2017-07-05 09:45:15 /u01/app/11.2.0.4/grid/cdata/dm01dbadm02.olr
--//注意看用户,组是root,oinstall,grid用户根本没有权限打开这个文件.

--//要解决这个问题一些dba采用把root用户里面加入grid的许多环境变量.以root用户执行,不过这样我认为不是很好!!
--//实际上很简单的方法就是切换到root用户执行,注意这个时候不能加入- 参数,因为这样grid的环境参数就丢失了,实际上这样就以
--//root用户执行,而使用的环境还是grid用户的.

$ su root
password:

# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
# echo $path
/usr/local/bin:/bin:/usr/bin:/u01/app/11.2.0.4/grid/bin:.:/u01/app/11.2.0.4/grid/bin

# echo $oracle_home
/u01/app/11.2.0.4/grid

--//你可以发现grid的环境参数还在.这个使用以root用户执行如下:
# ocrcheck -local
status of oracle local registry is as follows :
         version                  :          3
         total space (kbytes)     :     262120
         used space (kbytes)      :       2800
         available space (kbytes) :     259320
         id                       : 1632195400
         device/file name         : /u01/app/11.2.0.4/grid/cdata/dm01dbadm02.olr
                                    device/file integrity check succeeded
         local registry integrity check succeeded
         logical corruption check succeeded

--//当然还可以以另外的方式,就是使用sudo命令. sudo ocrcheck -local
--//注意要修改/etc/sudoers,加入:
grid    all=(all)   all

$ sudo ocrcheck -local
[sudo] password for grid:
status of oracle local registry is as follows :
         version                  :          3
         total space (kbytes)     :     262120
         used space (kbytes)      :       2800
         available space (kbytes) :     259320
         id                       : 1632195400
         device/file name         : /u01/app/11.2.0.4/grid/cdata/dm01dbadm02.olr
                                    device/file integrity check succeeded
         local registry integrity check succeeded
         logical corruption check succeeded

无涯·问知
无涯·问知

无涯·问知,是一款基于星环大模型底座,结合个人知识库、企业知识库、法律法规、财经等多种知识源的企业级垂直领域问答产品

下载

相关专题

更多
xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

0

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

12

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

86

2026.01.18

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

109

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

155

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

79

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

44

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

20

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

133

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.4万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号