文章目录
- 1. 含义和作用
- ① 为什么要有用户这个概念
- ② linux操作权限的手段
- ③ 查看用户(GUI)
- windows
- linux
- ④ linux命令查看用户+系统账户
- UID
- 上述账户各字段解析
- 查看账户真正的密码(即x代表什么)
- 2. 创建用户,删除,更改
- ① 命令添加用户
- 问题
- ② 命令删除用户
- 注
- ③ 更改用户配置
- usermod
- 修改用户密码
- passwd
- chpasswd
- chsh
- chfn
- chage
- 修改/etc/shadow里的一些操作字段
- 3. linux组(group)
- ① 小组的目的
- ② 查看所有的配置组
- ③ 创建组
- 往组里添加用户
- ④ 修改组
- ④ 删除组
- 4. 文件和文件夹权限
- 问题
- 5. chmod
- 6. 磁盘管理
- 7. 推荐
1. 含义和作用
① 为什么要有用户这个概念
问: 系统中为什么要有用户这个概念?而且为什么要有用户和密码?为什么有些程序我们要右键使用管理员身份?
答: 在Windows XP时代,没有管理员身份,但是有用户(即:当前谁在操作这些指令,创建操作系统的过程中会提醒我们创建用户)的概念,所有的用户都具有管理员权限,所以XP系统非常容易中毒。–老系统容易中毒,一部分原因是因为权限问题(大家权限都一样,例如,从外面来了一个人进入我们的网络以后,把我们的主机黑了,这个时候他也在我们的主机上创建一个用户,拥有至高无上的权限)。当然,这只是一部分。
所以不可能让所有用户都拥有至高无上的权限。用户与权限这两个话题也是并列开的。如果缺乏这两个东西,可以认为系统是不安全的。所以必须要提供一种功能,让其他用户没有那么高的权限,避免被一些非法的手段更改计算机中的一些机制。
linux本质而言要比Windows好很多的原因就在于linux更安全,linux每次都更新,而且不是所有东西都给你至高无上的权限。但是没有绝对安全的东西,只能说相对安全。
② linux操作权限的手段
linux最主要的是通过用户账户这个手段操作权限。说白了就是用用户控制权限。root用户至高无上的权限,普通用户权限没那么高。普通用户可以用sudo命令临时获取管理员权限。
③ 查看用户(GUI)
windows
linux
④ linux命令查看用户+系统账户
命令:cat /etc/passwd
除了root、aria、hah这三个我们熟悉的用户以外,其余的也是用户,但是这些用户不是真正的用户,它有一个专业的名字叫系统账户(有些软件是需要用到系统级账户的)。有些软件和服务需要单独的账户去运行,这时就会用到这些账户。也就是说,在登录linux设备时,一些后台软件或服务可能会去调用这些账户从而保证正常运行。–这块不用刻意理解
不提倡用root权限去登录linux操作系统(原因:执行所有的命令没有提示)或者在windows里把所有东西设置管理员权限,电脑哪天中毒了都不知道。如果哪天有非法人员进入我们的服务器中,作为root用户直接登录(假如所有人都是root),那么他就可以立刻使用我们的root权限,肆意操作我们的所有文件,非常危险。
所以linux并没有把所有的东西都挂在root目录下,而是单独创建一些系统级账户,防止非法人员攻破root目录后肆意操作所有命令,甚至把我们的系统删了。有了这些系统级账户,给某些系统级的服务和命令单独创建了一个用户去执行,非法人员想要操作所有系统级的东西,就必须把这些系统级账户全黑了。linux大费周折创建这些系统级别的东西,就是为了安全问题。
UID
① 每个用户都有一个id(身份证)
② UID – 用户id(其实就是一些数字,每个用户都有唯一的) 即可以跟踪谁在操作它
登录用的是登录名,不是UID,UID本质上是看不到的。因为我们登录的时候用的是用户名(每一个用户对应着一个密码),而不是id
注:
aria:用户名(登录时的名字)
aria-virtual-machine:主机名
上述账户各字段解析
我们会发现系统账户的X后面的值(UID)都是低于500的(目的:预留一些系统账户)。
UID < 500 --系统账户 不要随意修改
UID >= 500 -普通账户
aria:用户名
x:用户密码(加密过了)
1000:UID
1000:账户的组ID
Aria, , ,:备注字段(不用管,可以理解为账户用户描述(例如,用户是做什么的))
/home/aria:用户home目录
/bin/bash:用户默认使用的shell
查看账户真正的密码(即x代表什么)
命令:sudo cat /etc/shadow
发现密码还是加密的。系统级别的干脆画个*。! 代表目前不存在密码。
sssd:用户
*:加密后的密码
19432:自从上次修改密码后过去的天数(从1970年1月1日开始算)
0:多少天之后能修改密码
99999:多少天之后必须更改密码
7:如果密码过期了,提前多少天提醒用户更改密码 (服务器会用到这个东西,个人用户几乎用不到)
第七个字段:密码过期多少天后禁用
第八个字段:禁用日期(用天数表示,也是从1970年开始算)
第九个字段:预留字段(可能以后会用到)
2. 创建用户,删除,更改
① 命令添加用户
sudo useradd +用户名
注:
linux新用户创建成功以后,一定会给我们默认的home路径以及一些有意思的东西,例如:.bash_history 、.bash_logout、.bashrc、.profile这四个必须要创建的文件(这四个文件创建好以后,其余的都好说)等。
问题
问:用sudo useradd user11创建用户以后,再用cat /etc/passwd查看,发现该用户所属的home路径是/home/user11,但是执行cd /home && ls以后却发现没有user11这个用户,这是为什么?
答:在Linux系统中,使用sudo useradd user11命令创建一个新用户时,该命令只是将用户信息添加到系统帐户数据库中(通常是/etc/passwd文件),但是并不会自动为该用户创建主目录(home directory)。这就是为什么你在执行cd /home && ls后没有看到user11这个用户的主目录。
要自动创建用户的主目录,你应该使用useradd命令的-m选项。这个选项会确保在创建用户时同时创建其主目录。
② 命令删除用户
sudo userdel +用户名
注
sudo userdel + 用户名 只能删除其在/etc/passwd下的配置信息,并不能删除为其创建的主目录 在图形界面创建用户会自动创建主目录
删除主目录:
③ 更改用户配置
我们总可以在配置文件中修改用户的一些配置
usermod
usermod-- 修改命令 可以更改/etc/passwd这个文件夹下大部分的字段
详细用法
例子:(修改用户帐号的备注文字)
修改用户密码
passwd
sudo passwd + 用户名
注:
该命令还可以用于为新用户设置密码,上图中第一次执行这个命令的作用就可以理解为user11设置登录密码。
chpasswd
sudo chpasswd < 文件名
适用于批量修改密码。它可以从一个txt文件(文件格式必须是username:password,而且不能有空行)里读取密码信息,读完以后给密码加密,然后再去设置。
lsattr命令–可以用于了解这个命令
chpasswd < passwd.txt使用该命令时前面不加sudo,也会产生’ passwd:Authentication token manipulation error '这个报错
chsh
修改一些特定账户的信息 不是特别常用
chsh
注:
① 命令后的参数应根据不同的发行版而言,例如:Ubuntu20.04不支持chsh -l
② chsh 和 chsh -s + shell路径 均可以修改当前使用的shell
③ 一定要保证修改后的shell在系统中是存在的
chfn
chfn
注:
① finger命令(使用前需要先安装):
在计算机领域,finger 是一个用于显示关于系统用户的详细信息的命令和服务。它通常显示用户的登录名、真实姓名、终端、登录时间等信息。
具体来说:
finger 命令:在命令行中,可以使用 finger 命令来查看用户的详细信息。例如,执行 finger username 将显示有关 username 用户的信息。
finger 服务:在某些系统中,finger 服务也可以通过网络提供类似的信息,允许远程查询用户信息。
chfn 命令用来更改用户的详细信息,这些信息通常由 finger 命令显示。通过 chfn 命令,可以修改如真实姓名、电话号码等字段,这样当其他用户使用 finger 命令查询用户信息时,显示的内容将更新为最新的信息。
总之,finger 在这里指的是一个用于查询和显示用户信息的工具或服务,而 chfn 则是用于修改这些信息的命令。
② 命令后的参数应根据不同的发行版而言
chage
chage
注:
① sudo chage -l username:显示用户密码过期信息
② chage用法举例
修改/etc/shadow里的一些操作字段
可以用chage命令修改/etc/shadow里的一些操作字段
chage -h – 查看帮助文档
注:
① 一些日期的天数是从1970年1月1日开始算的
② change当中好用的命令:chage -E(设置过期的日期,运维工程师常用) --过期以后该用户仍然存在,但是不能使用
3. linux组(group)
① 小组的目的
小组的目的:共享资源或者说共享资源的权限
比如我现在拥有一个开发团队,某些程序员本质上不应该有访问数据库的权限,或者说某些程序员不该拥有某些软件的使用权限,这时我们就会用到组这个概念。即把程序员分成几个小组,然后设定每个开发小组的访问权限,组内成员都可以访问指定资源(即组内成员拥有共享资源的权限)。
对于某些文件、软件或者目录等内容,要求某些小组能使用,有些小组不能使用,这就又涉及到了共用权限的问题。
但是不幸的是,linux不同的发行版可能会有不同。有些发行版在我创建一个组以后,它会把所有用户都纳入这个组。这些文件是可读的,把所有成员都纳进同一个组,就意味着大家都能看到,不太安全;但是有些发行版会给每一个用户单独创建一个组,这就很牛。(例如Ubuntu,它会为每一个用户创建一个单独与用户名相同的组,后期可以配置,最后再自己去管理。Ubuntu不允许把所有用户纳入到一个组里)
② 查看所有的配置组
tail /etc/group – 可以发现每个组都拥有不同的id
第一个参数:组的名字 – 和用户名相同
第二个参数:组的密码
第三个参数:组ID(GID)
第四个参数:属于该组的列表有哪些,即什么用户属于该组
注:不要妄想修改这个文件,把一个用户添加到一个组里,这样非常危险
③ 创建组
sudo groupadd + 组名
往组里添加用户
借助usermod命令
usermod -h 查看帮助文档
④ 修改组
借助groupmod命令
groupmod -h – 查看帮助文档
例如(修改组名):
④ 删除组
sudo groupdel + 组名
4. 文件和文件夹权限
linux文件基本属性
第一组:帮派创始人的权限 --对象所属的主权限
第二组:帮派下属成员权限
第三组:其他帮派成员权限
把所有的帮派替换成组
第一列名字:用户名
第二列名字:组名
因为Ubuntu创建一个用户的时候,单独创建了一个和用户名相同的组
问题
问:为什么r对应的数值是4,w对应的数值是2,r对应的数值是1?
答:因为在 Unix 系统设计中,文件的权限位是使用三个比特来表示的,而 r、w、x 恰好是这些比特位的代表性操作,其对应的二进制位分别是 100(读取)、010(写入)、001(执行)。因此,r 的数值为 4是因为100转化为十进制是4,其余同理。
5. chmod
① chmod – 修改安全权限 这部分是重点,尤其要理解它那个图,有些文件和工具可能会用到它
② 一般来说不需要理解八进制语法怎么算的
③ chmod 777
④ chmod 000
6. 磁盘管理
linux磁盘管理 – 这部分可以用到再去学
7. 推荐
frank的linux课教程 以上笔记全部来源于此
-----------------------------------未完待续...------------------------
---------------------------出现问题欢迎批评指正啊 ---------------------