小白养成记——Linux中的用户和权限管理
1、用户组管理
每个用户都属于一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
在创建用户时,如果未指定组,则系统会创建一个与用户名同名的组。
以下是关于用户组管理的一些基本命令:
新建用户组
$ groupadd <组名>
删除用户组
$ groupdel <组名>
修改组名
$ groupmod -n <新的组名> <现在的组名>
查看用户组的创建信息
用户组的数据保存在 /etc/group 文件中(不包含已删除的组),因此可以在该文件中查看所有的用户组信息````:
# 创建一个名为"family"的组
$ sudo groupadd family # 查看 /etc/group 文件,已有了 family 组的信息
$ tail -n 1 /etc/group
family:x:1002: # 将 family 组重命名为 "family1"
$ sudo groupmod -n family1 family # 再次查看 /etc/group 文件,组名已更改
$ tail -n 1 /etc/group
family1:x:1002:
2、用户管理
创建用户
$ useradd [-g <已存在的组名>] <用户名>
创建用户时可以指定该用户所在的组,如果省略,则系统会默认创建一个与用户名同名的组。
创建了一个用户后,在 /home/ 目录中就会生成一个与用户名同名的目录作为用户主目录。如:
# 创建一个用户名为"zhangsan"的用户
$ sudo useradd zhangsan # 在 /home/ 目录下自动生成了名为"zhangsan"目录
$ ls /home/
zhangsan # 同时系统也自动创建了一个名为"zhangsan"的用户组
$ tail -n 1 /etc/group
zhangsan:x:1001:
设置用户密码
$ passwd [<用户名>]
所有用户均可使用 passwd 命令修改自己的密码,修改时需要先输入当前的密码,再输入新的密码,且密码中不能包含当前用户名。如当前用户为 alice:
$ passwd
更改用户 alice 的密码 。
为 alice 更改 STRESS 密码。
(当前)UNIX 密码:xxxxxxxx
新的 密码:xxxxxxxx
重新输入新的 密码:xxxxxxxx
passwd:所有的身份验证令牌已经成功更新。
也可以为指定用户设置密码,默认只有 root 用户才有该权限:
$ sudo passwd zhangsan
更改用户 zhangsan 的密码 。
新的 密码:xxxxxxxx
重新输入新的 密码:xxxxxxxx
passwd:所有的身份验证令牌已经成功更新。
这时是不需要输入旧密码的。
删除用户
$ userdel [-r] <用户名>
前面已经提到,在创建新用户时,会在 /home/ 目录中生成一个与用户名同名的目录作为用户主目录,在删除用户时,可以选择是否保留该用户主目录:
# 这样的操作会删除用户 zhangsan,但会保留 /home/zhangsan 目录
$ sudo userdel zhangsan # 这样的操作会删除用户 zhangsan,同时也会删除 /home/zhangsan 目录
$ sudo userdel -r zhangsan
特别地,如果系统自动生成了与用户名同名的用户组,则在删除用户时,该同名的用户组也会被删除。
查看创建用户的历史信息
在 /etc/passwd 文件中保存了用户的创建信息(不包含已删除的用户):
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
... ...
zhangsan:x:1001:1001::/home/zhangsan:/bin/bash
切换用户(switch user)
$ su [-] <用户名>
默认切换用户后只能获得用户的执行权限,不能获取其环境变量。如果需要同时获取其环境变量,则可以加上参数"-":
# 输出当前用户的环境变量
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/alice/.local/bin:/home/alice/bin
# 切换到 root 用户
$ su root
密码:xxxxxxxx
# 输出当前用户的环境变量,可以发现与之前的相同
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/alice/.local/bin:/home/alice/bin $ exit
exit # 退出后重新切换到 root 用户,此时加上"-" ,显示了上一次的登录时间
$ su - root
密码:xxxxxxxx
上一次登录:五 2月 19 20:06:27 CST 2021pts/0 上
# 输出当前用户的环境变量,可以发现这时是 root 用户的环境变量
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
查看用户信息
$ id <用户名>
可以查看指定用户的 id 以及所在组的 id 和名称等信息。如:
$ id alice
uid=1000(alice) gid=1000(alice) 组=1000(alice),10(wheel)
可以看到 alice 用户所属的组为 alice(组id为1000) 和 wheel(组id为10)。
查看当前用户名
$ whoami
root
$ su alice
$ whoami
alice
$ who am i
root pts/0 2021-02-19 20:27 (11.205.52.123)
修改用户所在的组
$ usermod -g family zhangsan
如将 zhangsan 移至 family 组:
# 当前 zhangsan 位于 zhangsan 组中
$ id zhangsan
uid=1001(zhangsan) gid=1001(zhangsan) 组=1001(zhangsan)
$ groups zhangsan
zhangsan : zhangsan # 修改 zhangsan 所在组
$ sudo usermod -g family zhangsan # 再次查看,可以看到 zhangsan 已被移至 family 组中
$ id zhangsan
uid=1001(zhangsan) gid=1002(family) 组=1002(family)
$ groups zhangsan
zhangsan : family
给普通用户以 root 权限
如果普通用户在执行命令时提示"权限不够",则可以在命令前添加 "sudo" 以使用 root 权限再执行,此时需要输入自身的密码验证。
但并不是任意普通用户都可以使用 "sudo",详情可以查看 /etc/sudoers 文件。
在 /etc/sudoers 文件中有默认如下配置:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL ## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
这表明只有 root 用户或 wheel 组中的用户可以使用"sudo"。如果需要让新用户也可以使用"sudo",则可以在 /etc/sudoers 中配置该用户或用户组。如:
$ visudo ## Allow root to run any commands anywhere
root ALL=(ALL) ALL
zhangsan ALL=(ALL) ALL
此时用户 zhangsan 便可以在输入自己的密码后使用“sudo”。
如果被信任的用户不希望在使用"sudo"时还要输入密码,则可以设置:
zhangsan ALL=(ALL) NOPASSWD:ALL
这样用户 zhangsan 便可以直接使用“sudo”而无需再输入自己的密码。
3、文件权限
3.1 文件属性说明
使用 ls -l 命令可以查看文件(目录)的属性,如:
$ mkdir /home/alice/pardir && cd /home/alice/
$ touch ./pardir/a.txt ./pardir/b.txt
$ ls -l ./
drwxrwxr-x. 2 alice alice 32 2月 26 18:57 pardir
$ ls -l ./pardir/
-rw-rw-r--. 1 alice alice 0 2月 26 18:57 a.txt
-rw-rw-r--. 1 alice alice 0 2月 26 18:57 b.txt
文件属性的说明如下:
3.2 文件的权限信息说明
将文件属性中的 1-9 位放大如下:
可以看到,该文件的所属用户和所属组都可以对该文件进行读、写以及执行操作,而组外的其他用户可以对该文件进行读操作和执行操作,而不能进行写操作。
对于不同的文件类型,关于三种操作的解释略有不同,见下表:
3.3 修改文件的权限
# 方式一
$ chmod [选项] [{ugo}{+-=}{rwx}] <文件名>
# 方式二
$ chmod [选项] [{777}] <文件名>
常用的选项有 -R,即 --recursive,表示递归操作。
示例1:修改 a.txt 文件的权限,对所属用户增加执行权限,对所属组减少写权限,对其他用户增加写权限和执行权限:
# 查看当前文件的权限信息
$ ll a.txt
-rw-rw-r--. 1 zhangsan family 0 2月 26 18:57 a.txt
# 修改文件权限
$ chmod u+x,g-w,o+wx a.txt
# 再次查看文件的权限信息
$ ll a.txt
-rwxr--rwx. 1 zhangsan family 0 2月 26 18:57 a.txt
示例2:修改 a.txt 文件的权限为——所属用户具有读、写和执行权限,所属组具有读和执行权限,其他用户具有读权限:
# 修改文件权限(方式一)
$ chmod u=rwx,g=rx,o=r a.txt
# 修改文件权限(方式二)
$ chmod 754 a.txt
# 再次查看文件的权限信息
$ ll a.txt
-rwxr-xr--. 1 zhangsan family 0 2月 26 18:57 a.txt
3.4 修改文件的所属用户
$ chown [选项] <新用户名或用户id> <文件名>
如将 a.txt 文件的所有者由 alice 改为 zhangsan:
# 查看当前 a.txt 文件的所有者为 alice
$ ll a.txt
-rw-rw-r--. 1 alice alice 0 2月 26 18:57 a.txt
# 查看用户 zhangsan 的基本信息
$ id zhangsan
uid=1001(zhangsan) gid=1002(family) 组=1002(family)
# 将 a.txt 文件的所有者改为1001号用户,即 zhangsan
$ sudo chown 1001 a.txt
# 再次查看 a.txt 文件的所有者,可见已经改为了 zhangsan
$ ll a.txt
-rw-rw-r--. 1 zhangsan alice 0 2月 26 18:57 a.txt
3.5 修改文件的所属组
$ chgrp [选项] <新组名或组id> <文件名>
如将 a.txt 文件的所属组由 alice 改为 family:
# 查看当前 a.txt 文件的所属组为 alice
$ ll a.txt
-rw-rw-r--. 1 zhangsan alice 0 2月 26 18:57 a.txt
# 将 a.txt 文件的所属组改为1002号组,即 family
$ sudo chgrp 1002 a.txt
# 再次查看 a.txt 文件的所属组,可见已经改为了 family
$ ll a.txt
-rw-rw-r--. 1 zhangsan family 0 2月 26 18:57 a.txt
一些其他的常用命令:CentOS7 下端口的开放控制
1、查看当前的防火墙状态
$ firewall-cmd --state
running
2、查看当前防火墙开放了哪些端口
$ firewall-cmd --zone=public --list-ports
8080/tcp
3、开放指定端口
$ firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
$ firewall-cmd --reload
success
4、关闭指定端口
$ firewall-cmd --zone=public --remove-port=3306/tcp --permanent
success
$ firewall-cmd --reload
success
5、关闭防火墙
$ systemctl stop firewalld.service
小白养成记——Linux中的用户和权限管理的更多相关文章
- 浅析Linux系统下用户与权限管理
Linux作为一种多用户多任务操作系统,在日常的使用中不可避免地要划分出一个角色的概念来管理和使用计算机,这个角色与每一个计算机使用者关联,在Linux中称这种角色为用户.而在每一个用户使用计算机的过 ...
- linux ftp 添加用户及权限管理
Linux下创建用户是很easy的事情了,只不过不经常去做这些操作,时间久了就容易忘记,顺便配置一下FTP.声明:使用Linux版本release 5.6,并以超级管理员root身份运行. 1.创建用 ...
- Linux云计算-04_Linux用户及权限管理
Linux是一个多用户的操作系统,引入用户,可以更加方便管理Linux服务器,系统默认需要以一个用户的身份登录,而且在系统上启动进程也需要以一个用户身份器运行,用户可以限制某些进程对特定资源的权限控制 ...
- 小白养成记——MySQL中的排名函数
1.ROW_NUMBER() 函数 依次排序,没有并列名次.如 SELECT st.ID '学号', st.`NAME` '姓名', sc.SCORE '成绩', ROW_NUMBER() OVER( ...
- linux文件系统的用户和权限管理
1. 为什么要有用户的概念? 多用户,多任务业务对系统资源的隔离产生需求 2. linux 用户的分类? 2.1. 管理员 拥有操作所有文件的权限 2.2. 普通用户 2.2.1. 普通登录用户 2. ...
- linux 中更改用户权限和用户组的命令chmod,chgrp实例
linux 中更改用户权限和用户组的命令实例; 增加权限给当前用户 chmod +wx filename chmod -R 777 /upload 用户组 chgrp -R foldname zdz ...
- Linux中加入用户、删除用户时新手可能遇到的问题
Linux中加入用户.删除用户时新手可能遇到的问题 1.创建新用户后切换到新用户:No directory, logging in with HOME=/ 加入用户 #sudo us ...
- Linux中切换用户变成-bash4.1-$的解决方法【转】
转自 Linux中切换用户变成-bash4.1-$的解决方法 - xia_xia的博客 - 博客频道 - CSDN.NEThttp://blog.csdn.net/xia_xia0919/articl ...
- Linux中root用户找不到JAVA_HOME
Linux中root用户找不到JAVA_HOME 在Ubuntu环境中安装好Java环境后设置环境变量:在/etc/profile中设置好了JAVA_HOME变量并引入到PATH中,用于Ubunt ...
随机推荐
- CCF CSP 202009-2 风险人群筛查
202009-2 风险人群筛查 题目背景 某地疫情爆发后,出于"应检尽检"的原则,我们想要通知所有近期经过改高危区域的居民参与核酸检测. 问题描述 想要找出经过高危区域的居民,分析 ...
- Animator动画状态机的简单使用
一.动画状态机的使用 1.动画状态机说明 2.动画切换箭头的Inspector面板 3.动画的Inspector面板 二.动画状态机的使用和脚本控制 1.动画状态机的使用 2.动画状态机的控制脚本 ...
- HDU5739 Fantasia【点双连通分量 割点】
HDU5739 Fantasia 题意: 给出一张\(N\)个点的无向图\(G\),每个点都有权值\(w_i\),要求计算\(\sum_{i=1}^{N}i\cdot G_i % 1e9+7\) 其中 ...
- HDU6434 Count【欧拉函数 线性筛】
HDU6434 I. Count T次询问,每次询问\(\sum_{i=1}^{n}\sum_{j=1}^{n-1}[gcd(i-j,i+j)=1]\) \(T\le 1e5, n \le 2e7\) ...
- 关于最小生成树 Kruskal 和 Prim 的简述(图论)
模版题为[poj 1287]Networking. 题意我就不说了,我就想简单讲一下Kruskal和Prim算法.卡Kruskal的题似乎几乎为0.(●-`o´-)ノ 假设有一个N个点的连通图,有M条 ...
- Codeforces Round #660 (Div. 2) A. Captain Flint and Crew Recruitment、Captain Flint and a Long Voyage
题目链接:Captain Flint and Crew Recruitment 题意: t组输入,每一组输入一个n.这里我们说一下题目定义的近似质数概念: "如果可以将正整数x表示为p⋅q, ...
- 使用scrapy爬取jian shu文章
settings.py中一些东西的含义可以看一下这里 python的scrapy框架的使用 和xpath的使用 && scrapy中request和response的函数参数 & ...
- UVA-257 哈希算法
UVA-257 题意: 给你很多串,你需要找到这个串内有没有两个长度大于3的回文字符串,且要保证这两个回文字符串不相同,也不能完全覆盖,但可以重合一部分 题解: 首先判断回文的话可以通过马拉车算法(M ...
- Markdown基本语法学习(使用Typora编辑器)
Markdown基本语法学习(使用Typora编辑器) 一级标题:就用 #加标题名字 二级标题 二级标题:## + 标题名字 三级标题 三级标题:### + 标题名字 四级标题 四级标题:#### + ...
- 3.keepalived+脚本实现nginx高可用
标题 : 3.keepalived+脚本实现nginx高可用 目录 : Nginx 序号 : 3 else exit 0 fi else exit 0 fi - 需要保证脚本有执行权限,可以使用chm ...