Linux4

用户和组

概述

基于账号的访问控制:

系统用户: 1.登陆操作系统 2.方便做权限的不同设置
:方便管理众多的用户,方便对用户进行分类
唯一标识:UID,GID
管理员 root 的 UID 为 0

组的分类:基本组,附加组(从属组)

基本组:Linux 自己创建的组,与用户同名,系统自动将用户加入
附加组(从属组):管理员自建创建,管理员将用户加入
Linux 一个用户必须至少属于一个组

用户账号创建

用户账号

  • 用户账号创建
    用户基本信息存放在 /etc/passwd 文件,每个用户记录一行,以:分割为 7 字段
grep zhangsan /etc/passwd
zhangsan:x:1004:1004::/home/zhangsan:/bin/bash

用户名:密码占位符:用户 UID:基本组 GID:描述信息:家目录(宿主目录):解释器

添加用户

  • 使用 useradd 命令
    – useradd [选项]… 用户名
    – groupadd 组名 #新建用户组
常用命令选项

– -u 用户 id、-d 家目录路径、-s 登录解释器、-G 附加组 -g 基本组

useradd hh
grep hh/etc/passwd
id hh
uid=1001(hh) gid=1001(hh)=1001(hh)
  • -u 指定用户 UID 创建
    useradd -u 1100 hh
  • -d 指定用户家目录
    useradd -d /opt/hh hh
  • -s 登录解释器
    /sbin/nologin:禁止用户登陆系统
    useradd -s /sbin/nologin hh
  • -G 附加组
    用法:useradd – G 组名 用户名
groupadd tarena//新增tarena组
useradd -G tarena hh2 #创建 hh2用户并添加到 tarena 组里面
  • -g 基本组
useradd -g users -G adm,root admin
id admin
uid=1235(admin) gid=100(users)=100(users),4(adm),0(root)
  • usermod -aG 用户组 用户名,将现有用户加入用户组
usermod -aG tarena hh # 将 hh 用户添加到 tarena 组里
id hh
uid=1001(hh) gid=1001(hh)=1001(hh),1002(hhh)

用户密码设置

设置登录密码

  • 交互式
    管理员给普通用户nsd01设置密码:
    passwd nsd01
  • 普通用户自己给自己更改密码
    passwd
  • 非交互式设置密码:
    echo 123 | passwd --stdin nsd01
  • 清空用户登录密码
    passwd -d 用户名

解析用户账号文件

用户密码信息存放在 /etc/shadow 文件

grep root /etc/shadow
root:$6$UiGI4Tc2$htsXYn5cJnOqv3P1VLcUSgfjDu2pL5yiJBuua6foZAHdwqeuLHfYUfS/vBn27Wjvoe
l8EJgtdsMjyquqvKAmf1:16261:0:99999:7:::

用户名:密码加密之后的字符串:从 1970/01/01 到最近一次密码修改经过的天数:密码最短有
效天数,默认是 0:密码最长有效天数,默认是 99999:密码过期前警告天数,默认是 7:
密码过期后多少天禁用此账户:账号失效时间,默认是空:保留字段(未使用)

用户删改查

修改用户的属性

  • 使用 usermod 命令
    – usermod [选项]… 用户名
常用命令选项

– -u 用户 id、-d 家目录路径、-s 登录 Shell、-G 附加组(重置附加组)

  • 修改 uid 以及登录的 shell
    usermod -u 1500 -s /sbin/nologin nsd08
  • 修改家目录,只是修改了字段的值,opt 下面并没有 stu08 这个目录
    usermod -d /opt/stu08 nsd08
  • 重置附加组,没有则添加,有则重置
    usermod -G tarena nsd08

使用 userdel 命令

– userdel [-r] 用户名
-r:连用户家目录一并删除

用户初始配置文件

配置文件来源

/etc/skel/目录是用来存放新用户配置文件的目录,当我们添加新用户的时候,这个目录下的所有文件会自动被复制到新添加的用户的家目录下。
通过修改、添加、删除/etc/skel 目录下的文件,我们可为新创建的用户提供统一的、标准的、初始化用户环境。
~/.bash profile:每次登录时执行
~/.bashrc:每次进入新的Bash环境时执行
~/.bash logout:每次退出登录时执行
全局配置文件:/etc/bashrc、./etc/profile

设置别名

vim /root/.bashrc
alias hn='hostname'
hn #失败
bash: hn: 未找到命令...

需要新开启一个终端

hn #验证定义别名是否生效
localhost.localdomain

注:.bashrc 只会对自己的用户生效

[root@localhost ~]# su - nsd10
[nsd10@localhost ~]$ hn #失败,.bashrc 只会对自己的用户生效
bash: hn: 未找到命令...

