欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > linux >内容正文

linux

linux学习笔记-第六课-/etc/passwd,/etc/shadow,useradd,su,sudo等

发布时间:2024/1/17 linux 61 豆豆
生活随笔 收集整理的这篇文章主要介绍了 linux学习笔记-第六课-/etc/passwd,/etc/shadow,useradd,su,sudo等 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一、查看用户

    /etc/passwd

[root@mylinux ~]# cat /etc/passwd|head -5 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 [root@mylinux ~]#

    文件的每一行代表一个用户,

    每一行由冒号“:”分成7个字段,

    结构都是一样的,结构如下:


    用户名:密码:UID:GID:用户标签:home目录:shell


    ①用户名:大小写字母、数字、减号(不能出现在首位)、点以及下划线,其他字符不合法。

    ②密码:以“x”字母占位,实际上密码是储存在“/etc/shadow”里。

[root@mylinux ~]# head -5 /etc/shadow  root:$6$Zj4RYp1LFptznzDm$jZbdsgce0pNZE6pEv9l8ncOXMOhr90cfzUbXIkL2oOKjHVeeUP/uyDG6UnNiNKvqMIzd6Dsan5pwuDNXNG.qe0:16496:0:99999:7::: bin:*:15980:0:99999:7::: daemon:*:15980:0:99999:7::: adm:*:15980:0:99999:7::: lp:*:15980:0:99999:7::: [root@mylinux ~]#

     ③UID:User ID 用户识别码,特殊值“0”是保存给“root”,1~499是属于系统用户的;500~4294967294(2^32-2)是分配给普通用户的。

     ④GID:Group ID 用户组识别码,来自“/etc/group”。

[root@mylinux ~]# head -5 /etc/group  root:x:0: bin:x:1:bin,daemon daemon:x:2:bin,daemon sys:x:3:bin,adm adm:x:4:adm,daemon [root@mylinux ~]#

    ⑤用户标签:该字段没有实际意义,通常记录该用户的一些属性,例如姓名、电话、地址等等,用 chfn 更改 

[root@mylinux ~]# grep "mylinux" /etc/passwd mylinux:x:1000:1000::/home/mylinux:/bin/bash             # 用户mylinux第五段为空; [root@mylinux ~]# chfn -f mylinux -p 13800138000 mylinux # 用chfn增加描述-f full-name; Changing finger information for mylinux.                   -p office-phone; Finger information changed. [root@mylinux ~]# !grep                                  # 第五段已经增加刚才的信息 grep "mylinux" /etc/passwd mylinux:x:1000:1000:mylinux,,13800138000:/home/mylinux:/bin/bash [root@mylinux ~]#

    ⑥home目录:用户家目录位置

    ⑦shell:标识用户shell类型:/bin/bash ;/sbin/nologin;/sbin/shutdown等




二、用户密码

    /etc/shadow  

[root@mylinux ~]# head -5 /etc/shadow root:$6$Zj4RYp1LFptznzDm$jZbdsgce0pNZE6pEv9l8ncOXMOhr90cfzUbXIkL2oOKjHVeeUP/uyDG6UnNiNKvqMIzd6Dsan5pwuDNXNG.qe0:16496:0:99999:7::: bin:*:15980:0:99999:7::: daemon:*:15980:0:99999:7::: adm:*:15980:0:99999:7::: lp:*:15980:0:99999:7::: [root@mylinux ~]#

    文件的每一行代表一个用户,

    每一行由冒号“:”分成9个字段,


   用户名:

   密码:经过SHA加密,不可逆

   修改密码时间:距第一次更改密码的时间已经多少天了

   修改密码期限:要过多少天才可以进行修改密码,默认值“0”,无限制

   密码到期时间:密码多少天后到期,默认值“99999”

   密码期限:密码到期提醒,默认值“7”即密码到期的前7天开始提醒

   锁定期限:密码到期后,账号多少天后锁定,默认值空

   生命周期:账号生命周期,默认值空

   保留位




