如果有这样一个需求,linux的其他用户(普通用户)要查看你的日志文件,但是你又不想让他使用其他命令

那就要使用sudo了,授权指定用户使用命令了

1
2
### 打开配置文件 这个命令等于 vi /etc/sudoers
visudo

找到下面这行,这行的意思是root用户授权全部命令

1
root    ALL=(ALL)       ALL

我们添加了一个用户 chen

1
2
useradd chen
passwd 123456

这就是我们看日志的用户,我们想让他只使用 cat 和 less 命令 (建议加上 /bin/)

1
chen    ALL=(ALL) 	/bin/cat,/bin/less

多个命令直接用逗号隔开

我们登录用户chen

使用 sudo -l 看看

1
2
3
4
5
6
7
8
Matching Defaults entries for chen on localhost:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL
PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User chen may run the following commands on localhost:
(ALL) /bin/cat

这一大串看的人头皮发麻,但是前面的基本可以忽略,看最后两行
意思就是

使用者 chen 可以在本地主機上執行以下命令:
/bin/cat
/bin/less

我们来试试命令

1
sudo cat  /var/log/messages

发现可以正常使用

我们来试试没有授权的命令

1
sudo more  /var/log/messages

输入命令之后显示

1
Sorry, user chen is not allowed to execute '/bin/more /var/log/messages' as root on localhost.localdomain.

意思就是:抱歉,使用者 chen 不允許在 localhost.localdomain 上以根使用者身份執行 ‘/bin/more /var/log/messages’。