返回顶部

Linux 系统用户组

用户和组管理

每个用户通过:用户名和密码(管理)

组分为:用户组,用户容器

用户类别分为:

  • 管理员和普通用户

系统用户:为了能够让那后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户;这类用户从不用登录系统;

普通用户分为: 

  • 系统用户登录用户

用户通过: UserID, UID 进行标识(以数字进行标识)

  • 管理员:0
  • 普通用户:1-65635
  • 系统用户:1-499(CentOS6), 1-999(CentOS7)
  • 登录用户:500-60000(CentOS6), 1000-60000(CentOS7)

用户登录的时候根据名称进行解析:名称转换成 UID

名称解析库:/etc/passwd

组:

组类别1:

  管理员组

  普通用户组:系统组 和 登录组

组标识:GroupID, GID

管理员组:0

普通用户组:1-65635

系统用户组:1-499(CentOS6), 1-999(CentOS7)

登录用户组:500-60000(CentOS6), 1000-60000(CentOS7)


名称解析:groupname <--> gid

解析库:/etc/group

组类别2:

  • 用户的基本组
  • 用户的附加组


组类别3:

  • 私有组:组名同用户名,且只包含一个用户;
  • 公共组:组内包含了多个用户;

认证信息

通过比对事先存储的,与登录时提供的信息是否一致;

password:

  • /etc/shadow
  • /etc/gshadow

密码的使用策略:

  • 1、使用随机密码;
  • 2、最短长度不要低于8位;
  • 3、应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类;
  • 4、定期更换;

加密算法:

  • 对称加密:加密和解密使用同一个密码;
  • 非对称加密:加密和解密使用的一对儿密钥;

密钥对儿:

  • 公钥:public key
  • 私钥: private key

单向加密:只能加密,不能解密;提取数据特征码;

算法:

  • md5: message digest, 128bits
  • sha:secure hash algorithm, 160bits
  • sha224
  • sha256
  • sha384
  • sha512

在计算之时加salt,添加的随机数;

/etc/passwd:用户的信息库

name:password:UID:GID:GECOS:directory:shell

  • name: 用户名
  • password:可以是加密的密码,也可是占位符x;
  • UID:用户 ID
  • GID:用户所属的主组的ID号;
  • GECOS:注释信息
  • directory:用户的家目录;
  • shell:用户的默认shell,登录时默认shell程序;

/etc/shadow:用户密码

用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期期限:保留字段

/etc/group:组的信息库

group_name:password:GID:user_list

user_list:该组的用户成员;以此组为附加组的用户的用户列表

安装上下文

  • 进程以其发起者的身份运行;
  • 进程对文件的访问权限,取决于发起此进程的用户的权限

用户和组管路命令

groupadd [选项] group_name (添加组)

  • -g  GID:指定GID;默认是上一个组的GID+1;
  • -r:  创建系统组;
groupadd zhangbiao

查看添加的组

tailf -n 1  /etc/group

 

groupmod [选项] GROUP (修改组属性)

  • -g GID:修改GID;
  • -n new_name:修改组名;
groupmod zhangbiao -n zhangtao

groupdel [选项] GROUP (删除组)

groupdel zhangtao

  

useradd [选项] 登录名(创建用户)

  • -u, --uid UID:指定UID
  • -g, --gid GROUP:指定基本组ID,此组得事先存在;
  • -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔;
  • -c, --comment COMMENT:指明注释信息;
  • -d, --home HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;
  • -s, --shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中;
  • -r, --system:创建系统用户;
  • -M, --no-create-home  不创建家目录

usermod [选项] 登录(修改用户属性)

  • -u, --uid UID:修改用户的ID为此处指定的新UID;
  • -g, --gid GROUP:修改用户所属的基本组;
  • -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;
  • -a, --append:与-G一同使用,用于为用户追加新的附加组;
  • -c, --comment COMMENT:修改注释信息;
  • -d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;
  • -m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;
  • -l, --login NEW_LOGIN:修改用户名;
  • -s, --shell SHELL:修改用户的默认shell;
  • -L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";
  • -U, --unlock:解锁用户的密码;

userdel [选项] 登录 (删除用户)

  • -r:删除用户时一并删除其家目录;

passwd命令(修改密码)

  • (1) passwd:修改用户自己的密码;
  • (2) passwd USERNAME:修改指定用户的密码,但仅root有此权限;
  • -l, -u:锁定和解锁用户;
  • -d:清除用户密码串;
  • -e DATE: 过期期限,日期;
  • -i DAYS:非活动期限;
  • -n DAYS:密码的最短使用期限;
  • -x DAYS:密码的最长使用期限;
  • -w DAYS:警告期限;

 

通过 --stdin(标准输入)修改用户的密码

echo "2" | passwd --stdin zhangbiao

gpasswd [选项] group

  • -a USERNAME:向组中添加用户
  • -d USERNAME:从组中移除用户

组密码文件位于:/etc/gshadow

newgrp命令:临时切换指定的组为基本组(这样执行的操作都是以临时组的名义如:创建文件)

newgrp [-] [group]

-: 会模拟用户重新登录以实现重新初始化其

newgrp mysql

 

 创建一个文件

touch txt.txt

可以看到新创建的组名是 mysql

退出临时组

exit

chage [选项] 登录名(更改用户密码过期信息)

  • -d
  • -E
  • -W
  • -m
  • -M

id [OPTION]... [USER] (显示用户用户的真是ID)

  • -u: 仅显示有效的UID;
  • -g: 仅显示用户的基本组ID;
  • -G:仅显示用户所属的所有组的ID;
  • -n: 显示名字而非ID;
# 显示当前用户
id 
# 显示指定用户
id roo

su命令:switch user (切换用户)

