一、概述
Linux系统中超级用户是root,通过超级用户root可以创建其它的普通用户,Linux是一个支持多用户的操作系统。在实际使用中,一般会分配给开发人员专属的账户,这个账户只拥有部分权限,如果权限太高,操作的范围过大,一些误操作可能导致系统崩溃,或者数据不安全,所以多用户机制就是一种系统安全策略。
在Linux系统中任何一个用户都对应:一个用户名 + 一个口令。用户使用系统时需要输入用户名和口令进行登录,登录成功后就可以进入自己的主目录(主目录就是自己的工作目录)。
用户账号管理主要包括以下三方面:
- 用户组的管理
- 用户的管理
- 为用户主目录之外的目录授权
二、用户组的管理
一、用户组概念
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
用户组的管理涉及用户组的添加、修改和删除。
用户组的添加、修改和删除实际上就是对/etc/group文件的更新。
二、查看用户组相关信息
一、使用root账户查看当前系统的用户组有哪些
1、cat /etc/group
一行就是一个组,每一个用户组四部分组成:组名:密码标识:GID:该用户组中的用户列表。
二、查看当前登录的账户属于哪一组
1、groups
三、查看某个用户属于哪一组
1、groups root
三、用户组的添加
一、语法
1、语法:groupadd [选项] 组名 (groupadd之间没有空格)
2、常用选项包括:
- -g 可以通过这个选项来指定新用户组的标识号(GID)
3、栗子:
- groupadd dev1
- groupadd -g 101 dev2 其中101是dev2这个组的组号
二、用户组的修改
1、修改用户组组号
groupmod -g 102 dev2
2、修改用户组组名
将dev2修改为dev3
groupmod -n dev3 dev2
三、用户组的删除
删除用户组dev3
groupdel dev3
三、用户的管理
一、添加用户
一、描述
添加用户就是在系统中创建一个新账号,然后为新账号分配用户组、主目录等资源。
二、语法:useradd [选项] 用户名
三、选项:
- -d 指定新用户的主目录
- -g 指定新用户属于哪个组(主组)
- -G 可以给新用户添加附加组
四、栗子
1、useradd lisi
注意:当新建用户时,没有指定组,也没有指定工作目录时:
- 默认的组名:和自己用户名一样
- 默认的主目录:/home/用户名
2、useradd -d /usr/zhangsan zhangsan
3、useradd -d /usr/lisi -g dev -G test lisi
添加lisi用户,该用户的主目录/usr/lisi,所属主组dev(开发组),附加组test(测试组)
二、设置密码
一、命令
passwd lisi
注意:增加用户就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。
二、查看用户信息
通过查看/etc/passwd文件可以看到系统中有哪些用户,例如执行:cat /etc/passwd
密码会单独存储在/etc/shadow文件中,例如执行:cat /etc/shadow 这个密码是通过某种算法进行加密的。
三、切换用户
一、切换指定用户
su bjpowernode
二、切换root用户
su root
注意:从普通用户切换到高级用户需要密码。密码输入时不回显。切换到普通用户之后,该普通用户默认只对自己的"主目录"有权限,主目录之外的目录是没有权限的
四、修改用户
修改用户就是对用户名,用户主目录,用户组等进行修改。
一、语法:usermod [选项] 用户名
二、选项
- -d 指定新用户的主目录
- -g 指定新用户属于哪个组(主组)
- -G 可以给新用户添加附加组
- -l 指定新的用户名(小写的)
三、栗子
1、usermod -l zhangsi zhangsan
2、# -m 选项很重要,当有了这个选项之后,目录不存在时会新建该目录。
usermod -d /usr/zhangsan2 -m zhangsan
3、usermod -g dev1 zhangsan
4、usermod -L zhangsan
5、usermod -U zhangsan
五、删除用户
一、命令
userdel -r zhangsan
-r 选项的作用是连同该用户主目录一块删除。
四、为用户主目录之外的目录授权
一、创建目录
mkdir /java
二、给目录授权
-R表示递归设置权限,该目录下所有的子目录以及子文件
chmod -R 775 /java
三、创建组
groupadd dev
四、把目录赋予组
chgrp -R dev /java
五、创建用户
useradd xiaoming
六、设置密码
passwd xiaoming
七、给用户添加附加组
usermod -G dev xiaoming
五、文件权限
一、文件权限概述
Linux为了保证系统中每个文件的安全,引入了文件权限机制。针对于系统中的每一个文件Linux都可以提供精确的权限控制。它可以做到不同的用户 对同一个文件具有不同的操作权利。而通常这个权利包括以下3个:
- 读的权利(Read,简称r)
- 写的权利(Write,简称w)
- 执行的权利(eXecute,简称x)
不同的用户包括3类用户:
- 文件拥有者(User,简称U):该文件的创建人
- 同组用户(Group,简称G):和创建人在同一组的用户
- 其他组用户(Other,简称O):和创建人不在同一组的用户
这就是UGO模型。也就是说一个文件的权限包括三组:
- 第一组U:我们可以给文件的创建者设置rwx权限。
- 第二组G:我们可以给文件创建者的同组人员设置rwx权限。
- 第三组O:我们可以给和文件创建者不在同一组的人员设置rwx权限。
二、查看文件权限
一、采用"ls -l"命令可以查看文件的具体权限
二、组成:文件类型+文件的权限,共10个字符
1、第1个字符:代表文件的类型,- 代表文件,d代表目录。
其实Linux中文件的类型有7种:
- 代表普通文件
- d 代表目录
- l 代表链接(软链接:快捷方式)
- b 块设备(硬盘,软盘等存储设备)
- c 字符设备(通常以字节流的方式访问)
- p 管道文件(主要用于进程间通讯)
- s 套接字文件(主要用于网络通讯)
2、第2,3,4个字符:代表文件创建者对该文件的权限
3、第5,6,7个字符:代表与文件创建者在同一组的用户对该文件的权限。
4、第8,9,10 个字符:代表其他组人员对该文件的权限
5、文件权限的9个字符中包含四种字符,分别是:r、w、x、-
- r:读权限
- w:写权限
- x:执行权限
- -:无权限
三、基于UGO设置文件权限
修改权限的命令是chmod,如果采用UGO方式修改权限的话,大致语法是这样的
1、chmod g+w Hello.java 给同组人员(g:代表同组人员)增加(+)写(w)权限
2、chmod g+w, o+w Hello.java 给同组人员(g:代表同组人员)增加(+)写(w)权限,给其他组成员增加写权限
3、chmod g-w, o-w Hello.java 去除同组人员写权限,去除其他组成员写权限
4、栗子:
将文件拥有者的写权限删除:
尝试使用vim命令编辑HelloWorld.java文件
再把写的权限加上
这个时候文件可以编辑了
四、基于421设置文件权限
一、421采用数字来表示不同的权限
- 4代表读,100,用二进制转换就是(2的2次方等于4)
- 2代表写 010,用二进制转换就是(2的1次方等于2)
- 1代表执行 001,用二进制转换就是(2的0次方等于1)
其实就是rwx,这三个字母,用二进制表示,1代表有对应权限,0代表没有对应权限,
例如:如果让一个用户读、写、执行权限都有的话,就是4 + 2 + 1 = 7(111,表示读、写、执都有),那么7这个数字就代表rwx的权限都具备。如果是5就表示4+1(101)的组合,表示有r和x的权限。如果是6就表示4+2(110)的组合,表示有r和w的权限。如果是0就表示无任何权限。
二、通过421这几个数字的不同组合来表示不同的权限,有以下几种种不同的组合:
- 0:无权限
- 1:x 001
- 4:r 100
- 5:r + x 101
- 6:r + w 110
- 7:r + w + x 111
也就是说一共6个数字:0 1 4 5 6 7
三、采用421方式设置权限
1、语法:chmod 三个数字 文件名
2、栗子:
chmod 755 HelloWorld.java
第一个数字7是文件拥有者的权限,第二个数字5是同组人员的权限,第三个数字5是其他组人员的权限。也就是说文件拥有者的权限是rwx,同组人员是r-x,其他组人员是:r-x
五、chown修改文件拥有者
使用 chown
命令来修改指定文件或目录的拥有者和所属组
一、语法
chown [选项]... [所有者][:[所属组]] 文件...
其中,
所有者
和所属组
可以是用户名或用户 ID、组名或组 ID,如果省略:
和所属组
,则默认为修改文件的所有者。二、常用选项
-R
:递归修改,包括子目录和文件。三、栗子
1、将
/home/user/file.txt
文件的所有者修改为root
用户sudo chown root /home/user/file.txt
2、将
/home/user/dir/
目录及其子目录和文件的所有者都修改为userA
用户,所属组修改为groupA
组,可以使用如下命令:sudo chown -R userA:groupA /home/user/dir/
注意:在使用
chown
命令时,需要有足够的权限才能修改文件或目录的拥有者和所属组。一般需要使用sudo
命令或使用具有相应权限的用户来执行。