Linux 用户权限管理
用户系统
Ubuntu 是一个多用户系统,我们可以给不同的使用者创建不同的用户账号,每个用户使用各自的账号登陆,使用用户账号的目的一是方便系统管理员管理,控制不同用户对系统的访问权限,另一方面是为用户提供安全性保护。
在安装 Ubuntu 系统的时候被要求创建一个账户,当我们创建好账号以后,系统会在目录/home下以该用户名创建一个文件夹,所有与该用户有关的文件都会被存储在这个文件文件夹中。 同样的,创建其它用户账号的时候也会在目录/home 下生成一个文件夹来存储该用户的文件。
用户
Ubuntu 下用户类型分为以下 3 类:
- 初次创建的用户,此用户可以完成比普通用户更多的功能。
- root 用户,系统管理员,系统中的最高级别的用户,可以进行很多普通用户和初创用户无法进行的操作。
- 普通用户,安装完操作系统以后被创建的用户。
每个用户都有一个 ID 号,称为 UID,操作系统通过 UID 来识别是哪个用户,用户相关信息可以在文件/etc/passwd 中查看到,
每个用户名后面都有两个数字,第一个数字是用户的 ID,另一个是用户的 GID,也就是用户组 ID。 Ubuntu 里面每个用户都属于一个用户组里面,用户组就是一组有相同属性的用户集合。
Linux用户密码记录在/etc/shadow这个文件里,
用户组
为了方便管理,将用户进行分组。这样就可以设置非本组人员不能访问某些文件。每个用户可以属于多个不同的组。用户和用户组的存在就是为了控制文件的访问权限的。每个用户组都有一个ID,叫做GID。用户组信息存储在/etc/group文件中。
创建用户和用户组
要使用图形化界面创建用户和用户组的话就需要安装gnome-system-tools这个工具:
sudo apt-get install gnome-system-tools
添加用户:adduser命令,adduser 用户名
用户查询:finger命令,finger 用户名
修改用户密码:passwd命令,passwd 用户名
删除用户:deluser命令,deluser 用户名
添加用户组:addgroup命令,addgroup 用户组名
显示组内用户名:groups命令,groups 用户组名
删除用户组:delgroup命令,delgroup用户组名
权限管理
Ubuntu 下我们会常跟用户权限打交道,权限就是用户对于系统资源的使用限制情况, root用户拥有最大的权限,可以为所欲为,装系统的时候创建的用户拥有 root 用户的部分权限,其它普通用户 的权限最低。对于我们做嵌入式开发的人一般不关注用户的权限问题,因为嵌入式基本是单用户,做嵌入式 开发重点关注的是文件的权限问题。 对于一个文件通常有三种权限:读?、写(w)和执行(x),使用命令“ls -l”可以查看某个目录下所有文件的权限信息。
文件的权限有三种:读?、写(w)和执行(x),除了用 r、 w 和 x 表示以外,我们也可以 使用二进制数表示,三种权限就可以使用 3 位二进制数来表示,一种权限对应一个二进制位,如果该位为 1 就表示具备此权限,如果该位为 0 就表示没不具备此权限,
将三种权限 r、 w 和 x 进行不同的组合,即可得到不同的二进制数和八进制数, 3 位权限可以组出 8 种不同的权限组合,
权限 | 二进制数字 | 八进制数字 |
---|
— | 000 | 0 | –x | 001 | 1 | -w- | 010 | 2 | -wx | 011 | 3 | r– | 100 | 4 | r-x | 101 | 5 | rw- | 110 | 6 | rwx | 111 | 7 |
开始使用 a、 u、 g 和 o 表示文件的归属关系,用=、 +和-表示文件权限的变化,
字母 | 意义 |
---|
r | 可读权限 | w | 可写权限 | x | 可执行权限 | a | 所有用户 | u | 归属用户 | g | 归属组 | o | 其它用户 | = | 具备权限 | + | 添加某权限 | - | 去除某权限 |
Linux权限修改
用 Shell 来操作文件的权限管理,主要用到“chmod”和“chown”这两个命令
权限修改命令 chmod
命令“chmod”用于修改文件或者文件夹的权限,权限可以使用前面讲的数字表示也可以使用字母表示, 命令格式如下:
chmod [参数] [文件名/目录名]
参数 | 解释 |
---|
-c | 效果类似“-v”参数,但仅回显更改的部分。 | -f | 不显示错误信息。 | -R | 递归处理,指定目录下的所有文件及其子文件目录一起处理。 | -v | 显示指令的执行过程。 |
文件归属者修改命令 chown
命令 chown 用来修改某个文件或者目录的归属者用户或者用户组,命令格式如下:
chown [参数] [用户名.<组名>] [文件名/目录]
其中[用户名.<组名>]表示要将文件或者目录改为哪一个用户或者用户组,用户名和组名用“.”隔开,其中用户名和组名中的任何一个都可以省略,命令主要参数如下:
参数 | 解释 |
---|
-c | 效果同-v 类似,但仅回显更改的部分。 | -f | 不显示错误信息。 | -h | 只对符号连接的文件做修改,不改动其它任何相关的文件。 | -R | 递归处理,将指定的目录下的所有文件和子目录一起处理。 | -v | 显示处理过程。 |
Linux磁盘管理
Linux 的磁盘管理体系和 Windows 有很大的区别,在 Windows 下经常会遇到“分区”这个概念,在 Linux中一般不叫“分区”而叫“挂载点”。 “挂载点”就是将一个硬盘的一部分做成文件夹的形式,这个文件夹的名字就是“挂载点”,不管在哪个发行版的 Linux 中,用户是绝对看到不到 C 盘、D 盘这样的概念的,只能看到以文件夹形式存在的“挂载点” 。
文件/etc/fstab 详细的记录了 Ubuntu 中硬盘分区的情况,
/ was on /dev/sda1 during installation,意思是根目录“/”是在/dev/sda1 上的,其中“/”是挂载点,“/dev/sda1”就是我们装 Ubuntu 系统的硬盘。
如下命令查看当前系统中的磁盘:
ls /dev/sd*
上图是表示在U盘插和拔的情况下的磁盘情况,sd 表示是 SATA 硬盘或者其它外部设备,最后面的数字表示该硬盘上的第 n 个分区,比如/dev/sda1 就表示磁盘 sda 上的第一个分区。 U盘插上以后,会多出sdb,这代表u盘的磁盘,其中sdb1表示磁盘 sdb 上的第一个分区。
磁盘管理命令
磁盘分区命令 fdisk
如果要对某个磁盘进行分区,可以使用命令 fdisk,命令格如下:
disk [参数]
主要参数如下:
参数 | 解释 |
---|
-b<分区大小> | 指定每个分区的大小。 | -l | 列出指定设备的分区表。 | -s<分区编号> | 将指定的分区大小输出到标准的输出上,单位为块。 | -u | 搭配“-l”参数,会用分区数目取代柱面数目,来表示每个分区的起始地址。 |
可以使用fdisk对U 盘进行分区,
常用的命令如下:
参数 | 解释 |
---|
p | 显示现有的分区 | n | 建立新分区 | t | 更改分区类型 | d | 删除现有的分区 | a | 更改分区启动标志 | w | 对分区的更改写入到硬盘或者存储器中。 | q | 不保存退出。 |
格式化命令 mkfs
使用命令 fdisk 创建好一个分区以后,我们需要对其格式化,也就是在这个分区上创建一个文件系统,Linux 下的格式化命令为 mkfs,命令格式如下:
mkfs [参数] [-t 文件系统类型] [分区名称]
主要参数 | 解释 |
---|
fs | 指定建立文件系统时的参数 | -V | 显示版本信息和简要的使用方法。 | -v | 显示版本信息和详细的使用方法。 |
挂载分区命令 mount
创建好分区并且格式化,进行访问磁盘前需要对分区进行挂载,分区挂载到一个文件夹中,然后通过这个文件访问 U 盘,磁盘挂载命令为 mount,命令格式如下:
mount [参数] -t [类型] [设备名称] [目的文件夹]
主要参数 | 解释 |
---|
-V | 显示程序版本。 | -h | 显示辅助信息。 | -v | 显示执行过程详细信息。 | -o ro | 只读模式挂载。 | -o rw | 读写模式挂载。 | -s-r | 等于-o ro。 | -w | 等于-o rw。 |
卸载命令 umount
当我们不在需要访问已经挂载的 U 盘,可以通过 umount 将其从卸载点卸除,命令格式如下:
umount [参数] -t [文件系统类型] [设备名称]
主要参数 | 解释 |
---|
-a | 卸载/etc/mtab 中的所有文件系统。 | -h | 显示帮助。 | -n | 卸载时不要将信息存入到/etc/mtab 文件中。 | -r | 如果无法成功卸载,则尝试以只读的方式重新挂载。 | -t <文件系统类型> | 仅卸载选项中指定的文件系统。 | -v | 显示执行过程。 |
挂载exfat格式优盘
安装依赖库:
sudo apt install exfat-fuse exfat-utils
完成安装后在磁盘类型选择exfat即可。
reference
- 正点原子开发视频
- 正点原子开发手册
|