linux用户相关
作者:互联网
在linux中, 一个用户属于一个组, 用户信息和组信息分别存在于etc/passwd
和/etc/group
文件中, 一个用户至少属于一个组.
执行useradd
或者adduser
命令的时候, 会在/etc/passwd
中添加一条新的记录:
# 添加一个用户, 分配指定的组, 用户id和shell环境以及主目录用户名
root@0aa88e669e5f:/# useradd -g chifan -u 2212 -s /bin/bash -d /home/chifan -m hahaha
# 提示该组不存在
useradd: group 'chifan' does not exist
# 新建chifan组
root@0aa88e669e5f:/# groupadd chifan
# 重新执行添加用户命令
# 这里注意, 添加的用户是hahaha, 但是根目录是/home/chifan
root@0aa88e669e5f:/# useradd -g chifan -u 2212 -s /bin/bash -d /home/chifan -m hahaha
# 查看/home目录
root@0aa88e669e5f:/# ll /home/
total 20
drwxr-xr-x 1 root root 4096 Aug 1 05:26 ./
drwxr-xr-x 1 root root 4096 Aug 1 04:48 ../
drwxr-xr-x 2 hahaha chifan 4096 Aug 1 05:26 chifan/
drwxr-xr-x 2 kaka kaka 4096 Aug 1 04:49 kaka/
# 查看新添加这个用户的元信息
root@0aa88e669e5f:/# stat /home/chifan
File: '/home/chifan'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 8bh/139d Inode: 3199080 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 2212/ hahaha) Gid: ( 1004/ chifan)
Access: 2019-08-01 05:26:05.573243420 +0000
Modify: 2019-08-01 05:33:20.335230696 +0000
Change: 2019-08-01 05:33:20.335230696 +0000
Birth: -
# 查看/etc/passwd文件最后两行
root@0aa88e669e5f:/# tail -n 2 /etc/passwd
akkk:x:1003:1003:akakddd,kdkdkdkd,kslsld,djsdkjjsdjksd,sdsdjjssfjksf:/home/akkk:/bin/bash
hahaha:x:2212:1004::/home/chifan:/bin/bash
这时候去`/etc/shadow`下面查看认证信息:
root@0aa88e669e5f:/# grep hahaha /etc/shadow
hahahaa:!:18109:0:99999:7:::
这时候注意, :
的第二个是!
号, 也就是未设置密码, 然后设置hahaha
的密码:
# 设置密码
root@0aa88e669e5f:/# passwd hahaha
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
# 查看
root@0aa88e669e5f:/# grep hahaha /etc/shadow
hahaha:$6$tb1762VD$9z9KzZ04QkelFU8R3t88P7WAD2.jDF7NseuZoJrDQVyNvgGXTcYq6dTwqcUnnb1GJWMIfoFaQ9qzhJLc5A3Tj1:18109:0:99999:7:::
设置用户的组和有效组
# 添加一个新用户
adduser admin
# 设置对应的账号密码
# 如果还没有 docker group 就添加一个:
sudo groupadd docker
# 将用户加入该 group 内。然后退出并重新登录就生效啦。
sudo gpasswd -a ${USER} docker
# 重启 docker 服务
sudo service docker restart
# 切换当前会话到新 group 或者重启 X 会话
newgrp - docker
文件解释
用户登录的时候, 先去/etc/passwd
中查看对应的用户信息, 读取对应的uid和gid, 然后再去/etc/shadow
中确认密码是否正确, 最后确认用户登录成功
linux中一个用户是用uid来确认的, 用户名只是一个别称, 类似于账户表中用户的登录名和实际表中存储的主键一样
/etc/passwd
akkk:x:1003:1003:akakddd,kdkdkdkd,kslsld,djsdkjjsdjksd,sdsdjjssfjksf:/home/akkk:/bin/bash
hahaha:x:2212:1004::/home/chifan:/bin/bash
这里通过:
将各种信息分隔开, 其中有:
- 账户名称
- 密码
- 这里用x是因为密码加密保存到
/etc/shadow
中
- 这里用x是因为密码加密保存到
- 用户id
- 0
- 超级管理员
1~499
- 系统保留
1~99
是自动创建的系统账户
- 系统保留
500~最多
- 这个最多是自己设置的
- 这个就是自己定义的账户uid了
- 0
- 用户对应组的id
- 组信息可以在
/etc/group
中查看 - 默认的, 如果不设置用户对应组的话, 新建一个haha用户会新建以一个haha的组, 在ubuntu的
/etc/adduser.conf
中可以看对应配置
- 组信息可以在
- 用户信息说明
- 比如用户的全名什么的, 都在这个段里面写
- 等于说是对这个用户的描述
- 根目录
- 这个用户的根目录, 创建用户的时候
-d
参数设置, 默认是在/home/user_name
或者/user/group_name/user_name
, 推荐/home/user_name
- 这个用户的根目录, 创建用户的时候
- 用户的shell环境
/etc/shadow
root@0aa88e669e5f:/# grep hahaha /etc/shadow
hahaha:$6$tb1762VD$9z9KzZ04QkelFU8R3t88P7WAD2.jDF7NseuZoJrDQVyNvgGXTcYq6dTwqcUnnb1GJWMIfoFaQ9qzhJLc5A3Tj1:18109:0:99999:7:::
同样, 都是:
分隔开
- 用户名
- 加密的密码, 这里根据
$6$
这个来确定加密的算法类型 - 最近更新时间
- 口令不可被更新的天数
- 口令需要重新变更的天数
- ...
目录和文件权限
hahahaa@0aa88e669e5f:~$ ll
total 24
drwxr-xr-x 2 hahaha chifan 4096 Aug 1 06:05 ./
drwxr-xr-x 1 root root 4096 Aug 1 05:35 ../
-rw------- 1 hahaha chifan 239 Aug 1 06:13 .bash_history
-rw-r--r-- 1 hahaha chifan 220 Aug 31 2015 .bash_logout
-rw-r--r-- 1 hahaha chifan 3771 Aug 31 2015 .bashrc
-rw-r--r-- 1 hahaha chifan 655 Jul 12 19:26 .profile
-rw-r--r-- 1 hahaha a 0 Aug 1 06:04 kaka.text
-rw-r--r-- 1 hahaha b 0 Aug 1 06:05 kakaaaa.text
前面分开的格式是1, 3, 3, 3
- 文件类型
- linux中一切皆为文件
- d
- 目录
-
- 文件
l
- link file
b
- 可够存储的接口设备
c
- 鼠标键盘等串行端口设备
- 所有者权限
- r
- 读
- 4
- w
- 写
- 2
- x
- 执行
- 1
- 一个用户执行一个文件的最低权限是
5
- r
- 对应组的权限
- 其他人的权限
总结
用到的命令
# 添加用户
useradd aaa
adduser akaka
# 添加组
groupadd kkk
# 设置用户密码
passwd root
# 切换用户的激活组
newgrp + 组名
# 切换权限
chmod +x ./hahaa.text
# 切换用户
chown aha.text
# 查看用户的信息
hahahaa@0aa88e669e5f:~$ id hahaha
uid=2212(hahaha) gid=1004(chifan) groups=1004(chifan),1005(a),1006(b)
# 查看用户的组
hahahaa@0aa88e669e5f:~$ groups hahaha
hahaha : chifan a b
# 或者
cat /group | grep 用户名
# 组的最后一个对应的就是该组的用户名
# 查看所有组
cat /etc/grroup
写在最后
摘抄linux的启动流程
# http://cn.linux.vbird.org/linux_basic/0510osloader.php#startup_intro
加载 BIOS 的硬件资讯与进行自我测试,并依据配置取得第一个可启动的装置;
读取并运行第一个启动装置内 MBR 的 boot Loader (亦即是 grub, spfdisk 等程序);
依据 boot loader 的配置加载 Kernel ,Kernel 会开始侦测硬件与加载驱动程序;
在硬件驱动成功后,Kernel 会主动呼叫 init 程序,而 init 会取得 run-level 资讯;
init 运行 /etc/rc.d/rc.sysinit 文件来准备软件运行的作业环境 (如网络、时区等);
init 运行 run-level 的各个服务之启动 (script 方式);
init 运行 /etc/rc.d/rc.local 文件;
init 运行终端机模拟程序 mingetty 来启动 login 程序,最后就等待使用者登陆啦;
标签:home,linux,用户,etc,chifan,hahaha,相关,root 来源: https://www.cnblogs.com/quehuitou/p/11282435.html