2019独角兽企业重金招聘Python工程师标准>>>
1、用户
1.1、使用者/群组/其他人
Linux是一个多人多任务环境,为了让各个使用者具有较保密的文件数据,Linux 一般将文件可存取的身份分为三个类别,分别是 owner/group/others,且三种身份各有read/write/execute 等权限。实际上他们的文件都是放在同一个物理磁盘上的甚至同一个逻辑分区或者目录里,但是由于 Linux 的 用户管理 和 权限机制,不同用户不可以轻易地查看、修改彼此的文件。
默认情况下,系统上所有的账号和一般用户身份以及Root的相关信息,都保存在/etc/passwd文件中,个人密码则保存在/etc/shadow文件中,所有的组名存在/etc/group文件中。
1.2、查看用户
可以使用who命令查看当前的用户,比如:
[pierre_cai@localhost ~]$ who am i
pierre_cai pts/0 2017-07-12 11:01 (192.168.1.105)
[pierre_cai@localhost ~]$ who mon likes
pierre_cai pts/0 2017-07-12 11:01 (192.168.1.105)
其中第一项为当前用户名,第二项为终端类型(这里的pts代表伪终端,因为是使用XShell进行登录的,如果是在机子上登录,应该会显示tty)
who
命令其它常用参数
参数 | 说明 |
---|---|
-a |
打印能打印的全部 |
-d |
打印死掉的进程 |
-m |
同am i ,mom likes |
-q |
打印当前登录用户数及用户名 |
-u |
打印当前登录用户登录信息 |
-r |
打印运行等级 |
所有的用户都默认用户一个home目录,可以直接通过查看/home目录下的文件夹来查看当前有多少用户:
[pierre_cai@localhost ~]$ ls /home
pierre_cai user_test
[pierre_cai@localhost ~]$ ls /home/pierre_cai
公共 模板 视频 图片 文档 下载 音乐 桌面
1.3、创建用户
1.3.1、root用户
root 权限,系统权限的一种,与 SYSTEM 权限可以理解成一个概念,但高于 Administrator 权限,root 是 Linux 和 UNIX 系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权力,所有对象他都可以操作,所以很多黑客在入侵系统的时候,都要把权限提升到 root 权限,用 Windows 的方法理解也就是将自己的非法帐户添加到 Administrators 用户组。更比如安卓操作系统中(基于 Linux 内核)获得 root 权限之后就意味着已经获得了手机的最高权限,这时候你可以对手机中的任何文件(包括系统文件)执行所有增、删、改、查的操作。
1.3.2、使用su(do)命令创建用户
我们一般登录系统时都是以普通账户的身份登录的,要创建用户需要 root 权限,相关的命令有:
- su
- sudo
- su -
(相当于su -l )
su
可以切换到用户 user(不切换环境),执行时需要输入目标用户的密码。
sudo
可以以特权级别运行 cmd 命令,需要当前用户属于 sudo 组,且需要输入当前用户的密码。
su -
命令也是切换用户,同时环境变量也会跟着改变成目标用户的环境变量。
例如:
- 输入sudo adduser
命令
[pierre_cai@localhost ~]$ sudo adduser user_test
[sudo] password for pierre_cai:
- 输入sudo passwd
命令
[pierre_cai@localhost ~]$ sudo passwd user_test
更改用户 user_test 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
- 这个命令不但可以添加用户到系统,同时也会默认为新用户创建 home 目录:
[pierre_cai@localhost ~]$ ls /home
pierre_cai user_test
- 使用su -l切换用户
[pierre_cai@localhost ~]$ su -l user_test
密码:
上一次登录:三 7月 12 11:33:16 HKT 2017pts/0 上
[user_test@localhost ~]$ ls
1.4、查看、更改用户组
每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组。
1.4.1、查看所属用户组
可以使用groups命令查看当前用户所属用户组:
[pierre_cai@izwz9gtdx1ch4f9gn56b32z ~]$ groups
pierre_cai
还可以查看/etc/group文件:
[pierre_cai@izwz9gtdx1ch4f9gn56b32z ~]$ cat /etc/group | grep -E pierre_cai
pierre_cai:x:1000:
输出的格式为:group_name:password:GID:user_list,上面的输出x代表密码不可见。
1.4.2、添加sudo权限
sudo命令允许特定用户像root用户一样使用各种各样的命令,而不需要root用户的密码。
想要使用sudo命令,首先需要切换到root用户,给用户添加sudo权限:
- 使用visudo打开sudo配置文件
- 下面的语句说明给予root用户使用sudo的权限
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
- 我们可以接着在下一行添加:
用户名 ALL=(ALL) ALL
- 或者我们注意到下面的语句,用户组wheel可以使用sudo权限:
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
- 所以我们也可以退出编辑,使用下面的usermod命令将当前用户的用户组改为wheel,可以看到此时用户同时属于两个不同的用户组:
[root@izwz9gtdx1ch4f9gn56b32z sudoers.d]# usermod -G wheel pierre_cai
[root@izwz9gtdx1ch4f9gn56b32z sudoers.d]# cat /etc/group | grep -E pierre_cai
wheel:x:10:pierre_cai
pierre_cai:x:1000:
1.5、删除用户
[root@izwz9gtdx1ch4f9gn56b32z sudoers.d]# adduser user_test
[root@izwz9gtdx1ch4f9gn56b32z sudoers.d]# ls /home
pierre_cai user_test
[root@izwz9gtdx1ch4f9gn56b32z sudoers.d]# userdel user_test --remove
[root@izwz9gtdx1ch4f9gn56b32z sudoers.d]# ls /home
pierre_cai
1.6、用户群组相关命令参考
http://www.cnblogs.com/xd502djj/archive/2011/11/23/2260094.html
2、文件权限
2.1、查看文件权限
可以使用ls -l 命令查看文件/文件夹权限:
lrwxrwxrwx. 1 root root 7 Feb 24 10:58 bin -> usr/bin
dr-xr-xr-x. 4 root root 4096 Jun 21 17:22 boot
drwxr-xr-x 20 root root 3020 Jun 22 14:18 dev
drwxr-xr-x. 82 root root 4096 Aug 17 21:49 etc
drwxr-xr-x. 3 root root 4096 Aug 17 21:43 home
lrwxrwxrwx. 1 root root 7 Feb 24 10:58 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Feb 24 10:58 lib64 -> usr/lib64
这个输出的具体说明如下:
- 第一部分,比如“lrwxrwxrwx.”,代表文件类型和权限
- 第二部分,比如“1”,代表该文件当前的连接数
- 第三部分,比如"root",代表文件的所有者
- 第四部分,比如"root",达标文件的所属用户组
- 第五部分,比如5,代表文件的大小
- 第六部分,代表文件的最后修改时间
- 第七部分,即文件名
2.2、文件类型
上面的第一部分中的第一个字母代表文件类型,Linux 里面一切皆文件,正因为这一点才有了设备文件( /dev
目录下有各种设备文件,大都跟具体的硬件设备相关)这一说。
代码 | 含义 |
d | 目录 |
l | 软连接(相当于windows中的快捷方式) |
b | 块设备 |
c | 字符设备 |
socket | socket |
p | 管道 |
- | 普通文件 |
2.3、文件权限
文件的权限类型包括:
- 读权限r,表示可以使用cat
之类的命令读取文件内容 - 写权限w,表示可以编辑和修改某个文件
- 执行权限x,可以运行的二进制程序文件或者脚本文件
根据文件的所有者不同,权限可以划分为:
- 所有者权限
- 所属用户组权限,是指所有者所属用户组的其他用户对该文件的权限
- 其他用户权限
注意:
- 每个文件的三组权限(拥有者,所属用户组,其他用户,记住这个顺序是一定的)对应一个 " rwx "。
- 对于目录而言,一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息。
2.4、变更文件所有者
- 使用touch命令创建文件:
[pierre_cai@izwz9gtdx1ch4f9gn56b32z ~]$ touch fileTest
-
可以看到文件的所有者是创建者:
[pierre_cai@izwz9gtdx1ch4f9gn56b32z ~]$ ls -l
total 0
-rw-rw-r-- 1 pierre_cai pierre_cai 0 Aug 17 22:15 fileTest
- 使用chown(change owner)命令将文件的所有者改为root:
[root@izwz9gtdx1ch4f9gn56b32z pierre_cai]# sudo chown root fileTest
[root@izwz9gtdx1ch4f9gn56b32z pierre_cai]# ls -l
total 0
-rw-rw-r-- 1 root pierre_cai 0 Aug 17 22:15 fileTest
-
使用rm -f删除文件:
[root@izwz9gtdx1ch4f9gn56b32z pierre_cai]# rm -f /home/pierre_cai/fileTest
2.5、变更文件权限
如果你有一个自己的文件不想被其他用户读、写、执行,那么就需要对文件的权限做修改。这里有两种方式:
- 二进制数字表示。这种方式里,一个rwx代表一个二进制数,如果有权限,相应的位置就为1。即权限通过三个二进制数字表示。可以通过chmod命令,指定权限。比如:
[pierre_cai@izwz9gtdx1ch4f9gn56b32z ~]$ touch fileTest
[pierre_cai@izwz9gtdx1ch4f9gn56b32z ~]$ echo "echo \"hello world\"" > fileTest
[pierre_cai@izwz9gtdx1ch4f9gn56b32z ~]$ cat fileTest
echo "hello world"
[root@izwz9gtdx1ch4f9gn56b32z pierre_cai]# chmod 000 fileTest
[root@izwz9gtdx1ch4f9gn56b32z pierre_cai]# su -l pierre_cai
Last login: Fri Aug 18 13:39:22 CST 2017 on pts/0
[pierre_cai@izwz9gtdx1ch4f9gn56b32z ~]$ cat fileTest
cat: fileTest: Permission denied
- 加减赋值操作。
g
、o
还有u
分别表示 group、others 和 user,+
和-
分别表示增加和去掉相应的权限。使用chmod命令,如下:
[pierre_cai@izwz9gtdx1ch4f9gn56b32z ~]$ ls -l
total 4
-rw-rw-r-- 1 pierre_cai pierre_cai 19 Aug 18 13:47 fileTest
[pierre_cai@izwz9gtdx1ch4f9gn56b32z ~]$ chmod go-rw fileTest
[pierre_cai@izwz9gtdx1ch4f9gn56b32z ~]$ ls -l
total 4
-rw------- 1 pierre_cai pierre_cai 19 Aug 18 13:47 fileTest
2.6、ls命令的其他用法
查看隐藏文件,Linux中隐藏文件以"."开头:
[root@izwz9gtdx1ch4f9gn56b32z /]# ls -A
.autorelabel boot etc lib lost+found mnt proc run srv tmp var
bin dev home lib64 media opt root sbin sys usr