三、用户和组

   ①用户的创建/删除

   用户创建

   格式:useradd [选项] [用户名]

[root@mylinux ~]# useradd linux [root@mylinux ~]# tail -1 /etc/passwd linux:x:1002:1003::/home/linux:/bin/bash [root@mylinux ~]#

   选项:-u 指定用户UID

         -U 指定用户群

         -g 指定用户GID(passwd中要含有这个ID)

         -G 指定用户组群GID

         -m 创建用户家目录

         -M 不创建用户家目录

         -d 用户家目录

         -D 打印或者更改useradd默认配置

         -s 指定shell类型

    用户删除

    格式 :userdel [选项] [用户名]

[root@mylinux ~]# tail -5 /etc/passwd nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin anon:x:600:600:anonymous,,13800138000:/home/anon:/bin/bash www:x:1001:1001::/home/www:/bin/bash anonymous:x:501:501::/home/anonymous:/bin/bash linux:x:1002:1003::/home/linux:/bin/bash [root@mylinux ~]# userdel linux [root@mylinux ~]# !tail tail -5 /etc/passwd rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin anon:x:600:600:anonymous,,13800138000:/home/anon:/bin/bash www:x:1001:1001::/home/www:/bin/bash anonymous:x:501:501::/home/anonymous:/bin/bash [root@mylinux ~]#

    选项 : -f 强制删除

           -r 删除用户家目录及邮件缓冲




    ②组的创建及删除

    组的创建

    格式 : groupadd [选项] [组名]

[root@mylinux ~]# groupadd linux [root@mylinux ~]# tail -5 /etc/group anon:x:600: www:x:1001: anonymous:x:1002: test:x:501: linux:x:1003: [root@mylinux ~]#

     选项 :-g 为创建的组指定GID

            -P 为创建的组加密

            -r 创建一个系统账户

     组的删除

     格式 :groupdel [选项] [组名]

[root@mylinux ~]# groupdel linux [root@mylinux ~]# tail -5 /etc/group nfsnobody:x:65534: anon:x:600: www:x:1001: anonymous:x:1002: test:x:501: [root@mylinux ~]#




     ③usermod 对用户信息进行修改

     格式 :usermod [选项] [用户名]

[root@mylinux ~]# tail -5 /etc/passwd nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin anon:x:600:600:anonymous,,13800138000:/home/anon:/bin/bash www:x:1001:1001::/home/www:/bin/bash anonymous:x:501:501::/home/anonymous:/bin/bash linux:x:1002:1003::/home/linux:/bin/bash [root@mylinux ~]# usermod -g 501 linux          # 更改用户GID信息 [root@mylinux ~]# !tail tail -5 /etc/passwd nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin anon:x:600:600:anonymous,,13800138000:/home/anon:/bin/bash www:x:1001:1001::/home/www:/bin/bash anonymous:x:501:501::/home/anonymous:/bin/bash linux:x:1002:501::/home/linux:/bin/bash [root@mylinux ~]#

    

     选项 :-l 变更使用者登陆的名字

            -a 对-G选项进行追加

            -c 更新用户passwd中注释栏信息

            -d 指定新的用户家目录

            -g 指定新的GID

            -G 指定新的组群GID

            -u 指定新的用户UID

            -m 移动家目录到新的位置

            -P 使用新的加密密码

            -s 使用新的shell类型

            -L 锁定用户账户

            -U 解锁用户账户

           


   

四、创建/修改用户密码

    创建用户密码

    对于新建的用户,没有设置密码,密码是需要创建的,命令如下:

[root@mylinux ~]# passwd linux                 # 格式passwd [用户名] 更改用户 linux 的密码 。 新的 密码: 重新输入新的 密码: passwd: 所有的身份验证令牌已经成功更新。 [root@mylinux ~]#

    选项: -d 删除已命名账户密码

          -k 密码不过期

          --stdin 从标准输入获取密码

