开发者学堂课程【线上Linux服务器优化经验:系统无法执行su操作案例以及解决问题过程】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/382/detail/4808
系统无法执行su操作案例以及解决问题过程
一、几个故障处理和优化案例
1.系统无法执行 su 操作
问题现象表示为:
su: warning:cannot change directory to /home/iiveylinux:Permission denied
su: /bin/bash:Permission denied
通过现象可以看出是权限方面策略问题,可以对其进行如下操作:
[
root@pmp-rtb1 /]# cd /home/
[
root@pmp- rtb1 home ]# 1s
Iivey
linux
[root@pmp-rtb1 home]# su一iiveylinux
su: warning:cannot change directory to /home/iivey
l
inux: Permission denied
su:
/bin/bash: Permission denied
[root@pmp- rtb1 home] #
解决思路:
从上面错误提示首先想到是权限出现了问题,那么可以从权限入手进行排查,
基本思路如下:
(1)用户目录/home/oracle权限问题;
[root@pmp-rtb1 home ] # cd /home/
[root@pmp-rtb1 home]# ls
Iivey linux
[root@pmp-rtb1 home]# 11
total 4
Drwx-----2 iiveylinux iivey 1inux 4096 Feb 28 15: 11 iiveylinux
[root@pmp-rtb1 home ] #
[root@pmp-rtbl iiveylinux]# 11
Total 0
[ root@pmp-rtb1 iivey 1inux ]# 1s -al
total 24
(通过实际操作发现,用户目录权限没有问题)
(2) su程序执行权限问题;(su本身是一个命令,su权限没有问题,su本身没有缺少库文件)
[root@pmp-rtb1 iiveylinux]# 11 /sbin/su
1s: cannot access /sbin/ su:No such file or directory
[root@pmp-rtb1 iivey1inux]# 11/bin/su
-rwsr-xr-x. 1 root root 34904 Jun 25 2014 /bin/su
[root@pmp-rtb1 iivey1inux] #
排除su权限的命令问题
[
root@pmp-rtb1 iivey
l
inux]# 1dd /bin/s
u
l
inux-vdso.so.1
=
>
(
0x000O
7fff99bff000
)
1ibpam. so.0 =>/ 1ib64/
l
ibpam. so. O (0x000O7 f1fc7605000)
1ibpam_misc.so
.
O => /
l
ib64/
l
ibpam_mis
.
so.0
(Ox00007 f1fc7401000)
l
ibc.so.6 => /
l
ib64/
l
ibc
.so.6
(0x000Of1fc706c000)
l
ib
audit.so.1
=>
/lib64/lbaudit.so.1(
0x00007 f1fc6e50000)
L
ib
d1.so.2
=>
/lib64/libdl.so.2(0x00007flfc6c4c000)
Libcrypt.so.1
=>
/lib64/libcrypt.so.1(0x00007flfc6a14000)
/lib64/ld-linux-x86-64.so.2(0x0000003642000000)
Libfreeb13.so
=>
/lib64/libfreeb13.so(0x00007flfc679d000)
[root@pmp-rtb1 iivey1inux]#
su命令本身也没有问题
(3)程序依赖的共享库权限问题;(程序依赖的共享库没有问题)
selinux 问题导致;
[root@pmp-rtb1 iivey1inux]# more /etc/se1inux/config
# This file contro1s the state of SELinux on the system .
SELINUX= can take one of these three values :
# enforcing-SELinux security policy is enforced
# permissive-SELinux prints warnings instead of enforcing.
SELING=disabled
#
SEL INUXTYPE= type of policy in use. POSSible values are
:
#
targeted -only targete
d
network
daemons are protected
#strict- Full SELinux protection.
SEL INUXTYPE=targeted
[ root@pmp-rtb1 iiveylinux]# setenforce 0
setenforce: SELinux is disabled
[ root@pmp-rtb
l
ii
vey1inux]#
[ root@pmp-rtb1 i ivey1 inux]# su - iivey1 inux
su: warning:. cannot change directory to
/
home/iiveylinux: Permission denied
su:/bin/bash: Permiss ion deni ed
[ root@pmp-rtb1 iivey
L
inux]#
Vipw:
/
etc/passwd is unchanged
[root@pmp-rtbl iivey
l
inux]# cd /home /
[roo
t@pmp-rtb1home]#
ls
iivey1inux
[root@pmp-rtb1 home ]# 1s
-al
total 12
drwxr-xr-x
3
roo
t
root
4096 Feb 28 15: 11
drw- rW- rw-23
root
root
4096 Feb
26 16:31
drwx------
2
iivey
l
inux. iivey
l
inux 4096 Feb
28 16:11 iiveylinux
[root
@
pmp-rtb1 home ]# cd iivey 1inux/
[root@pmp-rtb1 iiveylinux]# 1s -a
l
Tota
l
24
drwx --
--- 2
iivey
l
inux iivey
l
inux 4096 Feb
28
15: 11
drwxr-xr-x.
3
root
root
4096 Feb
15:11
-
rw
-------1
iiveylinux iivey
l
inux
5
Feb 28
15:11
bash_ history
-
rw
-r--r--1
iiveylinux iivey
l
inux
18 Oct 16 2014 bash_logout
-
rw
-r--r--1
iiveylinux iivey
l
inux
176 Oct 16 2014 bash_profile
-
rw
-r--r--1
iiveylinux iivey
l
inux
124 Oct 16 2014 bashrc
[ root@pmp-rtb1 iivey
L
inux]#
(通过系统操作发现selinux没有关闭,所以selinux不存在问题)
(4)系统根空间问题;
(通过系统执行发现,根空间较大,故不存在问题)
[ root@pmp-rtb1 , ]# stat /
File:
size:4096 Blocks: 8 IO Block:4096 directory
Device: fco1h/64513d Inode: 2 Links:23
Access :(0666/ drw- rw-rw-) uid:( 0/ root )Gid: ( 0/ root )
Access :2016-02-28 15:15 03.808745379 +0800
Modify:2016-02-26 16:31:47.525999939 +0800
Change :2016-02-28 15:12:50.894753170 +0800
[ root@pmp-rtb1 /]#
2. 如上所示,进行一一排查之后,可以考虑登陆设备权限是否被限制,登陆设备权限不存在问题,那么接下来的操作,应该始终把现象和我们的思路紧密联系在一起.
3. 最后再回到 /home/iiveylinux: Permission denied 上来,再执行 ls-al 命令,执行完之后,
通过查看发现 iiveylinux 目录权限没有问题。
继续drw-rw-rw. 23 root root 4096 Feb 26 16:31..可以看到出现了drw-rw-rw-.
对应两个点(在目录里面一个点代表当前目录,即/home目录;两个点表示上一级目录)
4.在系统操作里面两个点对应的是drw-rw-rw-.执行操作发现是根目录的权限存在问题。
在实际操作中,可以通过ls-al查看根目录是否存在问题,如果想对根目录是否存在问题查看的更为详细,
可以执行stat命令,具体操作输入stat/,执行之后,重点关注Access:(0666/drw-rw-rw-),发现根目录没有执行权限,显然错误。
通过查看 Access: 2016-02-28 15:15:03. 808745379 +0800 ;Modify: 2016-02-26 16:31:47.525999939 +0800;Change: 2016-02-28 15:12:50.894753170 +0800 可以看到 Access(访问目录的时间),Modify (修改目录的时间),Change(改变目录的时间)。
通过查看 Access、Modify、Change 可以追溯是什么原因导致的,比如是否是人为因素。
发现问题之后,接下来考虑如何解决问题。
(5)根目录必须有执行权限,所以可以通过赋予根目录权限来解决问题。