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 | 100 | 4 |
w | 010 | 2 |
x | 001 | 1 |
将三种权限 r、 w 和 x 进行不同的组合,即可得到不同的二进制数和八进制数, 3 位权限可以组出 8 种不同的权限组合,
开始使用 a、 u、 g 和 o 表示文件的归属关系,用=、 +和-表示文件权限的变化,
Linux权限修改
用 Shell 来操作文件的权限管理,主要用到“chmod”和“chown”这两个命令
权限修改命令 chmod
命令“chmod”用于修改文件或者文件夹的权限,权限可以使用前面讲的数字表示也可以使用字母表示,
命令格式如下:
chmod [参数] [文件名/目录名]
文件归属者修改命令 chown
命令 chown 用来修改某个文件或者目录的归属者用户或者用户组,命令格式如下:
chown [参数] [用户名.<组名>] [文件名/目录]
其中[用户名.<组名>]表示要将文件或者目录改为哪一个用户或者用户组,用户名和组名用“.”隔开,其中用户名和组名中的任何一个都可以省略,命令主要参数如下:
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 [参数]
主要参数如下:
可以使用fdisk对U 盘进行分区,
常用的命令如下:
格式化命令 mkfs
使用命令 fdisk 创建好一个分区以后,我们需要对其格式化,也就是在这个分区上创建一个文件系统,Linux 下的格式化命令为 mkfs,命令格式如下:
mkfs [参数] [-t 文件系统类型] [分区名称]
挂载分区命令 mount
创建好分区并且格式化,进行访问磁盘前需要对分区进行挂载,分区挂载到一个文件夹中,然后通过这个文件访问 U 盘,磁盘挂载命令为 mount,命令格式如下:
mount [参数] -t [类型] [设备名称] [目的文件夹]
卸载命令 umount
当我们不在需要访问已经挂载的 U 盘,可以通过 umount 将其从卸载点卸除,命令格式如下:
umount [参数] -t [文件系统类型] [设备名称]
挂载exfat格式优盘
安装依赖库:
sudo apt install exfat-fuse exfat-utils
完成安装后在磁盘类型选择exfat即可。
reference
- 正点原子开发视频
- 正点原子开发手册