Home >Operation and Maintenance >Linux Operation and Maintenance >[20170705]Understanding linux su command.txt

[20170705]Understanding linux su command.txt

PHP中文网
PHP中文网Original
2017-07-05 18:16:151812browse

[20170705]Understand the linux su command.txt

--//I usually log in as the root user during maintenance, and then su - oracle to other user operations
--//General Add the - parameter. This has become a conditioned reflex...^_^.

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

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

--//That is, use the shell in login and set the corresponding environment.
--//If the execution does not -, that is, just run a shell with substitute user and group IDs, without replacing the environment variables or related parameters inside.

1. Test 1:
--//Currently logged in as root user:
# 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

--//No display.

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

2. If executed without parameters - What?

$ echo $ORACLE_HOME

--//The environment variable ORACLE_HOME is not set, but what about the environment variable aaa set by root?
$ echo $aaa
test

--//You can find that the environment variable aaa can be displayed.

3. It seems that the - parameter should be rarely used.
--//In fact, the management of rac oracle introduces many To do this, create a grid user. Use some special examples to illustrate the problem:
--//Log in as grid user:
[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
                                                                                            ’ ’s ’ s ’ use use through to to to to D ‐ ‐ ‐ ‐ ‐ ‐ to 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. If you add parameters:
$ 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]

--//Trace and see:
$ 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)

--//To open the file /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
--//Pay attention to the user, the group is root, oinstall, and the grid user does not have permission to open this file at all.

--//To solve this problem, some DBAs use many environments where the root user is added to the grid. Variables. Execute as the root user, but I think this is not very good!!
--//In fact, a very simple method is to switch to the root user for execution. Note that you cannot add the - parameter at this time, because this will affect the grid's environment parameters. It is lost. In fact, it is executed as the
--//root user, and the environment used is still the grid user.

$ 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

--//You can find that the environment parameters of grid are still there. Use this with The root user executes as follows:
# ocrcheck -local
Status of Oracle Local Registry is as follows:
Version 3
Total space (kbytes) : 262120
Used space s) : 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

--//Of course, you can also use the sudo command in another way. sudo ocrcheck -local
--//Be careful to modify/ etc/sudoers, join:
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

The above is the detailed content of [20170705]Understanding linux su command.txt. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn