1206.1398天:权限

2022-12-05  本文已影响0人  我的职业生涯

#每日三件事,第1398天#

权限在各种系统中都是非常重要的一个概念。在网络安全等级保护中,其中有两条是这样的:

  1. 应对登录的用户分配账户和权限;

登录用户的账户检查就比较简单了,关键是权限设置怎么检查,这个非常重要。

在linux系统中,创建账户使用useradd命令,当然还可以在创建账户时候将其添加到某个用户组中。默认情况下,新创建一个用户,同时也会创建一个同名的组,这个新用户自动属于同名的组。通过id username可以查看:

# id test
uid=1000(test) gid=1000(test) groups=1000(test)

linux操作系统中,一切皆文件,每个文件的权限都有三种:读(r)、写(w)和执行(x)。一个文件又可以针对所有着、组成员以及其他用户分配这些权限。当然,也可以针对特定用户分配文件的权限。

账户权限

一个账户都有哪些权限呢?首先是登录系统的权限,包括tty本地登录,ssh远程登录,sudo执行命令的权限,su获得root账户的权限等。

tty本地登录,一般用户只要创建的时候不给予特殊的shell,都是可以登录系统的。只有/sbin/nologin,/sbin/halt、/sbin/shutdown、/bin/false之类的shell无法正常登陆系统;

ssh远程登录,一般在/etc/ssh/sshd_config文件中进行限制,一般禁止root用户远程登录。主要是为了防止暴力破解root账户。其他用户都是可以通过ssh远程登录的。当然可以限制是通过密码登录还是证书登录,这和账户的权限无关。

sudo执行命令的权限,其实是以超级用户(root)执行命令。通过sudoers文件的配置来限制账户的权限。

sudoers文件中有这么两条:

root         ALL=(ALL)       ALL
%wheel  ALL=(ALL)       ALL

第一行的意思是root在本机上具有执行任何命令的权限。后面一行的意思是wheel组的用户在本机上具有执行任何命令的权限。如果想让一个账户具有执行特殊命令的权限,一种方式是把它加入到wheel组中:

# gpasswd -a username wheel

另一种方式是在sudoers配置文件中添加类似的条目:

username         ALL=(ALL)       ALL

or:

username       ALL=(ALL)      /usr/sbin/useradd

然后重新登录此账户即可。

2.应授予管理用户所需的最小权限,实现管理用户的权限分离。

最小权限的限制:

  1. tty登录,这个基本无法限制。除非是把账户的shell 改掉;

  2. ssh登录,这个可以限制root账户;

  3. su切换:一般账户应当阻止其切换;通过修改/etc/pam.d/su文件:

#auth            required        pam_wheel.so use_uid

这个去掉注释。

/etc/login.defs文件末尾添加一句:

SU_WHEEL_ONLY yes

这样,只有添加到wheel组的账户才可以su到root账户。

  1. sudo命令执行:只授予账户其可以执行部分命令的权限。在/etc/sudoers中添加用户及命令:
username ALL=(ALL)  /usr/sbin/useradd,/usr/bin/passwd

CentOS7默认情况下,su的权限是有的,sudo的权限是没有的。

上一篇下一篇

猜你喜欢

热点阅读