赞
踩
前言:Linux系统是个多用户系统,每个帐号都可以用来做什么,我们一定要清楚,这涉及到安全问题。在工作中尽量避免使用root帐号直接登陆系统,因为root帐号权限太高,可能会发生误操作。
1./etc/passwd 用户信息文件
这里只显示/etc/passwd前15行。上图可以看到,一共有7个字段。
2./etc/shadow 认证信息文件
这里以用户kiosk的身份查看/etc/shadow文件,权限受限。查看了该文件权限后,发现是000,但root账户是可以访问或者更改的。
【注】很多程序的运行都与权限有关,而权限与uid与gid有关。因此各程序需要读取/etc/passwd来了解不同账号的权限。所以/etc/passwd的权限需设置为644这种情况。早期密码虽然加密过,但由于存放在/etc/passwd的第二个字段下,容易被窃取。因此后来将密码移动到/etc/shadow文件中,并加入很多的密码限制参数。
shadow文件中由:分隔成9个字段。
用户密码:
账户创建后,默认是没有设置密码的,只有设置好密码后,才可以登录系统。
用户密码的命令:
passwd westos ##更改westos密码
passwd -l westos ##对密码加锁
passwd -u westos ##对密码解锁
passwd -d westos ##清空westos密码
【注意】
普通用户改密码时
1.必须知道当前永久原始密码
2.密码不能和帐号名称相似
3.密码不能是纯数字或纯字母
4.密码不能时有序的字母和数字的组合
passwd命令后如果不加用户名,则是为自己设定密码。
passwd -l使zoe账号失效,其实就是在/etc/shadow文件中第二轮列前面加了!!。
登陆不上去了。
(如果管理员想让某个账号暂时无法使用密码登陆主机,最简单的方法就是让他的密码变成不合法即改变shadow的第2字段长度)
解锁之后,密码字段恢复正常。
用户可以正常登入。
用户密码最后一次被更改的时间:
passwd -e westos ##改变用户最后一次更改密码的时间为0
##用户在登录时会被强制修改密码
用户密码最短有效期:
passwd -n 1 westos ##westos用户在1天之内不能修改密码
用户到期日:
chage -E 2018-09-23 westos ##westos用户在2018-09-23日到期
3./etc/group 用户组信息文件
4./etc/skel/.* 默认开启shell的配置,用户的骨文件
5./home/username 用户的家目录
1.用户的查看
1)
查看当前用户
whoami ##查看当前用户
2)
系统中用户的查看
id ##查看指定用户id信息
id
-u ##查看用户的uid
-g ##查看用户的gid
-G ##查看用户所在的所有组的id
-n ##显示名字而不显示id数字
2.用户的切换
1)命令su
su - 用户名称
su - 中“-”表示用户身份切换时同时切换当前用户的各种环境变量
su - 执行高级用户切换到低级用户时不需要密码,低级用户切换到高级用户需要,平级切换也需要
【注意】每次su切换到其他用户操作完成之后退出,再切换到另外用户操作
如果不加-切换到root账户时,当前目录没有变化。
加上-切换到root账户时,当前目录为root的家目录,这跟直接登陆root账户是一样的。
2)命令sudo
使用su可以实现从普通用户切换到root身份,但如果哪个用户泻露了root的密码,系统就很不安全了。为了改进这个问题,Linux系统工程师设计了sudo这个命令。使用sudo命令执行一个只有root才能执行的命令是可以办到的,但是需要输入用户自己的密码。默认情况下,只有root用户才能使用sudo命令,普通用户想要使用sudo,是需要root预先设定的。
1.权力下放文件为/etc/sudoers
此文件可以用vim直接编辑,但是不提供语法检测
也可以使用visudo编辑此文件,visudo命令是提供语法检测的
这里我使用的是vim直接编辑该文档。
编辑相关文件/etc/sudoers。默认root支持sudo,是因为文件中有一行
root ALL=(ALL) ALL。(下图第98行)
在这一行下面加入zoe ALL=(ALL) ALL,就可以让zoe用户拥有sudo权限。
这个命令分成三段理解,其中zoe表示指定一个名为zoe的用户,使其拥有isudo特权;ALL=(ALL),左边ALL指的是所有主机,右边ALL指的是获取哪个用户的身份,这一句几乎不用配置;最后一段设定的是使用sudo的命令有哪些。
用户 主机名称=(得到的用户身份) 命令
tom localhost=(root) /usr/sbin/useradd
##tom用户可以在localhost主机以root用户身份执行useradd命令
tom localhost=(root) NOPASSWD: /usr/sbin/useradd
##tom用户可以在localhost主机以root用户身份免密执行useradd
再验证一下zoe账户的权限:
先切换到zoe账户,执行ls,发现无法打开目录,权限不够,因为当前所在的目录仍为/root,zoe账户没有任何权限。
然而使用命令sudo ls,再输入zoe账户自身的密码后,就有了权限。初次使用sudo命令时,会出现上面的提示,当再次使用sudo命令时就不再提示。
如果每增加一个用户就设置一行,太麻烦了,这里有其他方法。
把第105行前面的#去掉即可,使这一行生效。这句命令的意思是,wheel这个组的所有用户都拥有了sudo的权利。接下来,只要把需要设置sudo权限的所有用户加入到wheel这个组中即可。
3.用户管理命令
1)用户的建立
useradd -u 8888 westos ##指定用户uid
useradd -g 21 westos ##指定用户初始组id,“21”用户组必须时存在的
useradd -G 21 westos ##指定用户附加组id,“21”用户组必须时存在的
useradd -c “hello” westos ##指定用户的说明
useradd -d /home/lee westos ##指定用户的家目录
useradd -s /sbin/nologin westos ##指定用户默认shell,禁止该用户交互式登陆
【注意】也可以连在一起写,一句命令设定想要为用户设定的所有内容
使用u参数,在创建用户zoe的同时直接指定其uid为1688 。否则应该为1002(1001+1)
使用g参数,在创建用户potizo的同时指定其所属组为zoe(也可以只写gid)。否则所属组是potizo,这里可以看到potizo和zoe两个用户的属组gid都是1688 。
使用G参数,指定用户的附属组。
当然也可以直接在一句命令中设定所有的内容。
2)用户的删除
userdel
userdel westos ##删除用户但不删除用户的家目录
userdel -r westos ##删除用户并删除用户的家目录
这里先使用userdel 不带r参数 删除用户potizo。命令执行的效果是potizo用户被删除了,但是其家目录依然存在。
我们再新建一个用户zoe以便试验带r参数的效果。很明显,带了r参数,家目录也一并删除了。
3)更改用户信息
usermod
usermod -l 新名称 westos ##更改用户的名称
usermod -u 8888 westos ##更改用户的uid
usermod -g 21 westos ##更改用户的初始组
usermod -G 21 westos ##更改用户的附加组
usermod -aG 21 westos ##添加用户的附加组
usermod -G "" westos ##删除用户所有附加组
usermod -c "haha" westos ##指定用户说明文字
usermod -md /home/lee westos ##更改用户家目录
usermod -s /sbin/nologin westos ##更改用户的shell
usermod -L westos ##冻结用户
usermod -U westos ##解锁用户
usermod大部分命令格式跟上面useradd差不多,这里主要看最后两个。
在超户下冻结了zoe账户,但是超户还是能进去。。。所以我切换到potizo用户下,在普通用户下面切普通用户,发现登录失败。
解冻zoe用户后,从普通用户potizo下切zoe,就可以切过去了。
1)组的建立
groupadd ##建立用户组
groupadd [-g GID] groupname ##建立用户组并指定用户组id
groupadd -g 8888 potizo ##建立一个名为potizo的用户组,该组的gid为8888
如果不加-g选项,则按照系统默认的gid创建组。与uid一样,gid也是从1000开始的。
2)组的删除
groupdel ##删除用户组
命令groupdel没有特殊选项,但是有一种情况不能删除组。
那就是如果我们要删除组potizo,该组内仍有一个名为user1的账户,这种情况下会报错“不能移除用户“user1”的主组”。
只有删除了user1账户后才可以删除potizo组。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。