Linux用户和权限管理
基础知识
-
Linux用户
- 管理员:root 0
- 普通用户:1-65535
- 系统用户:Centos6:1-499,Centos7:1-999
- 登录用户:Centos6:500+,Centos7:1000+
-
Linux组:
-
管理员组:root 0 -
普通组:
-
组类别:
- 基本组(主组):组名同用户名,且仅包含一个用户,私有组
- 附加组(额外组):一个用户可以属于多个额外组
-
用户和组相关的配置文件
[root@server1 ~]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
字段解析:
name:password:UID:GID:描述:directory:shell
[root@server1 ~]
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
字段解析:
group_name:password:GID:user_list
[root@server1 ~]
root:$6$pGGxCptV$ORQhySfwpOCMr4mUPZ0bJfv3X82Zg8dCyqfcjfmafP5cyfaObevcXM2kl5azMfKYorG3BnjFwQyYkORIzGZry/:18819:0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
字段解析:
name:password:最近一次更改密码的日期:密码的最小使用期限:最大密码使用期限:密码警告时间段:密码禁用日期:账户过期日期:保留字段
用户管理
信息查看
id
[root@server1 ~]
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@server1 ~]
uid=1000(user01) gid=1000(user01) 组=1000(user01)
查看文件
[root@server1 ~]
总用量 0
drwxr-xr-x. 4 root root 29 7月 11 20:22 abc
drwx------. 2 alice alice 83 4月 19 00:01 alice
drwxr-xr-x. 2 root root 6 7月 11 20:22 dfg
-rw-r--r--. 1 root root 0 7月 11 20:37 dir01
drwxr-xr-x. 2 root root 36 7月 11 20:39 dir02
用户管理
创建用户useradd
常用选项:
‐u:指定uid
‐g:指定gid
‐c:用户注释信息
‐d:家目录
‐s:指定shell(/etc/shells)
‐G:附加组
‐r:创建系统用户
默认设置:/etc/default/useradd
[root@server1 ~]
[root@server1 ~]
uid=1007(zhangsan) gid=1010(zhangsan) 组=1010(zhangsan),1009(group1)
[root@server1 ~]
zhangsan:x:1007:1010:张三的信息:/home/zhangsan:/bin/csh
修改用户组usermod
常用选项:
‐ aG:将用户添加到附加组
‐ dm:移动用户新登录目录
‐ L:锁定用户
‐ U:解锁用户
[root@server1 ~]
[root@server1 ~]
uid=1000(user01) gid=1000(user01) 组=1000(user01),1011(it)
[root@server1 ~]
[root@server1 ~]
uid=1000(user01) gid=1000(user01) 组=1000(user01),1004(hr),1011(it)
修改用户密码passwd
常用选项:
‐n mindays:指定最短使用期限
‐x maxdays:最大使用期限
‐w warndays:提前多少天开始警告
‐i inactivedays:非活动期限
‐‐stdin:从标准输入接收用户密码
echo "PASSWD" | passwd ‐‐stdin username
[root@server1 ~]
更改用户 zhangsan 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
删除用户userdel
-r 连同家目录一起删除
[root@server1 home]
abc alice dfg file10 gaoxinyu nizhan user01 user02 user03 user04 zhangsan
[root@server1 home]
[root@server1 home]
abc alice dfg file10 gaoxinyu nizhan user01 user02 user03 user04
组管理
创建组groupadd
常用选项:
‐g:指定gid
‐r:创建系统组
删除组groupdel
sudo提权
常用切换方式:
su username:切换用户,不读取用户配置信息
su ‐ username:完全切换(记住这个,就可)
[root@server1 ~]
uid=1004(alice) gid=1006(alice) 组=1006(alice)
[alice@server1 ~]$ useradd wanger
useradd: Permission denied.
useradd:无法锁定 /etc/passwd,请稍后再试。
[root@server1 ~]
将107行的%whee ALL=(ALL) NOPASSWD:ALL前面的
:wq!保存强制退出
[root@server1 ~]
正在将用户“alice”加入到“wheel”组中
[root@server1 ~]
uid=1004(alice) gid=1006(alice) 组=1006(alice),10(wheel)
[root@server1 ~]
[alice@server1 ~]$ sudo useradd wanger
[sudo] alice 的密码:
[alice@server1 ~]$ ls /home
alice wanger
权限管理
权限设置原因
-
服务器中的数据价值 -
员工的工作职责和分工不同 -
应对自外部的攻击(挂马) -
内部管理的需要
基本概念
- 文件的权限对象:
- owner:属主,u
- group:属组,g
- other:其他,o
root不受权限限制,拥有所有权限
-
文件的三种权限:
- r:Readable 4
- w:Writeable 2
- x:eXcutable 1
-
文件:
- r:可读文件内容
- w:可修改其内容
- x:可作为命令执行
-
目录:
- r:可以使用ls查看此目录中的文件列表
- w:可在此目录中创建mkdir,touch,也可以删除rmdir,rm -rf此目录中的文件
- x:可以使用ls查看此目录中文件列表,可以cd进入此目录
注:一般给予目录读权限时,也将会给其执行权限
奇葩权限:
- 设置不合理的权限,单独出现2或3的权限数字。如权限731中的3权限,3表示写+执行权限,但是写又必须需要能打开之后才可以写,因此必须需要具备可读权限,因此此权限设置不合理。
权限管理(u,g,o)
更改属主(组)chown
更改属组chgrp
[root@server1 ~]
[root@server1 ~]
[root@server1 ~]
[root@server1 ~]
[root@server1 ~]
-rw-r--r--. 1 alice g1 0 7月 12 18:01 file1
[root@server1 ~]
[root@server1 ~]
总用量 16
-rw-------. 1 root root 1241 3月 16 17:52 anaconda-ks.cfg
-rwxr-xr-x. 1 root root 9024 5月 24 12:11 a.out
drwxr-xr-x. 2 root g1 6 7月 12 18:10 dir1
更改文件权限chmod
常用选项:
‐R:递归设置,针对文件夹(目录)
[root@server1 ~]
[root@server1 ~]
-rwxr--r--. 1 alice g1 0 7月 12 18:01 file1
[root@server1 ~]
[root@server1 ~]
-rw-r--r--. 1 alice g1 0 7月 12 18:01 file1
[root@server1 ~]
[root@server1 ~]
-r--r--r--. 1 alice g1 0 7月 12 18:01 file1
[root@server1 ~]
[root@server1 ~]
-rwxrw-r--. 1 alice g1 0 7月 12 18:01 file1
删除文件失败如何解决?
ACL权限
- ACL 是 Access Control List 的缩写,在 Linux 系统中, ACL 可实现对单一用户设定访问文件的权限。优势就是让权限控制更加的精准。
getfacl获取ACL权限
getfacl 文件或目录名
setfacl设置ACL权限
常用选项:
‐m :修改acl设定参数
‐x :删除acl设定参数
‐b :移除所有的ACL设定
‐R :递归
‐d :添加默认的acl权限
删除用户权限:setacl ‐x u:username filename
删除组权限:setacl ‐x g:groupname filename
删除整个acl权限:setacl ‐b filename
- 用户设定ACL权限:setfacl -m u:username:权限 filename
设定alice对file1有rwx权限
[root@server1 ~]
[root@server1 ~]
user::rwx
user:alice:rwx
group::rw-
mask::rwx
other::r--
设定user对testdirectory目录下所有文件有rwx权限
setfacl ‐R ‐m u:user:rwx testdirectory
去掉user对testdirectory的x权限
setfacl ‐x u:user testdirectory/
去掉所有acl权限
[root@server1 ~]
[root@server1 ~]
user::rwx
group::rw-
other::r--
为testdirectory目录添加默认的acl权限,此目录下创建目录和文件,user都有rwx权限
setfacl ‐d ‐m u:user:rwx testdirectory/
- 组设定ACL权限: setfacl -m g:groupname:权限 filename
给acl_test1文件添加mygropu1组rx权限设定
[root@study ~]
[root@study ~]
user::rwx
user:vbird1:rx
group::r‐‐ group:mygroup1:rx
mask::rx
other::r‐‐
特殊权限
文件的特殊权限包括:SUID、SGID、SBIT
SUID:冒险位S(4)
-
SUID:暂时借出程序所有者的权限
- SUID权限仅对二进制文件(命令)有效 ,且仅在本程序中拥有改权限
查询命令所在的路径
[root@server1 ~]
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz
[root@server1 ~]
passwd 是 /usr/bin/passwd
- 举例
- 普通用户zhangsan修改密码=> 调用passwd命令=> 执行/usr/bin/passwd => 修改/etc/shadow文件
[root@server1 ~]
-rwsr-xr-x. 1 root root 27856 4月 1 2020 /usr/bin/passwd
[root@server1 ~]
----------. 1 root root 1100 7月 12 17:44 /etc/shadow
普通用户没有直接修改/etc/shadow中密码的权利,只有root可以
普通用户可以通过使用具有s权限的passwd命令,借用root的权利来修改自己的密码
SGID:强制位S(2)
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
total 0
drwx‐‐‐‐‐‐. 2 lisi lisi 62 Aug 5 09:51 lisi
drwx‐‐‐‐‐‐. 2 zhangsan zhangsan 62 Aug 5 09:51 zhangsan
[root@localhost ~]
[root@localhost ~]
drwxrws‐‐‐. 2 zhangsan zhangsan 62 Aug 5 09:51 /home/zhangsan
[root@localhost ~]
[root@localhost ~]
[lisi@localhost root]$ cd /home/lisi/
[lisi@localhost ~]$ touch 1.txt
[lisi@localhost ~]$ ll
total 0
‐rw‐rw‐r‐‐. 1 lisi lisi 0 Aug 5 09:56 1.txt
[lisi@localhost ~]$ cd /home/zhangsan
[lisi@localhost zhangsan]$ touch 1.txt
[lisi@localhost zhangsan]$ ll
total 0
‐rw‐rw‐r‐‐. 1 lisi zhangsan 0 Aug 5 09:57 1.txt
SBIT:粘滞位T(1)
[root@server1 ~]
drwxrwxrwt. 9 root root 264 7月 12 14:01 /tmp
设置或修改特殊文件
使用数字,第一位表示特殊权限,后三位为基本权限
chmod u+s file1
chmod 4644 file1
chmod u-s file1
chmod 0644 file1
chmod g+s dir1
chmod 2755 dir1
chmod g-s dir1
chmod 0755 dir1
chmod o+t dir1
chmod 1755 dir1
chmod o-t dir1
chmod 0755 dir1
[root@server1 ~]
[root@server1 ~]
-rwSr-Sr-T. 1 alice g1 0 7月 12 18:01 file1
注:
大写的高级权限表示普通权限没有x执行权限
小写的高级权限表示普通权限有x执行权限
特殊权限生效的前提是:文件(夹)必须拥有x执行权限
进程umask
umask :文件或目录的遮掩码
File:666 ‐ umask :root创建的文件权限默认为644,普通用户创建的文件权限默认为664
Dir: 777 ‐ umask :root创建的目录权限默认为755,普通用户创建的目录权限默认为775
扩展:实际上我们创建一个普通文件最高权限666(预设没有x权限)。而创建一个文件夹其最高权限777
实际文件权限 = 最高权限 - umask的值
[root@server1 ~]
0022
[zhangsan@server1 ~]$ umask
0002
|