3.6 第五章:Linux系统用户与用户组管理

第五章:Linux系统用户与用户组管理

一、认识/etc/passwd和/etc/shadow

1./etc/passwd:

[root@zl_cloud ~]# cat /etc/passwd | head
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@zl_cloud ~]# 

head前面的符号|叫做管道符,它的作用是把前面的命令的输出再妇孺给后面的命令。此处显示的是/etc/passwd文件的前10行。

  • 第一个字段:用户名,代表用户账号的字符串;
  • 第二个字段:存放的是该账户的口令;此处为x是因为后来基于安全因素,讲其放入了 /etc/shadow中了,这里用x代替;
  • 第三个字段:这个数字代表用户识别号,也称为uid;同样,如果把test用户的uid修改 为0,系统就会认为root和test是同一个账户。(uid的取值范围是0~65535,实 际上已经可以支持到429 496 7294)
  • 第四个字段:这个数字表示组标识号,也称为gid;它对应着/etc/group中的一条记录。
  • 第五个字段:注释说明,没有实际意义;
  • 第六个字段:用户的家目录,当用户登录时,就处在这个目录下;
  • 最后一个字段:用户为用户的shell;用户登录后,要启动一个进程,用来将用户下达的指 令传给内核;

2./etc/shadow:
查看前三行先:

[root@zl_cloud ~]# cat /etc/shadow | head -3
root:$6$VN/vnoV9M696aU9k$Rv97REKblFc3IT/74ty0XVa7tbGmFwK6E/FIu2zrrDRoRbc4YHHXCuCXv.E1TyIWWZN9Z93xKy7cnqmKMeIgN0::0:99999:7:::
bin:*:16659:0:99999:7:::
daemon:*:16659:0:99999:7:::
[root@zl_cloud ~]# 

重点标注为比较重点的字段。

  • 第一个字段:用户名,与/etc/passwd对应;
  • 第二个字段:用户密码;是该账号的真正密码,这个密码已经加密。
  • 第三个字段:上次更改密码的日期;
  • 第四个字段:要过多少天才可以更改密码;
  • 第五个字段:密码多少天后才可以更改密码;默认为0,即不受限制。
  • 第六个字段:密码到期前的警告期限;默认为99999,可以理解为永远不需要改。
  • 第七个字段:账号的生命周期;
  • 第八个字段:账号的生命周期;
  • 最后一个字段:做保留用的,无意义;

二、用户和用户组管理

1.新增的命令groupadd
格式:groupadd 【-g GID】 【groupname】

[root@zl_cloud ~]# groupadd grptest
[root@zl_cloud ~]# tac /etc/group
grptest:x:1001:
slocate:x:21:
...

如果不加-g,则会按照系统默认的gid创建组,跟uid一样,gid也是从1000开始。
可自定gid:

[root@zl_cloud ~]# groupadd -g 1004 grptest1
[root@zl_cloud ~]# tac /etc/group
grptest1:x:1004:
grptest:x:1001:
slocate:x:21:
...

2.删除组的命令groupdel
格式:groupdel 【groupname】

[root@zl_cloud ~]# groupdel grptest1
[root@zl_cloud ~]# tac /etc/group
grptest:x:1001:
slocate:x:21:

有种情况不能删除组:

[root@zl_cloud ~]# useradd usertest
[root@zl_cloud ~]# id usertest
uid=1001(usertest) gid=1002(usertest) 组=1002(usertest)
[root@zl_cloud ~]# groupdel usertest
groupdel:不能移除用户“usertest”的主组
[root@zl_cloud ~]#

所以,只能删除账户才能删除这个组。我这个创的账户只是一个实验,我自己一开始想把usertest加入我上面创的grouptest中,然后发现加进去后,usertest的组变成了两个,就算删除也是grouptest组也是可以的,可能只是如果是唯一的话才会说删除不了把?我是这么理解的。

3.增加用户的命令useradd
格式:useradd 【-选项】 【username】
选项:

  • -u:表示自定义uid;
  • -g:表示使新增用户属于已经存在的某个组;后面可以跟组id,也可以跟组名。
  • -d:表示自定义用户的家目录;
  • -M:表示不建立家目录;
  • -s:表示自定义shell。
    如果创建用户时想自定义uid或者所属组的话:
[root@zl_cloud ~]# useradd -u1003 -g usertest usertest1
[root@zl_cloud ~]# id usertest1
uid=1003(usertest1) gid=1002(usertest) 组=1002(usertest)
[root@zl_cloud ~]# 

4.删除账户的命令userdel
格式:userdel 【-选项】 【username】

  • -r:删除主目录和邮件池;

5.使用命令chfn更改用户的finger

