Linux中用户及其身份的划分
账户为分三类:
超级用户(管理员):享有最高权限,具备系统中的所有权限(一般为root),UID为0
系统用户 :别称“伪用户”,无法登录系统,其主要作用是支撑系统运行,方便系统管理。uid号码小于1000.
普通用户:有权限限制,只能对自己目录下的文件进行操作,可以登录系统。uid 大于1000,登陆shell是bin/bash。
任何一个账户在创建的同时都会在系统里面创建一个同名的组。
1.用户权限管理
1.1基本权限UGO
文件权限设置: 可以赋于某个用户或组 能够以何种方式 访问某个文件。
权限对象:
u:属主 g:属组 o:其他人
基本权限类型:
读(read):r-------------->4
写(write): w------------->2
执行(exe):x------------>1
r w x rw- r-- alice hr file1.txt
属主权限 属组权限 其他人权限 属主 属组 文件
1.2权限设置
chown:改变文件或目录的所属组及所属组。
chmod:改变文件或目录设置访问权限。
改变文件的所属主,属组:chown
chown 属主.属组 文件或目录
chown tom.hr file.txt #修改属主,属组
chown .hr file.txt #修改属组
chown -R tom.hr file.txt #递归修改------针对目录
改变文件权限:chmod
a.使用符号
chmod u+x file1.txt #属主增加执行
chmod a=rwx file1.txt #所有人有读写执行权限
chmod a=- file1.txt #所有人没有权限
chmod ug=rw,o=r file1.txt #属主属组有读写权限,其他人只有读权限
b.使用数字
chmod 755 file1.txt
-rwxr-xr-x 1 root root 0 Jul 23 22:40 file1.txt
r,w,x权限对文件和目录的意义
2.用户管理
查看用户的基本信息
[root@localhost tmp]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
..............
分隔符::
第一列:用户名
第二列:密码
第三列:用户标识号--->(uid)是一个整数,系统内部用它来标识用户。通常用户标识号的取值范围是0~65535。0是超级用户root的标识号
第四列:gid
第五列:描述信息。
第六列:家目录
第七列:是用户登陆到界面的第一个命令,开启一个shell。登陆shell
2.1添加用户
useradd 用户名
useradd aren -u 1002 #-u指定用户的uid
useradd aren -p 123456 #-p指定用户的密码
useradd -s /sbin/nologin -M aren #-s指定用户登录的shell,-M不创建用户的主目录
useradd aaa -d /opt/aaa #-d指定新用户的目录
2.2查看用户
id 用户名
[root@localhost tmp]# id aren
uid=1000(aren) gid=1000(aren) 组=1000(aren)
2.3删除用户
userdel 用户名
-r #删除主目录和邮件池
3.用户组管理
[root@localhost tmp]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:组名:代表组密码:gid:组员
3.1创建用户组
groupadd 组名
groupadd hr -g 1111 #指定组id
3.2删除组
groupdel 组名
3.3组成员管理
1.给组添加账户
-a
[root@qfedu ~]# gpasswd -a user10 grp2
Adding user user10 to group grp2
2.同时添加多个用户到组
-M:members成员的缩写
[root@qfedu ~]# gpasswd -M tom,alice it
3.从组删除用户1
-d
[root@qfedu ~]# gpasswd -d user07 hr
Removing user user07 from group hr
3.4组信息修改
# groupmod h1 -n h2 #修改组名h1为h2
4.修改用户基本信息:usermod
usermod aren -g tom #-g指定基本组
usermod aren -G tony #-G指定附加组,会覆盖其他的附加组
usermod aren -l Aren #修改用户名aren为Aren
usermod hhh -md /opt/hhh #将家目录内容移至新位置
5.切换用户 su
su - 用户 #切换用户(改变环境变量)
su 用户 #切换用户(保留环境变量)
切换用户时加 - 与不加 - 的区别: 加 -时,会进入用户的家目录,不加-时,切换完用户还在当前目录。
6.sudo用户(临时提权)
sudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令。
提权1:
6.1.编辑/etx/sudoers配置文件
vim /etc/sudoers
跳转到100行,将要赋予sudo权限的用户按照root ALL=(ALL) ALL 的格式写在下一行,然后强制保存退出。 (每次使用sudo 都会有密码)
如果想要免除每次使用sudo命令输入密码,则修改为
aren ALL=(ALL) NOPASSWD: ALL
提权2:
若多个用户都需要sudo权限的话,一个一个添加不方便,这样的话需要实现批量添加 即可以将用户加到用户组wheel下创建用户时指定在wheel组内,wheel组内的用户拥有sudo权限,并且wheel组在系统内部已存在的。
[root@server-1 ~]# useradd user01 -G wheel #将user01指定在wheel中允许“wheel”用户组的成员运行所有命令
%wheel ALL=(ALL) ALL
允许“wheel”用户组的成员运行所有命令,且运行时不需要输入密码
%wheel ALL=(ALL) NOPASSWD: ALL
允许“user01”用户运行所有命令
user01 ALL=(ALL) ALL
允许“user01”用户运行所有命令,且运行时不需要输入密码
user01 ALL=(ALL) NOPASSWD: ALL
7.umask权限掩码
控制用户创建文件和目录的默认权限
[root@localhost ~]# umask 0022
0022 root账户默认
0002 普通用户默认
#root用户默认最高权限
目录---777 文件---666
#通过计算得出root用户创建目录和文件的权限为:
也是现在root用户创建完目录和文件的默认权限:
目录:755
文件:644
[root@testhost ~]# mkdir dir
[root@testhost ~]# ll -d dir
drwxr-xr-x 2 root root 6 9月 16 13:08 dir #755
[root@testhost ~]# touch file
[root@testhost ~]# ll file
-rw-r--r-- 1 root root 0 9月 17 17:41 file #644
修改umask
[root@testhost ~]# umask 0111
8.高级权限类型
- suid ==== 4 提权 (只对二进制命令文件生效,其他不管用)
- sgid ==== 2 继承属组权限 (只能对目录设置)
- sticky == 1 (t权限) 权限控制
suid
作用:让普通用户临时拥有该文件的属主的执行权限,suid权限只能应用在二进制可执行文件(命令)上,而且suid权限只能设置在属主位置上。
- SUID 权限仅对二进制程序(binary program)有效;
- 执行者对于该程序需要具有 x 的可执行权限;
- 本权限仅在执行该程序的过程中有效 (run-time);
- 执行者将具有该程序拥有者 (owner) 的权限。
[root@localhost ~]# chmod u+s /usr/bin/cat
sgid
SGID主要用在目录上-----如果用户在此目录下具有w权限的话,使用者在此目录下建立新文件,则创建的这个文件的群组与此目录的群组相同。
[root@localhost opt]# chmod g+s dir1/
Sticky Bit
这个就是针对others来设置的了,和上面两个一样,只是功能不同而已。
SBIT(Sticky Bit)目前只针对目录有效,对于目录的作用是:当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除。
[root@localhost opt]# chmod o+t dir1/
9.隐藏权限
设置隐藏权限---------chattr
i | 无法对文件进行任何修改 |
a | 只允许补充内容,无法进行覆盖/删除内容 |
A | 不能修改这个文件的最后访问时间 |
添加隐藏属性:
[root@testhost ~]# chattr +i file.txt
撤销隐藏属性:
[root@testhost ~]# chattr -i file.txt
查看隐藏权限---------lsattr
#查看file.txt的隐藏权限
[root@testhost ~]# lsattr file.txt
----i----------- file.txt