普通用户登录时:
-bash: /dev/null: Permission denied
-bash: /dev/null: 权限不够
[work@xmpan ~]$
但是可以登录但是执行命令的时候有如下情况:
[work@xmpan ~]$ ll
-bash: ll: command not found
[work@xmpan ~]$ ls -l
总计 251952
drwxr-xr-x 3 work work 4096 08-14 14:34 Desktop
-rw------- 1 work work 796 06-14 11:53 grub.conf
-rw-r--r-- 1 root root 25 06-01 12:28 key
查看/dev/null权限:
#ll /dev/null
crw------- 1 root root 1, 3 05-11 08:12 /dev/null
# rm /dev/null
rm:是否删除 字符特殊文件 “/dev/null”? y
# mknod -m 0666 /dev/null c 1 3
# ll /dev/null
crw-rw-rw- 1 root root 1, 3 05-11 08:28 /dev/null
问题都解决了,普通用户也可以使用ll
原因
用户本地的.bashrc内容为:
$cat /home/admin/.bashrc |more
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
$cat /etc/bashrc
截取其中一部分
for i in /etc/profile.d/*.sh; do
if [ -r "$i" ]; then
if [ "$PS1" ]; then
. $i
else
. $i >/dev/null 2>&1
fi
fi
done
我们使用普通用户登录时$PS2,所以应该执行
. $i >/dev/null 2>&1
普通用户对/dev/null没有权限,导致成功执行的输出无法输出,后面的配置失败,所以第一个执行这个语句的配置文件是成功的。然而:
# find /etc/profile.d/ |awk '/ls/ {print $0}'
/etc/profile.d/colorls.sh
/etc/profile.d/colorls.csh
# cat /etc/profile.d/colorls.sh |more
# color-ls initialization
alias ll='ls -l' 2>/dev/null
alias l.='ls -d .*' 2>/dev/null
COLORS=/etc/DIR_COLORS
[ -e "/etc/DIR_COLORS.$TERM" ] && COLORS="/etc/DIR_COLORS.$TERM"
[ -e "$HOME/.dircolors" ] && COLORS="$HOME/.dircolors"
[ -e "$HOME/.dir_colors" ] && COLORS="$HOME/.dir_colors"
[ -e "$HOME/.dircolors.$TERM" ] && COLORS="$HOME/.dircolors.$TERM"
[ -e "$HOME/.dir_colors.$TERM" ] && COLORS="$HOME/.dir_colors.$TERM"
[ -e "$COLORS" ] || return
eval `dircolors --sh "$COLORS" 2>/dev/null`
[ -z "$LS_COLORS" ] && return
if ! egrep -qi "^COLOR.*none" $COLORS >/dev/null 2>/dev/null ; then
alias ll='ls -l --color=tty' 2>/dev/null
alias l.='ls -d .* --color=tty' 2>/dev/null
alias ls='ls --color=tty' 2>/dev/null
fi
ll的alias没有被执行,或者执行失败,导致ll无法被识别。
阅读(5763) | 评论(0) | 转发(0) |