linux 从头开始その九

etc/passwd

[root@iz2zeczv3xrnm2jx6aayhxz ~]# head -n 4 /etc/passwd
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

daemon:x:2:2:daemon:/sbin:/sbin/nologin   账号名称:密码:UID:GID用户信息说明栏:家目录:shell      

其中shell栏位, bin/bash是能登陆, sbin/nologin 是不能登陆

etc/passwd  保存了用户信息, 有几条说明就有几个账号

注意,一台机子上不见得就只有一个root,把别的用户的GID改成0,它也便成了root

 

etc/shadow

保存了用户的密码, 各个程序需要对etc/shado 有-rw-r--r--权限

root:$6$z...UZlm1ytLew.:18113:0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
adm:*:17110:0:99999:7:::

root:$6$z...UZlm1ytLew.:18113:0:99999:7:::

用户名:密码:最近修改密码日期:密码不可修改天数:密码需要重新修改的天数:密码需要修改期限前的警告天数:密码过期后的账号宽限时间:账号时效日期:保留

  1. root 用户名
  2. 密码 加密的密码
  3. 18113 最近修改密码的天数, 是距离1970.1.1 的天数
  4. 0  密码不可修改的天数, 0为可以随时修改,如3 , 就是3天不能再次修改密码
  5. 99999  密码要重新修改的天数,例如3 如果在3天内不修改密码,密码就会过期
  6. 7 密码修改期限前几天开始警告, 
  7. 空, 密码过期后的宽限时间,如设置了3, 密码过期了,就是上面的5, 在规定日期前, 还没修改密码, 密码就过期了。密码过期了, 其实还可以登陆系统, 不过系统会强制你改密码。这个宽限时间就是,你密码过期3天内,登陆并改密就可以了, 如果过了3天,你的密码就是失效了,不能再登陆系统了。
  8. 空 账号失效日期。 还是距1970.1.1 的天数, 如果过了这个数, 即使你的账号没过期, 就是5没过期, 密码也是失效的,无法在登陆了。
  9. 保留, 可以加新功能
  10. 密码过期和失效的区别,  过期就是你还可以登陆系统, 系统强制让你改密码, 改完就可以正常登陆了;失效就是你根本不能用这个账号和密码登陆系统了。

 

/etc/group

记录的是GID于组命对应的记录

root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:

root:x:0:          组名:用户密码:GID:此用户支持的账号名称

此用户支持的账号名称: 说的就是哪些用户可以加到这个组里, root:x:0:aki,desky   就把这两个用户加到这个用户组里了, 注意aki,desky没空格。

 

有效用户和初始组用户

/etc/group下

1 users:x:100:aki

2 aki:x:1000:                              对于用户组aki来时2是它的初始用户组, users是它的次要用户组

对已有文件的读取, 写入,执行时, 只要是用户users和aki有的权限, aki都有

但对于新建的文件来说,新的文件的用户组是哪个?一般情况肯定是aki 这个初始用户了。

 

 

groups 

查看有效的用户

groups
aki users

第一个值是它的有效用户。所以aki属组的账号新建的文件的属组一定是它自己了

 

newgrp  

切换有效用户组, 注意是切换, 切换成的只能是groups 返回的属组。

newgrp users
groups
users aki
exit

这个根bash类似, 都是开启个子进程执行, 所以最后要exit, 回到主进程。

 

 

/etc/gshadow

[root@ ~]# head -n 4 /etc/gshadow
root:::
bin:::
daemon:::
sys:::

bin:::      组命:密码栏:用户组管理员账号:有加入该用户组的所属账号

 

 

关于useradd, usermod, userdel, passwd

①useradd   新建用户

-c  说明栏

-u  指定uid

-g  指定初始用户组

-G  可加入的用户组

-M  强制, 不要建立家目录

-m  强制建立家目录

-d  指定目录成为家目录

-r   建立系统账号

-s  后面加shell, 默认是 /bin/bash  可登陆的。   可以设置成 /sbin/nologin    不可登陆的

-e  设置shadow的失效日期

-f   设置shadow的密码是否会实失效, 0立刻失效, -1永不失效

[root@ ~]# useradd fuckit
[root@ ~]# grep fuckit /etc/passwd /etc/shadow /etc/group /etc/gshadow
/etc/passwd:fuckit:x:1004:1004::/home/fuckit:/bin/bash
/etc/shadow:fuckit:!!:18175:0:99999:7:::
/etc/group:fuckit:x:1004:
/etc/gshadow:fuckit:!::

这说明useradd xxx:

  • 会在 /etc/passwd 下新建个于账号有关的数据
  • 会在/etc/shadow 建立密码相关的参数, 密码默认是空的
  • 会在/etc/group  新建一个同名的用户组
  • 会在/etc/gshadow 新建
  • 会在/home 新建个家目录, 且权限是700

当然也可以指定参数

useradd -u 1500 -g users aki 

系统中有个users的用户组,uid为1500的组不存在。 这个命令就是指定uid, 并把这个用户加到users组里。

建立系统账号

useradd -r xxx

系统账号的uid和gid都小于1000, 而且不会主动建立家目录

 