[root@zl_cloud ~]# chfn usertest1
Changing finger information for usertest1.
名称 []: usertest1
办公 []: 1
办公电话 []: 1
住宅电话 []: 1

Finger information changed.
[root@zl_cloud ~]# grep 'usertest1' /etc/passwd
usertest1:x:1003:1002:usertest1,1,1,1:/home/usertest1:/bin/bash
[root@zl_cloud ~]# 

三、用户密码管理

1.命令passwd
格式:passwd 【username】,不加username的话就是修改自己的密码。

2.命令mkpasswd
用于生成密码;Linux默认时没有这个命令的,需要安装一个expect软件包。

[root@zl_cloud ~]# yum install -y expect
[root@zl_cloud ~]# mkpasswd
Du9Fmcb7.
[root@zl_cloud ~]# 

要指定什么密码的话:
l代表long长度,s代表特殊字符,d代表数字,还有其他选择。

[root@zl_cloud ~]# mkpasswd -l 10 -s 0 -d 3
orbn5P5cV1
[root@zl_cloud ~]# 

如果怕忘记密码的话,可以使用keepass;
KeePass主要有两部分作用:
①生成不易于破解的随机密码:它自带了一个密码生成器,可以按照指定的字符类(大小写、数字、特殊符号)生成指定位数的密码。
②分类管理密码:使用一个kdb扩展名的文件作为数据库,你可以指定数据库的加密算法和加密次数;密码你可以分类别进行管理,并且双击时可以自动打开URL字段的网址,自动复制用户名和密码字段的数据;复制到剪贴板的数据可以定时清除或者只允许粘贴一次。

四、用户身份切换

Linux中有些事情只有root用户才能做,普通用户是不能做的,这是需要临时切换到root身份。

[root@zl_cloud ~]# useradd test
[root@zl_cloud ~]# passwd test
更改用户 test 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@zl_cloud ~]# 

用test账户登录Linux:

[test@zl_cloud ~]$ whoami
test
[test@zl_cloud ~]$ 

注意区别:普通用户是$,root目录是#

1.命令su
格式:su 【-】 【username】。后面可以跟-,也可以不跟-。普通用户的su命令不加username时,就是切换到root用户。

[test@zl_cloud ~]$ pwd
/home/test
[test@zl_cloud ~]$ su
密码:       //输入root密码
[root@zl_cloud test]# pwd
/home/test
[root@zl_cloud test]# exit
exit
[test@zl_cloud ~]$ su -
密码:
上一次登录:四 3月  5 11:18:04 CST 2020pts/3 上
[root@zl_cloud ~]# 

2.命令sudo
这个命令只有root才能使用,普通用户想要使用sudo需要root预先设定;

[test@zl_cloud root]$ sudo ls
[sudo] password for test: 
test 不在 sudoers 文件中。此事将被报告。
[test@zl_cloud root]$ 

要使用的话要在root设定:

[root@zl_cloud ~]# yum install -y sudo   //没有visudo这个命令的话安装一下这个
[root@zl_cloud ~]# vi /etc/sudoers       //添加最后一行
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
test    ALL=(ALL)       ALL

第一段是指用户名,第二段是左边的all是指所有主机,右边的all是指获取哪个用户的身份,第三段可以设定可以使用sudo的命令有哪些。

[test@zl_cloud root]$ sudo ls

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。

[sudo] test 的密码:
anaconda-ks.cfg  dir1  dira  dirb  test  test1  test2
您在 /var/spool/mail/root 中有新邮件
[test@zl_cloud root]$ sudo ls
anaconda-ks.cfg  dir1  dira  dirb  test  test1  test2
[test@zl_cloud root]$ ls
ls: 无法打开目录.: 权限不够
[test@zl_cloud root]$ 

若增加一个用户就设置一行,有点麻烦,可以这么做:

[root@zl_cloud ~]# vi /etc/sudoers   //有说要把%wheel前的#删掉但是我的本来就没有...意思是wheel这个组的所有用户都拥有了sudo的权利,加下来只需要设置sudo权限的所有用户加入到wheel这个组中即可。
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

普通账户登录后,可以不输入密码就能用sudo切换到root账户:

[root@zl_cloud ~]# visudo
User_Alias USER_SU = test,test1,aming //user别名,USER_SU相当于test,test1,aming 三个账户
Cmnd_Alias SU = /usr/bin/su    //命令别名,SU相当于/usr/bin/su
USER_SU ALL=(ALL) NOPASSWD:SU  

3.不允许root远程登录Linux

[root@zl_cloud ~]# vi /etc/ssh/sshd_config
PermitRootLogin yes  //找到这个把yes改成no即可
[root@zl_cloud ~]# systemctl sshd.service

只适用于通过ssh远程登录Linux的情况。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值