su

问题1、在系统上有很多命令不能用,例如敲入service  xinetd restart  显示bash: service : command not found  是什么原因?
首先先确认在切换帐户的时候是用 “su  root”还是用“su �C root”,如果是用前者切换的话,虽然用户切换过去了,但是root帐户的环境变量并没有被完全切换过去,所以会导致如上的错误,所以在切换帐户的时候一定要用su �C root去切换,这样才能把和这个用户相关的所有信息都切换过去。

问题2、su: /bin/bash: 权限不够
今天在接电话时遇到这样一个问题,登录root之后,使用su切换到一个普通用户weblogic的时候,报如下错误:su: /bin/bash: 权限不够(Permission denied)
解决方法:/下的目录除了下面几个目录以外的都为 755权限
lost+found = 700
root = 750
tmp =777
让用户列出/下所有有目录,跟我机器上的目录权限进行了比较,发现/bin的目录权限不太一样,所以将其权限改为755,问题解决。
修改方法:
cd  /
chmod  755  bin

问题3、su: incorrect  password (不正确的密码)
在登录系统的时候,用root用户从本地登录和SSH登录都没有问题,但是用telnet登录系统的时候,从普通用户切换到root用户的时候切换不过去,报如下错误:
su: incorrect  password (不正确的密码)
解决方法:
首先您需要知道su这个文件原始的权限应该如下:
-rwsr-xr-x. 1 root root 34904 Jul 15  2011 /bin/su
但是你发现你的是:
-rwxr-xr-x. 1 weblogic dba 34904 Jul 15  2011 /bin/su
所以问题你应该能找到了吧,那就是权限发生了变化,所以得出如下结论:
1.修改这个文件的属主和属组:
chown root:root  /bin/su
2.修改这个文件的权限:
chmod  u+s /bin/su
就这么两步就OK了

问题4.在root用户下,su到一个普通用户(feng)报如下错误:
[root@fengfeng ~]# su - feng 
su: warning: cannot change directory to /home/feng: Permission denied 
su: /bin/bash: Permission denied 
解决方法:
可以通过stat 命令去查看 /(根)目录的详细信息,内容显示如下:
[root@fengfeng ~]# stat  / 
  File: `/' 
  Size: 4096          Blocks: 8          IO Block: 4096   directory 
Device: fd00h/64768d    Inode: 2           Links: 22 
Access: (0666/drw-rw-rw-)  Uid: (    0/    root)   Gid: (    0/    root) 
Access: 2012-05-30 15:23:03.065015631 +0800 
Modify: 2012-05-25 09:16:05.417484050 +0800 
Change: 2012-05-30 16:05:47.911820959 +0800 
 Birth: - 
而正常情况下为:
[root@fengfeng ~]# stat  / 
  File: `/' 
  Size: 4096          Blocks: 8          IO Block: 4096   directory 
Device: fd00h/64768d    Inode: 2           Links: 22 
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root) 
Access: 2012-05-30 15:23:03.065015631 +0800 
Modify: 2012-05-25 09:16:05.417484050 +0800 
Change: 2012-05-30 16:06:47.018091330 +0800 
 Birth: - 
现在不知道大家有没有看出来这两个文件有什么不同,其实这里的权限是有问题的,前者应该是没有X权限的,其实我们只需要给 /(根)目录赋予一个X的权限就可以了

[root@fengfeng ~]# chmod  755 /

以上是我工作中预到的一些关于su的问题,如有其它和su相关的问题,我会补充上的。

 

问题5:su -bash:/etc/profile Permission Denied

 

记录一例普通用户登录问题:

root用户登录OK,但普通用户登录时提示:

-bash:/etc/profile Permission Denied

解决办法:

在root的用户下查看etc目录权限,为644;这个权限是有问题的,其他用户没有列出etc目录下文件的权限,所以其他用户登录会报错!

chmod +x /etc  或者   chmod 755 /etc

给/etc/目录加上x权限即可解决问题。

如果root用户也出现该问题,可能的原因是/目录权限问题,

stat /     查看根目录权限,保持为755即可!

另,贴上用户登录过程:

用户登录后加载profile和bashrc的流程如下:

1)/etc/profile-------->/etc/profile.d/*.sh
2)$HOME/.bash_profile-------->$HOME/.bashrc---------->/etc/bashrc

说明:
bash首先执行/etc/profile脚本,/etc/profile脚本先依次执行/etc/profile.d/*.sh
随后bash会执行用户主目录下的.bash_profile脚本,.bash_profile脚本会执行用户主目录下的.bashrc脚本,
而.bashrc脚本会执行/etc/bashrc脚本

至此,所有的环境变量和初始化设定都已经加载完成.
bash随后调用terminfo和inputrc,完成终端属性和键盘映射的设定.

其中PATH这个变量特殊说明一下:
如果是超级用户登录,在没有执行/etc/profile之前,PATH已经设定了下面的路径:
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
如果是普通用户,PATH在/etc/profile执行之前设定了以下的路径:
/usr/local/bin:/bin:/usr/bin

这里要注意的是:在用户切换并加载变量,例如su -,这时,如果用户自己切换自己,比如root用户再用su - root切换的话,加载的PATH和上面的不一样.
准确的说,是不总是一样.所以,在/etc/profile脚本中,做了如下的配置:
if [ `id -u` = 0 ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
fi

如果是超级用户登录,在/etc/profile.d/krb5.sh脚本中,在PATH变量搜索路径的最前面增加/usr/kerberos/sbin:/usr/kerberos/bin
如果是普通用户登录,在/etc/profile.d/krb5.sh脚本中,在PATH变量搜索路径的最前面增加/usr/kerberos/bin

在/etc/profile脚本中,会在PATH变量的最后增加/usr/X11R6/bin目录
在$HOME/.bash_profile中,会在PATH变量的最后增加$HOME/bin目录

以root用户为例,最终的PATH会是这样(没有其它自定义的基础上)
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

以alice用户(普通用户)为例
/usr/kerberos/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/alice/bin


你可能感兴趣的:(command,service,用户,信息,电话)