② passwd

用useradd新建的用户, 是暂时被锁定的, 因为没密码。

所以要用passwd 设置密码

--stdin      可以接收管道来的数据, 作为密码

-l                lock, 会在/etc/shadow 的密码栏 加 ! 让密码失效

-u               解锁, 拿掉!

-S               列出密码相关参数

-n               多久不可修改密码的天数

-x               多级内必须修改密码的天数

-w               密码过期前警告的天数

-i                 密码失效的日期的天数

passwd xxx   更改xxx 用户的密码, 只用root 才可以
passwd       该当前登陆者自己密码


echo "123456" | passwd --stdin xxx  
也可以这样改密码, 缺点是可以 看命令历史记录查到密码

passwd -S xxx     查看详情
passwd -x 60 -i 10 xxx    
passwd -l xxx      锁住这个用户, 让他不能登陆
passwd -u xxx      解锁

 

③ chage   查看密码参数详情

-l    列出密码参数的详情    YYYY-MM-DD

-d   最近修改密码的日期   YYYY-MM-DD

-E   失效日期

-I    密码过期后的宽限时间 大写的i

-m   密码不可修改的天数

-M   密码多久要改的天数

-W   过期前警告的天数

它还有功能: 让用户第一登陆时, 强制他们改密码

useradd aki 
echo "aki" | passwd --stdin aki    给用户aki 的密码设置成aki
chage -d 0 aki          将最后修改密码的天数设置成0.  这样第一次登陆会强制改密

④ usermod  修改useradd 增加用户的数据

-c    修改/etc/passwd的说明

-d    修改家目录

-e     shadow 的失效日期, 格式 YYYY-MM-DD

-f      密码过期后的宽限时间  天数

-g     设置初始用户组

-G     设置次要用户组

-a     于-G合用, 增加次要用户组

-l       设置passed 的第一栏, 就是账号名称

-s      设置shell, /bin/bash    /sbin/nologin

-u      修改uid

-L      锁住用户xx

-U    解锁

usermod -c "dsfasdfs" xxx
usermod -e "2020-04-01" xxx

 

⑤ userdel 

-r      连同使用者的家目录都删除

userdel -r xxx

 

 

关于groupadd, groupmod, groupdel, groupwd

① groupadd 

-g   指定gid

-r    指定是系统用户组  (gid小于1000, 不建立家目录)

②groupmod

-g   修改gid

-n    修改用户组的名字

③groupdel

用户组里有用户时, 是不能删除的。所以可以想修改用户的gid, 在删除用户组。

④gpasswd 用户组管理员功能

               不加任何参数表示,设置groupname的密码

-A           将groupname的管理权交给后面的使用者

-M          将某些账号加入到这个用户组中

-r           将groupname的密码删除 

-R          让groupname密码栏失效

-a           将某位使用者加入到groupname

-d          将某位使用者删除出groupname

groupadd testgroup         增加个用户组
gpasswd  testgroup          给用户组设置个密码, 会有加密码的提示弹出


gpasswd -A xx  testgroup      把xx用户加到testgroup中, 使它成为组管理员
gpasswd -a xxx testgroup      把xxx用户加入到testgroup中, 让它成为组员

用户组管理员可以管理哪些账号可以移除加入该组

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
从头开始系统地学习Linux,您可以按照以下步骤进行: 1. 了解Linux的基础知识:首先,了解Linux的历史、特点以及与其他操作系统的区别。学习Linux的基本概念,如文件系统、进程、权限管理等。 2. 安装Linux操作系统:选择合适的Linux发行版,并在您的计算机上进行安装。常见的Linux发行版包括Ubuntu、CentOS、Fedora等。 3. 学习Linux的命令行界面:熟悉Linux的命令行界面是学习Linux的基础。了解常用的命令和命令行选项,如ls、cd、mkdir、rm等,并学会使用管道、重定向等高级命令。 4. 学习Shell脚本编程:Shell脚本是自动化任务和批处理的重要工具。学习Shell脚本编程,掌握基本语法、变量、流程控制等概念。 5. 理解Linux文件系统:学习Linux的文件系统结构,包括根目录、用户目录、系统目录等。了解不同文件类型和权限设置对于系统运行的影响。 6. 学习软件包管理:掌握常用的软件包管理工具,如apt、yum等,学会安装、更新和删除软件包。 7. 网络配置和管理:学习Linux的网络配置和管理,包括网络接口设置、IP地址分配、防火墙配置等。 8. 系统管理和故障排除:学习如何管理Linux系统,包括用户管理、进程管理、日志查看等。了解常见的故障排除技巧,如查看日志、检查网络连接等。 9. 学习Linux服务器管理:如果您计划使用Linux作为服务器操作系统,还需要学习相关的服务器管理知识,如Web服务器配置、数据库管理等。 10. 持续学习和实践:Linux是一个广泛的领域,持续学习和实践是掌握Linux技能的关键。阅读相关书籍、参加培训课程、加入社区讨论等方式都可以帮助您不断提升。 总之,系统地学习Linux需要耐心和实践。通过逐步学习和实践,您将逐渐掌握Linux操作系统及其相关技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值