[root@mylinux ~]# passwd linux --stdin 更改用户 linux 的密码 。 123456789 passwd: 所有的身份验证令牌已经成功更新。 [root@mylinux ~]#

  



    mkpaswd 密码生成命令

    没有此命令的需要执行 yum install -y expect

    选项 : -l 密码的长度,默认值为“9”

            -d 密码中含有几个数字,默认值为“2”

            -c 密码中含有几个小写字母,默认值为“2”

            -C 密码中含有几个大写字母,默认值为“2”

            -s 密码中含有几个特殊字符,默认值为“1”

            -p 对程序进行加密

[root@mylinux ~]# mkpasswd -l 12 -c 3 -C 3 -d 3 -s 3 xVY[1.2zOl}8                         # 长度为12,含有小字母3个大字母3个数字3个特殊字符3个 [root@mylinux ~]# mkpasswd -l 12 -c 3 -C 3 -d 3 -s 3 E\605nH&-Riu [root@mylinux ~]# mkpasswd -l 12 -c 3 -C 3 -d 3 -s 3 AxOgm8,^9J5*                         # 每次生产的密码是不同的 [root@mylinux ~]#




五、用户身份的切换


    su [user]或 su -m [user]或su -p [user]直接使用命令切换用户的环境变量,不会随着新用户一起转换过去,但是会保持当前用户环境配置的状态。

[mylinux@mylinux tmp]$ su 密码:                                      # 输入root密码 [root@mylinux tmp]# pwd /tmp [root@mylinux tmp]# env |grep 'mylinux'     # 当前的用户环境变量还是mylinux的 HOSTNAME=mylinux       USER=mylinux PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/mylinux/bin MAIL=/var/spool/mail/mylinux LOGNAME=mylinux [root@mylinux tmp]#

    所以需要一些选项

    su - 或者 su -l 环境变量会随着用户的切换,一切切换过去

    单独的"-"选项隐含了-l。如果不指定用户,则假设其为root。

[mylinux@mylinux tmp]$ su - 密码:                                    # root [root@mylinux ~]# pwd /root [root@mylinux ~]# env |grep 'root'        # 这时的环境变量随着用户的切换一同转换了 USER=root MAIL=/var/spool/mail/root PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin PWD=/root HOME=/root LOGNAME=root [root@mylinux ~]#

   


    因为su的每一次切换都需要输入root密码,所以就需要用到sudo,使用他的时候输入的是他用户本身的密码。

    sudo的选项 :

  -a type       使用指定的 BSD 认证类型
  -b            在后台运行命令
  -C fd         关闭所有 >= fd 的文件描述符
  -E            在执行命令时保留用户环境
  -e            编辑文件而非执行命令
  -g group      以指定的用户组执行命令
  -H            将 HOME 变量设为目标用户的主目录。
  -h            显示帮助消息并退出
  -i [command]  以目标用户身份运行一个登录 shell
  -K            完全移除时间戳文件
  -k            无效的时间戳文件
  -l[l] command 列出用户能执行的命令
  -n            非交互模式,将不提示用户
  -P            保留组向量,而非设置为目标的组向量
  -p prompt     使用指定的密码提示
  -r role       以指定的角色创建 SELinux 安全环境
  -S            从标准输入读取密码
  -s [command]  以目标用户身份运行 shell
  -t type       以指定的角色创建 SELinux 安全环境
  -U user       在列表时,列出指定用户的权限
  -u user       以指定用户身份运行命令(或编辑文件)
  -V            显示版本信息并退出
  -v            更新用户的时间戳而不执行命令
  --            停止处理命令行参数

    sudo不是任何人都可以运行的,是需要root授权的,也就是需要配置,但是需要用root来进行编辑/etc/suders,但是不是vi,而是visudo

[root@mylinux ~]# visudo ...........前面省略.........## The COMMANDS section may have other options added to it.#### Allow root to run any commands anywhereroot    ALL=(ALL)       ALL                 # 这行在配置的第98行mylinux ALL=(ALL)       ALL                 # 这行是新增的## Allows members of the 'sys' group to run networking, software,## service management apps and more.# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCES        SES, LOCATE, DRIVERS ...........后面胜利

   书写的格式:

   账户    来源主机名=(可切换的账户)   可以执行的命令