定义永久别名

全局生效,配置文件/etc/bashrc

[root@localhost ~]# vim /etc/bashrc
alias xixi='echo xixi'
新开启一个终端测试
[root@localhost ~]# xixi
xixi

组账号管理

添加组

使用 groupadd 命令

– groupadd [-g 组 ID] 组名
[root@localhost ~]# groupadd adminuser
[root@localhost ~]# grep adminuser /etc/group
adminuser : x : 1505:
组名字 :密码占位符:组 GID:组成员列表(组成员可以是 0-N)

  • 组基本信息存放在 /etc/group 文件
  • 管理组成员
    组成员信息存放在 /etc/gshadow 文件
使用 gpasswd 命令

添加:
– gpasswd -a 用户名 组名
删除:
– gpasswd -d 用户名 组名

 gpasswd -a dc adminuser
 grep adminuser /etc/group
 gpasswd -d dc adminuser
 grep adminuser /etc/group

删除组

使用 groupdel 命令

– groupdel 组名
不能删除基本组

用户权限

一、基本权限和归属

  • 访问方式(权限)
    读取:允许查看内容-read r
    写入:允许修改内容-write w
    可执行:允许运行和切换-execute x
    Permission denied:权限不足

  • 对于文本文件:
    r 读取权限:cat less head tail
    w 写入权限:vim > >>
    x 可执行权限: Shell 脚本编写时可以赋予

  • 权限适用对象(归属)
    所有者(user u):拥有此文件/目录的用户。
    所属组(group g):拥有此文件/目录的组。
    其他用户(other o):除所有者、所属组以外的用户。

  • 解析文件/目录权限

使用 ls -l 命令
 ls -ld 文件或目录...

以 - 开头: 文本文件
以 d 开头:目录
以 l 开头: 快捷方式

  • 目录的 r 权限:能够 ls 浏览此目录内容
    目录的 w 权限:能够执行 rm/mv/cp/mkdir/touch/等更改目录内容的操作
    目录的 x 权限:能够 cd 切换到此目录

二、修改权限

设置基本权限

  • 使用 chmod 命令
    chmod [-R] 归属关系+ - =权限类别 文档…
    chmod [ugo] [+ - =] [rwx]文件…
    chmod [nnn]文件…
#所有者取消 w 的权限
[root@localhost ~]# chmod u-w /nsd01
#所属组只读权限
[root@localhost ~]# chmod g=r /nsd01
#其他人没有任何权限
[root@localhost ~]# chmod o=--- /nsd01
#同时设置权限
[root@localhost ~]# chmod u=rwx,o=rx /nsd01
[root@localhost ~]# ls -ld /nsd01
[root@localhost ~]# chmod u=rwx,o=rx,o=rx /nsd01
[root@localhost ~]# chmod ugo=rwx /nsd01
[root@localhost ~]# ls -ld /nsd01
  • -R 递归修改权限
递归修改权限,目录本身包括此目录里面会发生变化
 chmod -R o=--- /opt/aa/
  • 注:修改权限的是目录里面的内容,目录本身权限没有被修改
    如果想要对目录本身有修改的权限,找此目录的父目录进行修改即可

  • 权限位的8进制数表示
    r、w、x分别对应4、2、1,对3组分别求和
    7:rwx 6:rw- 5:r-x 4:r-- 3:-wx 2:-w- 1:–x 0:—

#数字的形式修改权限:
[root@localhost ~]# chmod 750 /nsd03
[root@localhost ~]# chmod 700 /nsd03

三、修改归属

  • 设置归属关系
    使用 chown 命令,-R 递归设置
    – chown [-R] 属主 文档…
    – chown [-R] :属组 文档…
    – chown [-R] 属主:属组 文档…
[root@localhost ~]# chown root:zhangsan /nsd04/ #同时修改所有者(属主)和所属组(属组)
[root@localhost ~]# chown root/nsd04/ #仅修改所有者
[root@localhost ~]# chown :zhangsan/nsd04/ #仅修改所属组
[root@localhost ~]# chown -R root /opt/aa #递归修改所有者
  • 判断用户身份 所有者>所属组>其他人 匹配即停止
    去掉所有者zhangsan的执行权限,zhangsan 添加到 stugrp 组里面,虽然组里面有执行权限,但是依
    然不能 cd
[root@localhost ~]# chmod u-x /nsd05/
[root@localhost ~]# gpasswd -a zhangsan stugrp
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ cd /nsd05/
-bash: cd: /nsd05/: 权限不够
  • 查看相应身份的权限
    – umask
    目录的权限默认是 755,文件的权限默认 644,一般文件默认不给 x 执行权限
