在本机上非oracle用户运行sqlplus时,报以下错误:
[cpdds@node1 ~]$ sqlplus cpdds_pdata/cpdds_pdata
SQL*Plus: Release 10.2.0.4.0 - Production on 星期五 4月 27 13:43:16 2012
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
ERROR:
ORA-01034: ORACLE not available
ORA-27123: unable to attach to shared memory segment
Linux-x86_64 Error: 13: Permission
denied
检查环境变量:ORACLE_SID、ORACLE_BASE、ORACLE_HOME均正常。
解决方法:
用oracle用户登录,到$ORACLE_HOME/bin目录,执行chmod +s oracle。
语法:chmod [who] [+ | - | =] [mode] 文件名
命令中各选项的含义为:
操作对象who可是下述字母中的任一个或者它们的组合: u 表示“用户(user)”,即文件或目录的所有者。 g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。 o 表示“其他(others)用户”。 a 表示“所有(all)用户”。它是系统默认值。 操作符号可以是: + 添加某个权限。 - 取消某个权限。 = 赋予给定权限并取消其他所有权限(如果有的话)。 设置 mode 所表示的权限可用下述字母的任意组合: r 可读。 w 可写。 x 可执行。 X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。 s 在文件执行时把进程的属主或组ID置为该文件的文件属主。 方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。 t 保存程序的文本到交换设备上。 u 与文件属主拥有一样的权限。 g 与和文件属主同组的用户拥有一样的权限。 o 与其他用户拥有一样的权限。 文件名:以空格分开的要改变权限的文件列表,支持通配符。
chmod u+s a.out % 假设执行chmod后a.out的权限为(可以用ls – l a.out命令来看): –rws--x--x 1 inin users 7192 Nov 4 14:22 a.out 并且这个执行文件要用到一个文本文件shiyan1.c,其文件存取权限为“–rw-------”,即该文件只有其属主具有读写权限。 当其他用户执行a.out这个程序时,他的身份因这个程序暂时变成inin(由于chmod命令中使用了s选项),
所以他就能够读取shiyan1.c这个文件(虽然这个文件被设定为其他人不具备任何权限),这就是s的功能。 因此,在整个系统中特别是root本身,最好不要过多的设置这种类型的文件(除非 必要)这样可以保障系统的安全,避免因为某些程序的bug而使系统遭到入侵。