使用者识别码: UID 与 GID
虽然我们登陆 Linux 主机的时候,输入的是我们的帐号,但是其实 Linux 主机并不会直接认识你的“帐号名称”的,他仅认识 ID 啊 (ID 就是一组号码啦)。 由于计算机仅认识 0 与 1,所以主机对于数字比较有概念的;至于帐号只是为了让人们容易记忆而已。 而你的 ID 与帐号的对应就在 /etc/passwd 当中哩。(具体的看下篇博客)
有几种 ID呢每个登陆的使用者至少都会取得两个 ID ,一个是使用者 ID (User ID ,简称 UID)、一个是群组 ID (Group ID ,简称 GID)。判别他的拥有者与群组呢
每一个文件都会有所谓的拥有者 ID 与拥有群组 ID ,当我们有要显示文件属性的需求时,系统会依据 /etc/passwd与 /etc/group 的内容, 找到 UID / GID 对应的帐号与群组名称再显示出来。
通过属组和属主才能对应起其访问的权限
认证(你是谁)–授权(你有什么权限)–审计Audition(监督权限使用)
一.什么是用户:
用户是操作着在系统中的身份
用户是系统最底层的安全机制的一部分
用户在系统中以字符和文件的形式存在
把用户名称会转换为UID
有一个地方保存一一对应的关系
比如用户是daemon 对应的UID就是2 (第一个数字)
组讲解
同理组也是需要有一一对应的
解析是在/etc/group
用户密码存放位置
早期用户密码在/etc/passwd
不安全
后来移动到/etc/shadow 密文存放
组密码在gshadow
为了避免用户使用相同的密码后加密值是一样的,需要添加随机数加密
详细的文件信息参考上一篇链接哦
1.查看当前正在使用的用户:
whoami 查看当前用户
[root@localhost ~]# whoami
root
[root@localhost ~]#
2.查看系统中用户的信息:
id 查看正在使用的用户的id信息
id -u 查看用户的uid
-g 查看用户的gid
-G 查看用户所在组的所有id,(用户所属附加组的身份证号)
-n 显示名字而不显示id数字 注意-n前面必须要有-G
[root@localhost ~]# su - student
[student@localhost ~]$ groups #kiosk所支持的群组
student wheel
[student@localhost ~]$ id -G -n student
student wheel
[root@localhost ~]# groups student
student : student wheel
uid相当于身份证号
gid相当于逻辑容器,更方便对系统中文件处理,又叫主组,初始组 例如一家人 只有我家人可以用这个东西而不用指明点姓。
再后面还有附加组,附加身份,是西部的学生,有权利。
3.切换用户:
gnome–session–quit–force ##注销当前用户,用其他用户登陆
su - 用户名称(前提是该用户在系统当中已经存在,若不存在需要现在超级用户模式下新建立用户)
su - 中 “-” 标示在用户身份切换时同时切换当前用户的环境
[root@localhost ~]# su - student
[student@localhost ~]$ ##变成了$
[student@localhost ~]$ su -
Password:
Last login: Sat May 9 08:13:07 EDT 2020 from 172.25.254.63 on pts/0
Last failed login: Sat May 9 11:06:19 EDT 2020 on pts/0
There was 1 failed login attempt since the last successful login.
由超级用户切换到普通用户不需要密码
由普通用户切换到超级用户需要密码
平级用户切换切换也需要密码
vim /etc/passwd
查看id和怎样建立一个id
ls -l /home/
查看家目录下文件属性
[root@localhost ~]# ls -l /home/
total 8
drwx------. 4 hello hello 88 Dec 28 18:23 hello
drwx------. 5 student student 4096 May 9 11:04 student
drwx------. 4 user1 user1 88 Dec 30 17:14 user1
drwx------. 5 zhan zhan 4096 Dec 31 13:26 zhan
中间加分号表示是两条命令
watch -n 1 +命令 比如date 表示过一秒执行一次
再新打开一个shell观察每次的变化。
userdel -r westos 一次删干净 删除用户
useradd westos 建立用户
system_user系统内部使用的不给外部
二.用户建立与群组建立
组的建立是因为相当于用户组,用户容器。把多个用户归纳为一个组对文件具有某种访问权限。便于实现权限分配。
用户信息监控命令
watch -n 1表示每隔1秒执行一次
watch -n 1 'tail -n 3 /etc/passwd /etc/group;ls -l /home'
useradd ##建立用户
创建用户的时候会自动创建一个和Uid同名的组gid=uid作为私有组,如果被占用了,则会自动+1 这个组只包含这一个用户
-u | 后面接的是 UID ,是一组数字。直接指定一个特定的 UID 给这个帐号; |
---|---|
-g | 后面接的那个群组名称就是我们上面提到的initial group (初始)啦~该群组的 GID 会被放置到 /etc/passwd 的第四个字段内。 |
-G | 后面接的群组名称则是这个帐号还可以加入的群组。这个选项与参数会修改 /etc/group 内的相关数据喔,最后的一列是哪些用户的附加组! |
-m | 强制!要创建使用者主文件夹!(一般帐号默认值) |
-c | 这个就是 /etc/passwd 的第五栏的说明内容啦 |
-d | 指定某个目录成为主文件夹,而不要使用默认值。务必使用绝对路径! |
-r | :创建一个系统的帐号,这个帐号的 UID 会有限制 (参考 /etc/login.defs) |
-s | 后面接一个 shell ,若没有指定则默认是 /bin/bash 的啦~ |
userdel 用户名 ###删除用户但不删除用户的配置文件
userdel -r 用户名 ###删除用户的同时还会删除用户的配置文件
CentOS 这些默认值主要会帮我们处理几个项目:
在 /etc/passwd 里面创建一行与帐号相关的数据,包括创建 UID/GID/主文件夹等;
在 /etc/shadow 里面将此帐号的密码相关参数填入,但是尚未有密码;
在 /etc/group 里面加入一个与帐号名称一模一样的群组名称;
在 /home 下面创建一个与帐号同名的目录作为使用者主文件夹,且权限为 700
建立用户时,读取/etc/login.defs文件内容确定规则
对同一个用户例如westos,每useradd时要先userdel.
useradd -u 8888 westos ##指定用户的uid
useradd -g 21 westos ##指定用户的初始组id,“21用户组必须是存在的”
useradd -g xx此处是组名字或者组的id号都是可以的 xxxx
如果不存在会报错的
useradd -G 21 westos ##指定用户的附加组id“21用户组必须存在”
最后一个字段表示用户列表,以此组为附加组的用户列表
useradd -c “hello” westos ##指定用户的说明
useradd -d /home/lee westos ##指定用户的家目录
如果指定用户家目录提前已经存在了呢?
实际上指定家目录就是从拷贝/etc/skel目录,然后重命名完成的
此处因为已经存在该目录了,所以拷贝失败,并不会存在任何文件。
useradd -s /bin/sh westos ##指定用户的默认shell
cat /etc/shells查看所有的shell
建立用户的同时会建立他的组信息,家目录信息;
当建立一个用户的时候,若显示已经存在,则直接删除再建立
小知识:
创建一个系统帐号,名称为 vbird3
[root@study ~]# useradd -r vbird3
[root@study ~]# ll -d /home/vbird3
ls: cannot access /home/vbird3: No such file or directorya <==不会主动创建主文件夹
[root@study ~]# grep vbird3 /etc/passwd /etc/shadow /etc/group
/etc/passwd:vbird3:x:699:699::/home/vbird3:/bin/bash
/etc/shadow:vbird3:!!:16636::::::
/etc/group:vbird3:x:699:
我们在谈到 UID 的时候曾经说过一般帐号应该是 1000 号以后,那使用者自己创建的系统帐号则一般是小于 1000 号以下的。 所以在这里我们加上 -r 这个选项以后,系统就会主动将帐号与帐号同名群组的 UID/GID 都指定小于 1000 以下, 在本案例中则是使用 699(UID) 与699(GID) 啰!此外由于系统帐号主要是用来进行运行系统所需服务的权限设置, 所以系统帐号默认都不会主动创建主文件夹的!
useradd 参考档
[root@study ~]# useradd -D 默认配置属性信息!!!
GROUP=100 <==默认的群组,新建帐号的初始群组使用,GID为100者,zhan的初始群组为 zhan。这是因为针对群组的角度有两种不同的机制所致.
HOME=/home <==默认的主文件夹所在目录
INACTIVE=-1 <==密 码失效日,在 shadow 内的第 7 栏
EXPIRE= <==帐号失效日,在 shadow 内的第 8 栏
SHELL=/bin/bash <==默认的 shell
SKEL=/etc/skel <==使用者主文件夹的内容数据参考目录
CREATE_MAIL_SPOOL=yes <==是否主动帮使用者创建邮件信箱(mailbox)每创建一个用户就会在/var/spool/mail下创建一个油桶 接受邮件的
useradd -D的配置在这个文件
包含用户创建的时候很多默认的配置信息
密码信息,比如什么时候过期等等 id号信息取值范围 加密使用的算法等等
groupadd ##建立用户组
每一个进程在访问资源时,是代表某个用户在运行
进程的权限实际上是发起这个命令的人的权限。
系统用户就是某些开机进程以发起人身份运行,开机守护类进程都是,从来不需要登录系统,所以被劫持也没关系
系统组的值在1-999之间
-g 更改gid -n更改组名
用户信息监控命令
watch -n 1 “tail -n 3 /etc/passwd /etc/group ; ls -l /home “
注意:ctrl+c可以退出,watch -n 1 表示每秒更新一次。
groupadd -g 888 westos ##建立用户组并指定用户组的id
groupdel ##删除用户组
用户组不能重复建立,一定要先删除才可以建立!!!!!;
注意:
如果想要自己指定uid,则先删除刚才建立的用户组,在建立的同时指定uid ### groupadd -g uid 用户组名字;
建立用户组的同时也会建立它的家目录,同样删除用户组的同时也会删除它的家目录(这一点与用户的管理不一样);
用户组不能重复建立,一定要先删除才可以建立!!!!!;
在建立用户之前,可以查看/etc/login.defs这个文件,查看所有内容的规则(id范围等等),但是这些建立用户的时候都可以指定修改;
vim /etc/login.defs
总结:以上改用户组和用户的信息都需要先删除,在新建立的同时指定信息
但是如果某个组就不能删除呢(groupdel)?原因很简单,“有某个帐号
(/etc/passwd) 的 initial group 使用该群组!
三.更改用户信息(不需要删除)
[root@study ~]# usermod [-cdegGlsuLU] username
选项与参数:
-c | 后面接帐号的说明,即 /etc/passwd 第五栏的说明栏,可以加入一些帐号的说明。 |
---|---|
-d | 后面接帐号的主文件夹,即修改 /etc/passwd 的第六栏; |
-e | 后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 内的第八个字段数据啦! |
-g | :后面接初始群组,修改 /etc/passwd 的第四个字段,亦即是 GID 的字段! |
-G | 后面接次要群组,修改这个使用者能够支持的群组,修改的是 /etc/group 啰~ |
-a | 与 -G 合用,可“增加次要群组的支持”而非“设置”喔! |
-l | 后面接帐号名称。亦即是修改帐号名称, /etc/passwd 的第一栏! |
-s | 后面接 Shell 的实际文件,例如 /bin/bash 或 /bin/csh 等等。 |
-u | 后面接 UID 数字啦!即 /etc/passwd 第三栏的数据; |
-L | 暂时将使用者的密码冻结,让他无法登陆。其实仅改 /etc/shadow 的密码栏。 |
-U | 将 /etc/shadow 密码栏的 ! 拿掉,解冻啦! |
提前先useradd westos
- usermod -l 新名称 westos ##更改用户的名称
- usermod -u 6666 westos ##更改用户uid
- usermod -g 21 westos ##更改用户的初始组
usermod -G 21 westos ##更改用户的附加组
结果:/etc/group
tcpdump:x:72:
slocate:x:21:westos
westos:x:1001:
usermod -aG 72 westos ##添加用户的附加组
结果:/etc/group
tcpdump:x:72:westos
slocate:x:21:westos
westos:x:1001:
注意:使用-G时,如果已有附加组,则会代替;如果不想代替,想让两个都存在的话,使用-aG
usermod -G “” westos ##删除用户所在附加组的身份
usermod -c “hahah” westos ##指定用户说明文字
usermod -d /home/lee westos ##更改用户家目录的指向
usermod -md /home/lee westos ##更改用户家目录
usermod -d /home/lee westos 更改用户家目录的指向。
usermod -md /home/lee westos 更改用户家目录
注意:如果先执行了上一步,则需要(usermod -d /home/westos westos让指向指回westos,然后再执行本条-md命令,则家目录和指向都会改变)】
家目录指向其实就像一个路径
什么是家目录 :用户的家目录 , 建立用户的时候直接指向了它在哪里(默认的位置)
更改家目录指向 -d
更改家目录指向及其名字 -md
usermod -L westos ##冻结用户 passwd -S student查看状态
usermod -U westos ##解锁用户
usermod -G 72,21 westos 同时建立两个附加组。
#######用户认证信息#####
只有普通用户的最短有效期才有用
passwd更严格,需要usermod两次
重新进入找以前的ctrl+r 例如watch,找到以watch开头的
passwd -S student 来查看 注意是student
然后用命令冻结,再看就被锁住了,用命令解冻,在看就好了
TEST
tom,harry,leo都有支持次要群组,但该群组不见得会存在,因此需要先手动创建他!