大家知道,不论在Windows下还是在Linux下登录系统时都是以一个用户的身份来登录的,那么我们今天就来探讨下Linux有关用户和组的命令及信息:
Linux中的用户有与之对应的UID,而Linux中用户分为:管理员 root uid=0、系统用户uid:1-499、普通用户uid:>=500;而组也有与之对应的GID,Linux中组分为:系统组、额外组(附加组)。一个用户具有基本组和附加组。说到这,我们都知道之前提到的Linux哲学思想之一:一切皆文件。那么这些存放用户信息和组信息都存放在哪呢,我们来看看:
用户:/etc/passwd
密码:/etc/shadow
组:/etc/group
组密码:/etc/gshadow
1、下面我们就来认识一些用于操作系统用户的命令:
(1)、useradd USERNAME 它还有一些相关参数:-u 指定用户的uid;-g 指定用户所在基本组的gid(此组一定要存在哦!);-G 指定用户的附加组;-c 指定用户的备注信息;-d 指定用户的家目录;-M 不为次用户建立家目录(系统默认的新建每一个新用户都会为其建立家目录)。
Eg:#useradd –u 501 redhat
(2)、passwd USERNAME 当然它也有一些参数:-l 锁定某个用户;-u 解锁某个用户;--stdin 通过管道输出密码,不必使用户输入两次。
Eg:#passwd redhat
(3)、pwck 检查/etc/passwd文件的完整性、合法性。
(4)、id USERNAME 显示当前用户的完整性。
Eg: #id redhat
2、修改用户信息:
(1)、finger USERNAME 显示用户的当前信息,备注等。
(2)、chfn USERNAME 修改用户的信息(finger所显示的那些哦)。
(3)、usermod USERNAME 其一些参数:--u UID;-g GID;-a -G 追加额外组;-c 注释;-d 家目录(原有的文件将会丢失);-m -d 则不会丢失;-s shell;-l 修改登录名;-L 锁定账户;-U解锁账户;-e 帐号失效时间。
(4)、chage –m 修改用户密码的最短失效时间。
(5)、userdel USERNAME 删除用户;-r 删除用户的家目录。
3、组的操作:
(1)、groupadd GROUPNAME 参数:-g 指定GID;-r 将此组添加为系统组。
(2)、groupmod GROUPNAME 参数:-u 修改GID;-n 修改组名。
(3)、gpasswd GROUPNAME 为该组添加密码(当用户切换至既不是自己的基本组也不是其附加组的其他组时则需要密码)。
Eg:
4、Linux的安全模型:
(1)、每一个文件都有自己的属主和属组;
(2)、没一个进程都以某个用户和组的身份运行;
(3)、每一个文件的权限都是读(r)写(w)执行(x);
(4)、其权限顺序是用户 组 其他。
这时我们就要认识改变文件或目录权限的命令了:
【1】、chown [USERNAME]:[GROUPNAME] FILE 改变文件的属主、属组;
【2】、chgrp GROUPNAME FILE 改变文件的属组;
【3】、chmod 644 file1 位数不够时,从右至左进行执行(其中 r = 4, w = 2 ,x = 1)
chmod ug=rw/u=rw,g=r,o= /u+rx,g-x file1 u=属主、g=属组、o=其他、a=所有
chmod [-R] --reference=file2 file1 以file2的权限为参考将file1权限修改成和file2相同,-R指的是递归作用。
5、不使用命令,通过修改文件内容来实现添加用户和组:
1、新建一个用户,名为:agony;密码:119
2、新建一个组,名为:ubunt;密码:119
3、查看/etc/passwd文件内添加的内容:
文件内容由":"分割分为7段,第一段为用户名、第二段为密码占位符、第三段uid、第四段gid、第五段备注信息、第六段家目录、第七段shell
4、查看/etc/group文件内添加的内容:
文件内容由":"分割分为4段,第一段为用户名、第二段为占位符、第三段gid、第四段是以其为附加组的用户名
5、查看/etc/shadow文件内添加的内容:
文件内容由":"分割为9段,第一段为用户名、第二段为加密后的MD5值、第三段为用户距1970年1月1日的分钟数、第四段为密码最短的修改时间"0"代表不限制、第五段为密码的使用的最长时间"99999"代表五期限、第六段为密码过期前多少天警告、第七段指密码过期后还可使用的时间、第八段指密码过期后多少天禁止使用、第九段保留
6、查看/etc/gshadow文件内添加的内容:
文件内容由":"分割为4段,第一段为组名、第二段为加密后的组密码的MD5值、第三段为逗号分隔的列表管理员组、第四段为逗号分隔的列表组元件。
发现里面的文件和/etc/skel文件中的文件一模一样,由此可见,在先建立一个用户时,会将/etc/skel中的文件全部复制到其家目录中。
由此可见,我们执行的添加用户和组的命令时,只是在这四个文件内写入了固定格式的数据而已,因此我们只需要使用文本编辑器在这四个文件中按照固定格式添加正确格式的数据,即可完成用户和组的添加,我们发现其他的各个字段的数据均可添加,唯一的就是/etc/shadow和/etc/gshadow中的第二个字段:加密密码后的MD5值。Linux中这样一个命令:
openssl passwd -1 -salt STRING STRING为任意的八位字符,回车,随后键入密码,回车,便可得到该密码加密后的MD5值,而之前的STRING作用是作为加密过程中的安全添加,俗称salt。
所以我们总结出修改文件内容实现添加用户和组的步骤:
1、修改/etc/passwd文件
2、修改/etc/group文件
3、修改/etc/shadow文件
4、在/home下建立,写入文件的用户的家目录,并且将/etc/skel下文件的所有文件复制到其家目录下,将其家目录及其子文件和子目录的属主和属组修改为添加的该用户
5、将其家目录及其子文件和子目录的属组和其他的权限设为没有任何权限;
如: