Chinaunix首页 | 论坛 | 博客
  • 博客访问: 337611
  • 博文数量: 103
  • 博客积分: 3886
  • 博客等级: 中校
  • 技术积分: 1005
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-28 15:00
文章分类

全部博文(103)

文章存档

2011年(30)

2010年(73)

分类: LINUX

2010-05-11 08:53:06

普通用户登录时:
-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) |
给主人留下些什么吧!~~