用户管理
Linux是一个可以实现多用户登录的操作系统,他们共享主机的资源,但又有自己的用户空间,用于存放自己的文件,但实际上他们的文件都是放在同一个物理磁盘上的甚至同一个逻辑分区或者目录里,但是由于 Linux 的 用户管理 和 权限机制,不同用户不可以轻易地查看、修改彼此的文件。
查看用户
可以用以下的两个命令来查看打开当前伪终端的用户的用户名(查看当前登录用户的用户名,去掉空格直接使用whoami即可)
在终端键入:
$ who am i
或者
$ who mom likes
输出:
Pseudo_terminal_username pts/0 2018-10-16 17:22 (:0)
输出的第一列(Pseudo_terminal_username)表示用户名,而pts/0中的pts表示伪终端,所谓伪终端是相对于/dev/tty设备而言的,0表示的是当前伪终端的序号,你也可以打开另一个终端输入who am i查看pts后0是否会不会变为1。
who命令的其它参数
参数 | 说明 |
---|---|
-a | 打印能打印的全部 |
-d | 打印死掉的进程 |
-m | 同am i,mom likes |
-q | 打印当前登录用户数及用户名 |
-u | 打印当前登录用户登录信息 |
-r | 打印运行等级 |
创建用户
在Linux系统里root用户拥有最高权限,可以创建其它的用户
维基百科中关于root的解释superuser
我们一一般登录系统都是一普通账户登录的,而要获取root权限,就需使用sudo命令,而使sudo命令就需要有两个前提:
- 知道当前登录用户的密码
- 当前用户必须在sudo用户组
su、sudo、su-
su <user>
可以切到用户user,执行时需要user的密码
su <cmd>
可以特权级运行cmd命令,需要当前用户属于sudo组,并知道密码
su - <user>
切换用户,同时环境变量也会跟着改变
新建一个用户lisi
新建一个用户 lisi
$ sudo adduser lisi
可以添加用户到系统,同时也会默认为新用户创建 home 目录
$ ls /home
切换登录用户
$ su -l lisi
用户组
在Linux里面每一个用户都有一个用户组,他们共享一些资源和权限,同时也拥有一些私有的资源。
查看用户组
查看自己属于哪个用户组
- 使用groups命令:
groups <username>
输出的冒号之前的是用户,冒号之后的是属于哪一个用户组。
每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组。 - 查看/etc/group文件:
$ cat /etc/group | sort
这里 cat 命令用于读取指定文件的内容并打印到终端输出。| sort 表示将读取的文本进行一个字典排序再输出。
可以使用$ cat /etc/group | grep -E "username"
过滤掉不想看到的
/etc/group文件的说明:
/etc/group 的内容包括用户组(Group)、用户组口令、GID 及该用户组所包含的用户(User),每个用户组一条记录。格式如下:
group_name:password:GID:user_list
你看到上面的 password 字段为一个 x 并不是说密码就是它,只是表示密码不可见而已
将其他的用户加入sudo组
默认情况下新创建的用户是不具有 root 权限的,也不在 sudo 用户组,可以让其加入 sudo 用户组从而获取 root 权限:
$ su -l lisi
$ sudo ls
会提示lisi不在sudoers文件中,使用usermod命令为用户添加用户组,使用该命令你必须具有root权限,可以直接使用 root 用户为其它用户添加用户组,或者用其它已经在 sudo 用户组的用户使用 sudo 命令获取权限来执行该命令。
删除用户
$ sudo deluser lisi --remove-home
Linux文件权限
在 Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
Unix/Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限
查看文件权限
首先,使用较长的格式列出当前目录下的文件
$ ls -l
输出的文件名各个部分的意义:
关于第一项的意思:
- 文件类型
在Linux里面一切皆文件(例如:/dev目录下就有各种设备文件,与具体的硬件设备相关)。 - 文件权限
- 读权限:你可以使用
cat <file name>
之类的某个命令来读取某个文件的内容; - 写权限:你可以修改和编辑某个文件;
- 执行权限:可以运行的二进制程序文件或者脚本文件,如同 Windows 上的 exe 后缀的文件
- 读权限:你可以使用
一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件
- 链接数
链接到该文件所在的 inode 结点的文件名数目。
- 文件大小
以 inode 结点大小为单位来表示的文件大小,你可以给 ls 加上 -lh 参数来更直观的查看文件的大小。
- 显示除了
.
(当前目录)和..
(上一级目录)之外的所有文件,包括隐藏文件(Linux 下以.
开头的文件为隐藏文件)。
ls -A
查看某个目录的完整属性,而不是显示目录里的文件属性
$ ls -dl <目录名>
显示所有文件的大小
$ ls -AsSh
其中s为显示文件的大小,S为按文件大小排序,使用man命令查询排序方式
变更文件的所有者
使用以下命令修改文件的所有者
$ sudo chown <用户名> <文件名>
修改文件的权限
- 方法一:二进制数字表示
-r-xr-xr--
101 101 100
554
-rw--w---x
110 010 001
621
-rwxrwxr--
111 111 100
774
-r---w---x
100 010 001
421
总结规律:r表示4,w表示2,x表示1
通过命令设置文件权限
创建一个文件
touch abc.txt
//创建一个abc.txt文件
chmod 621 abc.txt
//给abc.txt设置621权限
- 方法二:加减赋值操作
$ chmod go-rw abc.txt
g、o 还有 u 分别表示 group、others 和 user,+ 和 - 分别表示增加和去掉相应的权限