目录
一、用户与组的概述
linux是基于用户账号的身份来对实现对资源访问进行控制。
用户账号根据种类分为三大类:
1、超级用户:是UID为0 的管理员账户,一个系统中同时只能存在一个,默认是root,这个用户名可以修改。
2、普通用户:UID是1000—65535,是自己创建的用户信息
3、程序用户:UID号是1—999,是只能登录程序,不能登录系统的账号
组账号:
组分为基本组和附加组
基本组:每个账号在创建的时候都会默认创建一个同名的基本组
附加组:可以选择加入,也可以选择不加入,附加组是在用户加入之后就可以享受组的权限,一个用户可以有多个附加组,也可以正常退出,但是基本组就是只能有一个并且不能退出。
UID跟GID
UID:是用户的序列号,用来分辨用户的种类
GID:是组的序列号,用来分辨组的种类
用户账号的信息一般默认都是存储在 etc下面的passwd文件中。查看文件就会发现,其中每一条都是一个账户的信息,因为信息比较长,我就把我的账号信息截个图口述一下
每段代表的含义都不一样,以冒号分割开
第一位:lhk的位置就是你账户的名称,每个账户的名称都不一样
第二位:x的位置是你当前账户的密码,显示一个x是代表的有密码,密码是在另外一个文件中以加密的方式显示,在这里看不到
第三位:是你账户的UID,来判断你账户的种类的方式
第四位:是你基本组的GID号
第五位:是用户的说明
第六位:该账号的家目录的位置
第七位:账号的状态,是否允许账号登录系统
上面的内容也说了,用户的登录等基本信息都在passwd中记录着,而密码等重要信息在另外一个文件中记录着,位置也是在etc下面,是在shadow文件中记录着,一条记录代表着一个账户的信息
上图的第三位是空,下面我找了一个别的示例可以看下
第二位密码栏显示的是两个!!表示是这个账号没有密码,是不能登录系统的。
二、管理用户账号
1、添加账号
在装好系统之后会让创建一个账户以及设置root账户的密码,但是用一段时间之后往往会发现一个非管理员账户不够用,所以就需要再创建用户。
创建用户的命令是:useradd,使用的格式也很简单
useradd [ 选项 ] 用户名
创建用户之后除了密码没有之外各项数值都是默认的,默认的基本组之类的,如果需要更改默认值则需要选择不同的选项
没什么需要特别注意的,唯一一点就是在创建指定用户的UID的时候别设置错了,普通用户的UID是1000—65535之间,少于1000就不是普通用户了。
2、更改用户密码
在一些场合下可能会导致密码的泄露或者定期更改密码提高安全度等等的一些因由,需要定期的更改密码,来保证密码的安全程度。
更改密码的命令是:passwd
写的格式跟创建用户的命令的格式类似:
passwd [ 选项 ] 用户名
中间 的选项不加的话就是更改密码
更改用户密码的常用选项比较少就四个
-d:清除账户的密码
-l:锁定账户的密码(冻结账户)
-S:查看用户的状态
-u:解锁用户
这个功能除了改密一般用不到,这个功能主要是跟管理账号的人员打交道的,特别是管理社交软件或者是游戏账号的,基本都经常用这个功能,别的正常使用一般用不到。
3、删除用户账号
说完锁定(冻结)用户,接着说一下删除账号,经过几次“冻结”警告之后,用户继续不长记性,就会就用删号处理。开个玩笑,当这个用户账号的利用价值用完之后,继续留着也是占用空间就会选择删除处理
删除账户的命令是: userdel
格式为: userdel [ 选项 ] 用户名
一般这个的选项只有-r这一个选项,-r是在删除用户的时候同时删除掉用户所属的家目录
4、修改用户属性
更改用户密码状态的介绍了,肯定也少不了用户账号属性的,换个通俗易懂的说法就是重命名,一种在网络上每个人都用过的功能。
使用的命令是:usermod
使用的格式是: usermod [ 选项 ] 用户名
常用的选项除了有 -l、-L、-U三种,还和创建账户的选项一致
更改用户名这个,是一般不常用,名字什么没什么区别
管理用户的命令大致就上面几种,但是在浏览用户的家目录的时候,千万别将其中的几个文件给误删掉,特别是账户的初始配置文件。
当在新建用户的时候,或从 etc下的skel中复制几个文件,以此来供应用户的正常使用
上面就是在管理用户账号的时候需要注意的事项
三、管理组
组账号的信息是存储在etc下面的group里面,每一条都对应着一个组账号的信息,这里就不一一言述了,跟用户的信息格式一样
组账号的密码等数据是存储在etc下的gshadow中,格式也是同上的道理,不介绍了。
1、添加与删除组账号
添加组账号是使用 groupadd命令,没有什么选项,直接设定GID号创建组账号名就可以了
创建的格式: groupadd [ -g GID] 组账号名
删除组账号是使用 groupdel命令,也没有什么选项,直接设定删除组账号名就可以了
删除的格式: groupdel 组账号名
2、添加删除组成员
一个组也是要定期进行管理的,就像是公司的群一样,来新人就需要拉进去,员工走了之后没有及时退群也需要移除内部群,道理跟这个一样。
管理组成员的命令是:gpasswd
格式是:gpasswd [ 选项 ] 组账号名
常用的选项有三种:
-a:向组内添加一个成员
-d:从组内移除一个成员
-M:批量定义组内的成员,批量加、批量删除,操作的成员与成员之间用逗号隔开
管理组的方式比较简单,没什么复杂的
四、查询账号
主要是用于查看个个账户的信息,例如UID,GID之类的基本信息,或者是家目录的位置等信息
第一种比较简单的查看方式是:id 。id加上目标的用户名就可以看到目标用户的UID、GID、基本组这个三个状态
第二种需要先安装,这个查看方式是:finger 。加上用户名就可以看到目标的家目录等目录的信息。
第三种查看方式的命令比较笼统:w、who、users这三种,都是查看访问主机的用户的信息,远程连接等方式连接主机的目标都有记录。
五、目录的权限管理
由上图可以看到,文件或者目录的首部,除了第一位以外到-的中间,是九位,由三个rwx占满分成三段,第一段代表的是宿主,也就是账号本身,第二段代表的是属组,也就是账号的基本组或者是附加组,第三段是其他账户,就是访客。
每段的rwx代表的含义都是一样的,代表着三个权限
r:读的权限、允许查看文件内容,显示目录列表内的内容
w:是写的权限、允许修改文件、在目录中新建/删除文件或者子目录
x:是执行的权限、允许运行程序
每一段中的三个字符都对应着二进制中的数位
x对应着1、w对应着2、r对应着4,也就是说,比如宿主的权限是满的话就是4+2+1也就是7,如果一个文件对所有人的权限全开就是 7 7 7
1、文件和目录的权限设置
一个目录或者文件,通常都会对不同的人群开放不同的权限,有的人能改写,有的人只能用,有的人只能查看,都不一样,这就需要设置相对应的权限。
对目录划分权限的命令是:chmod
命令格式是:chmod [ 选项 ] [ 方式 ] [ 权限 ] 文件或者目录
选项有四种:
u:是为属主设置权限
g:为属组设置权限
0:是为其他用户设置权限
a:是所有用户
如果都不选,默认是所有用户
操作的方式有三种
+:是为选择的选项增加权限
-:是为选择的选项减去权限
=:是为选择的选项赋予权限
第三项跟前两项差不多,又优点不同,前两个是增加或者减去来达到目的,第三个是直接设置的等于目的,这样方便快捷,比较省事。
权限上面也说了,公有三种:r、w、x三种,如果不想写字符,直接用三个数字代替也是可以,算法上面也说了。
如图,就是去掉了其他用户的读取权限,也就是其他用户不再能查看这个目录的内容。其他的权限的设置方式雷同,不在一个一个演示。
2、修改文件的属主、属组
文件就像是一个记事本,轮到谁用,谁就可以更换外面的一层壳,让别人知道现在轮到谁在使用,系统里面文件也是,假如是几个人合伙做一个项目,每个人负责的区域不同,或者就是需要流水方式作业,就需要更换属主,来证明现在是谁来接手,别的人勿动,就需要用到更换属主、属组。
更换这两种属性的命令是:chown
书写格式有三种:
一、chown 属主 文件或者目录 //更改文件的属主,不改变属组
二、chown :属组 文件或者目录 //更改文件的属组,不改变属主
三、chown 属主:属组 文件或者目录 //文件的属组属主一起变更
可以看到,两个文件的属主跟属组对发生了相对应的变动。现在就知道现在已经被谁接手了。
3、权限掩码
这个是一个非常适用的功能,是设置一下默认的权限的数值,之后创建的文件、目录默认都是按照这个权限走,只有在创建某些特殊文件的时候在设置别的权限。非常的省时省力。
使用到的命令是:umask
使用的格式是:umask 022 //这个022是反掩码,就是上面那个三段的三项权限7 7 7 的反掩码
可以理解为 7-0 7-2 7-2 也就是实际的权限是755 也就是rwxr-xr-x这三段
但是需要注意的一点就是,文件在创建的时候是没有执行权限的,也就是最高是6 6 6
查看权限的命令直接打umask就可以
上图可以看到,默认的权限值是为 0 1 1 的反掩码
这是刚刚创建的c的权限,级别正是 7 6 6 的权限,是无误的,后面创建的文件或者目录都是默认使用这个,只有修改这个默认项或者手动更改谋个文件的权限
总结
了解用户账号,组账号等之间的管理,创建信息之后明白不少别的应用账号的管理方式,以前只知道这是个账号,现在明白了账号之间的管理方式,理解了一些运行的原理。
还有文件的权限,也是让初学者耳目一新,以前懵懂的东西都豁然开朗,发布文章之列的不让谁看,就是类似的这种设置权限,能理解一些周围生活中常用软件的一些机制,虽然只知道这些不能深度理解原理,但是明面的意义理解了,离结果还远吗?理解初始命令才是进一步命令的基础。