登录式切换:会通过读取目标用户的配置文件来重新初始化(会切换到目标用户的家目录

  • su - USERNAME
  • su -l USERNAME

非登录式切换:不会读取目标用户的配置文件进行初始化(在当前目录下)

  • su USERNAME

注意:管理员可无密码切换至其它任何用户

-c 'COMMAND':仅以指定用户的身份运行此处指定的命令

 用户权限

进程安全上下文:

进程对文件的访问权限应用模型:

进程的属主与文件的属主是否相同;如果相同,则应用属主权限;

否则,则检查进程的属主是否属于文件的属组;如果是,则应用属组权限;

否则,就只能应用other的权限;

可以使用 ls -l 查看一个文件或者目录的权限

rwxrwxrwx:

  • 左三位:定义user(owner)的权限
  • 中三位:定义group的权限;
  • 右三位:定义other的权限

文件和目录的权限

  • mode:rwxrwxrwx
  • ownership:user, group

文件:

  • r:可获取文件的数据;
  • w: 可修改文件的数据;
  • x:可将此文件运行为进程;

目录:

  • r:可使用ls命令获取其下的所有文件列表;
  • w: 可修改此目录下的文件列表;即创建或删除文件;
  • x: 可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息;

chmod 命令 权限管理命令

  • chmod [OPTION]... MODE[,MODE]... FILE...
  • chmod [OPTION]... OCTAL-MODE FILE...
  • chmod [OPTION]... --reference=RFILE FILE...

注意:用户仅能修改属主为自己的那些文件的权限;

三类用户:

  • u:属主
  • g:属组
  • o:其它
  • a: 所有

(1) chmod [OPTION]... MODE[,MODE]... FILE...

MODE表示法:

  • 赋权表示法:直接操作一类用户的所有权限位rwx;
  • u=
  • g=
  • o=
  • a=

让一个文件所属用户用户 rwx 的权限

chmod u=wrx test.txt

 

授权表示法:直接操作一类用户的一个权限位r,w,x;

  • u+, u-
  • g+, g-
  • o+, o-
  • a+, a-

把一个文件的可执行权限拿掉

 chmod u-x test.txt

(2) chmod [OPTION]... OCTAL-MODE FILE...  (以8进制的方式修改权限

chmod 777 test.txt

(3) chmod [OPTION]... --reference=RFILE FILE... (按照一个参考文件赋予权限)

# 文件 text1.txt 的权限最终和 test.txt 的权限相同
chmod --reference test.txt text1.txt

从属关系管理命令

chown命令

  • chown [OPTION]... [OWNER][:[GROUP]] FILE...
  • chown [OPTION]... --reference=RFILE FILE...

选项:

  • -R:递归修改

注意:仅管理员可修改文件的属主和属组

把文件的用户和属组修改为 roo roo 

chown roo:roo test.txt

 

 

 把文件 test.txt 的属组修改成 root

 chgrp root test.txt

install命令

install - copy files and set attributes

常用选项:

  • -m, --mode=MODE:设定目标文件权限,默认为755;
  • -o, --owner=OWNER:设定目标文件属主;
  • -g, --group=GROUP:设定目标文件属组;

单源复制:

  • install [OPTION]... [-T] SOURCE DEST
install test.txt zhang/

多源复制:

  • install [OPTION]... SOURCE... DIRECTORY
  • install [OPTION]... -t DIRECTORY SOURCE...

把 zhang 目录下的所有文件复制到当前目录下

install zhang/* ./

创建目录:

install [OPTION]... -d DIRECTORY...

创建 一个 test 的目录

install -d test

  

mktemp命令:

  • mktemp - create a temporary file or directory

mktemp [OPTION]... [TEMPLATE]

常用选项:

  • -d:创建临时目录

注意:mktemp会将创建的临时文件名直接返回,因此,可直接通过命令引用保存起来;

 

Linux系统有特殊的目录,专供临时文件使用。Linux使用/tmp目录来存放不需要永久保留的文件。mktemp命令专门用来创建临时文件,并且其创建的临时文件是唯一的。shell会根据mktemp命令创建临时文件,但不会

使用默认的umask值(管理权限的)。它会将文件的读写权限分配给文件属主,一旦创建了文件,在shell脚本中就拥有了完整的读写权限,其他人不可访问(除了root)。mktemp命令用法如下:

默认情况下,mktemp会在本地当前目录创建一个临时文件,创建临时文件时只需要创建模板文件,模板可以包含任意的文件名,文件末尾可以根据需要添加nX。Demo如下:

mktemp test.XXX

 

 

 作业练习

1、新建系统组mariadb, 新建系统用户mariadb, 属于mariadb组,要求其没有家目录,且shell为/sbin/nologin;尝试root切换至用户,查看其命令提示符;

 useradd -M -r -s /sbin/nologin mariadb

 

2、新建GID为5000的组mageedu,新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;

groupadd -g 5000 mageedu    
useradd  -d  /users/gentoo gentoo
echo gentoo | passwd --stdin gentoo

3、新建用户fedora,其家目录为/users/fedora,密码同用户名;

useradd fedora -d /users/fedora
echo fedora | passwd --stdin fedora  

4、新建用户www, 其家目录为/users/www;删除www用户,但保留其家目录;

useradd -d /users/www www
userdel www

  

5、为用户gentoo和fedora新增附加组mageedu;

usermod -aG 5000 gentoo
usermod -aG 5000 fedora

 

6、复制目录/var/log至/tmp/目录,修改/tmp/log及其内部的所有文件的属组为mageedu,并让属组对目录本身拥有写权限;

cp -r /var/log /tmp
chown -R :mageedu /tmp/log
chmod g+w /tmp/log

  

 

posted @ 2019-10-01 17:53  Crazymagic  阅读(1335)  评论(0编辑  收藏  举报