[mylinux@mylinux tmp]$ cat /etc/shadow cat: /etc/shadow: 权限不够 [mylinux@mylinux tmp]$ sudo cat /etc/shadow [sudo] password for mylinux: root:$6$.AQImhvXo6CchYvC$FwdxD2VKQtWDiDyaf2rYV6J6/ZOX4LyeNFaVDl53wUBuzz6zyb00pCNEd3TEZIRNfM0fljrKcsotHwyXDVhsz1:16492:0:99999:7::: bin:*:15980:0:99999:7::: daemon:*:15980:0:99999:7:::

    


 

    但是当有多个用户来管理这个主机,那岂不是要一行一行的增加,其实可以通过组来进行管理

    visudo打开进行编辑 

## Allows people in group wheel to run all commands%wheel ALL=(ALL)       ALL                  # 找到这一行将前面的“#”去掉,退出保存

    用usermod将用户加入wheel组

[root@mylinux ~]# usermod -a -G wheel su1 [root@mylinux ~]# su - su1 [su1@mylinux ~]$ id uid=502(su1) gid=502(su1) 组=502(su1),10(wheel)

    来测试看看吧!

[su1@mylinux ~]$ sudo tail -3 /etc/shadow [sudo] password for su1: su1:$6$NphVy42w$03uQ.oVSkupkEsx/imypw2zQSGCC2Yw2VpeSG0OM2oOzSJHrsE.Gna3jEp1o0YgXt3EGU5Npd.oCf1SimHy7O.:16514:0:99999:7::: su2:$6$Ugvncf5s$cVZxix4.BcRe.WZq1D/QLJJOFgcAjJqfG2Zrn8pJ5/QlHjJWkdzPF./XKIxQl3uept4fY3i5YhfP0MmOBB8h4.:16514:0:99999:7::: su3:$6$lA8YAIF3$m9CjNBggvPyQXsqMday1P92db3m.A.16ii5nYwFFeVsbdeZFrMwxq7mdvVm174j2lQhtv91BaJZ9ad.oYBZgb0:16514:0:99999:7::: [su1@mylinux ~]$

   测试成功!但是怎么每次都要密码,可以不要密码吗?答案是可以的

   还是在/etc/sudoers中进行编辑,找到下面的信息,去掉“#”注释,保存退出

## Same thing without a password%wheel ALL=(ALL)       NOPASSWD: ALL

   我再试一下

[root@mylinux ~]# su - su1 [su1@mylinux ~]$ sudo tail -3 /etc/shadow su1:$6$NphVy42w$03uQ.oVSkupkEsx/imypw2zQSGCC2Yw2VpeSG0OM2oOzSJHrsE.Gna3jEp1o0YgXt3EGU5Npd.oCf1SimHy7O.:16514:0:99999:7::: su2:$6$Ugvncf5s$cVZxix4.BcRe.WZq1D/QLJJOFgcAjJqfG2Zrn8pJ5/QlHjJWkdzPF./XKIxQl3uept4fY3i5YhfP0MmOBB8h4.:16514:0:99999:7::: su3:$6$lA8YAIF3$m9CjNBggvPyQXsqMday1P92db3m.A.16ii5nYwFFeVsbdeZFrMwxq7mdvVm174j2lQhtv91BaJZ9ad.oYBZgb0:16514:0:99999:7::: [su1@mylinux ~]$

   测试成功不需要密码了,只要对用户进行组的控制就可以实现了,不需要的时候移除组

   当然也可以让每个用户负责不同的权限与执行命令


本内容由导师:阿铭提供技术支持:跟阿铭学linux 点这里

      

更新中。。。








转载于:https://blog.51cto.com/maocong/1622655

总结

以上是生活随笔为你收集整理的linux学习笔记-第六课-/etc/passwd,/etc/shadow,useradd,su,sudo等的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。