#每日三件事,第1398天#
权限在各种系统中都是非常重要的一个概念。在网络安全等级保护中,其中有两条是这样的:
- 应对登录的用户分配账户和权限;
登录用户的账户检查就比较简单了,关键是权限设置怎么检查,这个非常重要。
在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.应授予管理用户所需的最小权限,实现管理用户的权限分离。
最小权限的限制:
-
tty登录,这个基本无法限制。除非是把账户的shell 改掉;
-
ssh登录,这个可以限制root账户;
-
su切换:一般账户应当阻止其切换;通过修改/etc/pam.d/su文件:
#auth required pam_wheel.so use_uid
这个去掉注释。
/etc/login.defs文件末尾添加一句:
SU_WHEEL_ONLY yes
这样,只有添加到wheel组的账户才可以su到root账户。
- sudo命令执行:只授予账户其可以执行部分命令的权限。在/etc/sudoers中添加用户及命令:
username ALL=(ALL) /usr/sbin/useradd,/usr/bin/passwd
CentOS7默认情况下,su的权限是有的,sudo的权限是没有的。
网友评论