配置sudoers文件

配置sudoers文件

痛苦也能使人清醒。

人活着,就有痛苦,那本是谁都无法避免的事。

你若能记住这句话,你一定会活得更坚强些。更愉快些。

因为你渐渐就会发觉,只有一个能在清醒中忍受痛苦的人,他的生命才有意义,他的人格才值得尊敬。

......

一个人只要能活着,就是件愉快的事,何况还在继续不断的成长。

所以我们得到的每一次教训,都同样值得我们珍惜。都可以使人奋发振作,自强不息。

一个人如果能时常这样去想,他的心里怎么会有让他伤心失望、痛苦悔恨的回忆?

​ ------------ 古龙 <七种武器>

以前一直以为sudosu的一次性版本,都需要输入root的密码. 今天发现原来不一样,配置好了/etc/sudoers文件后可以让用户不需要输入root密码而具有执行超级用户的权限,且可以控制普通用户可以用管理员权限完成的操作,比如安装和更新软件、访问设备等等,而不对其他的危险操作基于管理员权限,这样保证了Linux系统的安全性.

su

su这个命令是switch user(切换用户)的缩写,当后面不指定用户时,默认切换到root用户,所以实际上也可以理解为superuser(超级用户). 指定了用户时,切换到对应用户. 比如现在我用shen账户登录到服务器,切换到root用户后,可以继续切换到liuyuanbin的用户. liuyuanbin没有shen的家目录的访问权限,所以执行ls命令时会提示Permission denied.

上面终端设置的PS1变量为

1
2
3
export PS1="\[\033[01;31m\]\u\[\033[00m\]@\[\033[01;32m\]\
enjoy today ww\[\033[00m\][\[\033[01;33m\]\t\[\033[00m\]]:\
\[\033[01;34m\]\w\[\033[00m\]\n\\$"

其中最后的$参数,在当前用户时普通用户时,显示为$;在当前用户是root用户时,显示为#.

sudo

sudo,可以代表(switch user, do)当然它的默认也是root账户,所以也可以理解为(superuser, do). sudo命令允许一个普通用户在不需要知道root密码的情况下,以管理员身份执行某些操作. sudo是一种权限管理机制,依赖于/etc/sudoers文件,其中定义了授权给哪个用户可以以管理员的身份能够执行什么样的管理命令. (Linux一切皆文件)当我们用sudo执行某条命令时,sudo提示我们输入当前用户的密码,之会检查当前用户是否在sudoers文件中有相应权限. 如果没有,则这条命令无法被运行.

/etc/sudoers文件中的基本权限命令格式可以概括为,

授权用户/组 主机 = [(切换到哪些用户或组)][是否需要输入密码] 允许的命令1 允许的命令2 ...

比如

1
shen	All=(All)	NOPASSWD:	All

代表普通用户shen在任何主机上,可以切换到任何用户,且可以不需输入密码地执行所有命令.

1
shen	ALL=(root)	!/usr/bin/passwd, /use/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

代表普通用户shen可以用root身份修改除root用户以外的其他所有用户的登录密码. 我们在/etc/sudoers里加上shen All=(All) NOPASSWD: All这一行,再尝试一下sudo命令,

就没问题啦,当然我们也可以用-u参数来实现以其他用户的身份来执行命令,比如用liuyuanbin的用户查看shen家目录,

同样,因为liuyuanbin没有权限,所以查看失败了.