[root@localhost ~]# umask
0022 #第一个 0 为附加权限
[root@localhost ~]# umask -S
u=rwx,g=rx,o=rx
  • 创建新文件夹时,直接设置权限,指定权限 -m 选项
    [root@localhost ~]# mkdir -m 750 /nsd06

四、特殊权限(附件权限)

SGID权限

• 附加在属组的 x 位上
– 属组的权限标识会变为 s(无执行权限显示大 S,有执行权限显示小 s)
– 适用于目录,Set GID 可以使目录下新增的文档自动设置与父目录相同的属组
当一个设置了SGID位的可执行文件运行时,该文件将具有所属组的特权,任意存取整个组所能使用的系统资源。若一个目录设置了SGID,则所有被复制到这个目录下的文件,其所属的组都会被重设为和这个目录一样,除非在复制文件时加上-p(preserve,保留文件属性)的参数,才能保留原来所属的群组设置。

Sticky Bit 粘滞位(若赋予其他人执行权限会覆盖 t 权限)

• 附加在其他人的 x 位上
– 占用其他人(Other)的x位
– 显示为t或T,取决于其他人是否有x权限
– 适用于开放 w 权限的目录,可以阻止用户滥用 w 写入权限(禁止操作别人的文档)
– 在设置了粘滞位的文件夹下,即使用户有写入权限,也不能删除或改名其他用户文档
对一个文件设置了sticky-bit之后,尽管其他用户有写权限,也必须由属主执行删除、移动等操作。对一个目录设置了sticky-bit之后,存放在该目录的文件仅准许其属主执行删除、移动等操作

五、Acl 策略简介

acl 策略的作用

  • 文档归属的局限性
    – 任何人只属于三种角色:属主、属组、其他人
    – 无法实现更精细的控制
  • acl 访问策略
    – 能够对个别用户、个别组设置独立的权限
    – 大多数挂载的 EXT3/4、XFS 文件系统默认已支持
[root@localhost ~]# mkdir /NB
[root@localhost ~]# echo 100 > /NB/rmb.txt
[root@localhost ~]# chmod o=--- /NB
[root@localhost ~]# groupadd caiwu
[root@localhost ~]# chown :caiwu /NB
[root@localhost ~]# chmod g+w /NB
[root@localhost ~]# setfacl -m u:dc:rx /NB/ 		###设置权限
[root@localhost ~]# getfacl /NB/
getfacl: Removing leading '/' from absolute path names
# file: NB/
# owner: root
# group: caiwu
user::rwx
user:dc:r-x                         **
group::rwx
mask::rwx
other::---

六、ACL 策略管理

ACL 访问控制列表

设置 acl 访问控制策略
• 使用 getfacl、setfacl 命令
– getfacl 文档…
– setfacl [-R] -m u:用户名:权限类别 文档…
– setfacl [-R] -m g:组名:权限类别 文档…
– setfacl [-R] -x u:用户名 文档… #删除指定的 ACL 策略
– setfacl [-R] -b 文档… #删除所有 ACL 策略

  • 删除指定策略:
    [root@localhost ~]# setfacl -x u:dc /nsd09/
  • 删除全部策略:
    [root@localhost ~]# setfacl -b /nsd09/
    [root@localhost ~]# getfacl /nsd09/
  • 递归设置权限®:
    [root@localhost ~]# setfacl -Rm u:dc:rx /opt/aa/
  • 设置拒绝的权限
    [root@localhost ~]# setfacl -m u:zhangsan:— /nsd09

了解

Set UID

• 附加在属主的 x 位上
– 属主的权限标识会变为 s
– 适用于可执行文件,Set UID 可以让使用者具有文件属主的身份及部分权限
当其他用户执行带 SUID 标记的程序时,具有此程序属主的身份和相应的权限
– 传递所有者身份
当一个设置了SUID位的可执行文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。如果所有者是root的话,那么执行人就有超级用户的特权了。这时该位将变成一个安全漏洞,因此不要轻易设置该位。

[root@localhost ~]# cp /usr/bin/mkdir /usr/bin/hahadir
[root@localhost ~]# chmod u+s /usr/bin/hahadir #添加 s 权限
测试:
[root@localhost ~]# su - lisi
[lisi@localhost ~]$ /usr/bin/mkdir test01          #以 test01 代替/usr/bin/mkdir 
[lisi@localhost ~]$ ls -ld test01/ #所有者不发生变化
drwxrwxr-x. 2 lisi lisi 6 6 月 28 15:57 /test01/
[lisi@localhost ~]$ /usr/bin/hahadir test02
[lisi@localhost ~]$ ls -ld test02 #所有者发生变化
drwxrwxr-x. 2 root lisi 6 6 月 28 15:57 /test02

你可能感兴趣的:(Linux,服务器,linux,运维)