在 Linux 系统中,用户和权限是管理和控制文件系统访问的重要组成部分。下面是关于 Linux 用户和权限的基本概念:
1. 用户(User): 用户是使用 Linux 系统的个体或实体。每个用户都有一个唯一的用户名和用户 ID(UID),用于标识用户。
2. 用户组(Group): 用户组是一组相关用户的集合。每个用户可以属于一个或多个用户组。用户组有一个唯一的组名和组 ID(GID),用于标识组。
3. 权限(Permissions): 每个文件和目录都有与之关联的权限设置,用于定义对其进行读取、写入和执行的访问权限。权限由三个组(所有者、所属组和其他人)的三种类型(读取、写入和执行)组合来表示。
4. 所有者(Owner): 文件或目录的所有者是创建该文件或目录的用户。所有者对文件或目录具有特定的权限。
5. 所属组(Group): 文件或目录可以关联一个所属组,该组包含多个用户。所属组的成员具有与组关联的一组权限。
6. 其他人(Others): 其他人指的是既不是文件或目录所有者,也不属于所属组的用户。其他人有自己的一组权限。
7. 权限表示: 权限用三位字符(r、w、x)表示,分别表示读取(r)、写入(w)和执行(x)的能力。每个权限组合为九位字符,依次表示所有者、所属组和其他人的权限。例如,-rw-r--r--
表示所有者有读写权限,所属组和其他人只有读取权限。
8. 修改权限: 用户可以使用 chmod
命令修改文件或目录的权限。此命令允许用户添加或删除某个用户组的权限,或者指定具体的权限设置。
Linux 用户和权限的管理使得系统管理员可以有效地限制对敏感文件和目录的访问,并确保系统的安全性。
[root@som ~]# useradd zhangsan #创建zhangsan用户
用户基本信息存放在 /etc/passwd 文件,每个用户记录一行,以:分割为7字段,含义如下
用户名:密码占位符:用户UID:基本组GID:描述信息:家目录(宿主目录):解释器
[root@som ~]# wc -l /etc/passwd #统计当前系统中的用户数量
[root@som ~]# grep zhangsan /etc/passwd #从/etc/passwd文件中过滤zhangsan的信息
zhangsan:x:1004:1004::/home/zhangsan:/bin/bash
[root@som ~]# id zhangsan #判断用户是否存在
uid=1002(zhangsan) gid=1002(zhangsan) 组=1002(zhangsan)
[root@som ~]# id dachui #判断用户是否存在
id: “dachui”:无此用户
[root@som ~]# useradd som01 #创建用户som01
[root@som ~]# grep som01 /etc/passwd #查看/etc/passwd是否多出了用户som01
[root@som ~]# id som01 #查看用户som01是否存在
uid=1005(som01) gid=1005(som01) 组=1005(som01)
[root@som ~]# useradd som02 #创建用户som02
[root@som ~]# id som02 #查看用户som02是否存在
指定用户UID创建用户
[root@som ~]# useradd -u 1100 som03 #创建UID为1100的用户som03
[root@som ~]# id som03 #查看验证
uid=1100(som03) gid=1100(som03) 组=1100(som03)
指定用户家目录创建目录
[root@som ~]# useradd -d /opt/som04 som04 #创建som04用户,其家目录为/opt/som04
[root@som ~]# grep som04 /etc/passwd #查看验证是否多出来了som04用户
som04:x:1101:1101::/opt/som04:/bin/bash
[root@som ~]# ls /opt/ #查看som04用户家目录
指定用户解释器
[root@som ~]# useradd -s /sbin/nologin som05 #创建用户som05并指定解释器
[root@som ~]# grep som05 /etc/passwd #查看验证
som05:x:1103:1103::/home/som05:/sbin/nologin
指定用户附加组
[root@som ~]# groupadd tarena #创建组tarena
[root@som ~]# useradd -G tarena som06 #创建som06用户并添加到tarena组里面
[root@som ~]# id som06 #验证
uid=1104(som06) gid=1105(som06) 组=1105(som06),1104(tarena)
指定基本组
[root@som ~]# useradd -g tarena som07 #创建som06用户指定基本组为tarena
[root@som ~]# id som07 #验证
uid=1104(som07) gid=1105(tarena) 组=1104(tarena)
[root@som ~]# useradd alex #创建用户alex
[root@som ~]# usermod -u 1200 alex #修改用户alex的UID为1200
[root@som ~]# usermod -s /bin/sh alex #修改用户alex的解释器为/bin/sh
[root@som ~]# grep alex /etc/passwd #查看用户alex的信息
[root@som ~]# groupadd mygroup #添加mygroup组
[root@som ~]# usermod -G tarena alex #将alex附加组设置为tarena
[root@som ~]# id alex #查看验证
uid=1004(alex) gid=1004(alex) 组=1004(alex),1003(tarena)
[root@som ~]# usermod -G mygroup alex #将alex附加组设置为mygroup
[root@som ~]# id alex #查看验证,-G其实是重置附加组
uid=1004(alex) gid=1004(alex) 组=1004(alex),1005(mygroup)
[root@som ~]# grep alex /etc/passwd #查看当前alex的家目录
alex:x:1004:1004::/home/alex:/bin/bash
[root@som ~]# usermod -d /opt/alex alex #修改alex用户家目录为/opt/alex
[root@som ~]# grep alex /etc/passwd #查看验证,alex用户家目录已经修改为/opt/alex
alex:x:1004:1004::/opt/alex:/bin/bash
[root@som ~]# ls /opt/ #但是/opt/下没有alex家目录,因为usermod -d不会创建目录
[root@som ~]# userdel som03 #删除用户som03,家目录、信箱不删除
[root@som ~]# userdel -r som04 #删除用户som04,家目录、信箱一并删除
用户名:加密密码:从1970年1月1日到最近一次修改密码时间:密码最短有效天数,默认为0:密码最长有效天数,默认99999:密码过期前警告天数,默认是7:密码过期后多少天禁用此账户:账号失效天数,默认是空:保留字段(未使用)
[root@som ~]# passwd lisi #修改lisi用户的密码
更改用户 lisi 的密码 。
新的 密码: #为了安全,输入密码不显示
无效的密码: 密码少于 8 个字符
重新输入新的 密码: #为了安全,输入密码不显示
passwd:所有的身份验证令牌已经成功更新。
[root@som ~]# echo 123 | passwd --stdin zhangsan #修改用户zhangsan用户密码为123
root用户使用~/.bashrc文件永久定义别名
[root@som ~]# vim ~/.bashrc
...
alias hn='hostname'
...
常见报错提示:Permission denied :权限不足
对于文本文件,拥有相应权限能做操作哪些命令(举例):
r 读取权限:cat less head tail
w 写入权限:vim > >>
x 可执行权限: Shell脚本编写时可以赋予
查看文件权限: ls -l 文件1 文件2
查看目录权限: ls -ld 目录1 目录2 …
以 - 开头: 文本文件
以 d 开头:目录
以 l 开头: 快捷方式
[root@som ~]# ls -ld /etc/ #查看/etc/目录权限
[root@som ~]# ls -l /etc/rc.local #查看/etc/rc.local权限
[root@som ~]# ls -l /etc/passwd #查看/etc/passwd权限
[root@som ~]# mkdir /som01 #创建素材目录
[root@som ~]# ls -ld /som01 #查看/som01目录权限
drwxr-xr-x. 2 root root 6 2月 17 12:54 /som01
取消/som01目录所有者的w权限
[root@som ~]# chmod u-w /som01 #u-w权限
[root@som ~]# ls -ld /som01 #查看权限
/som01目录所有者怎加w权限
[root@som ~]# chmod u+w /som01 #u+2权限
[root@som ~]# ls -ld /som01 #查看权限
修改/som01目录所属组为只读权限
[root@som ~]# chmod g=r /som01 #g=r权限
[root@som ~]# ls -ld /som01 #查看权限
修改/som01目录其他人没有任何权限
[root@som ~]# chmod o=--- /som01 #其他人取消所有权限
[root@som ~]# ls -ld /som01 #查看权限
同时设置权限
[root@som ~]# chmod u=rwx,o=rx /som01 #所有者权限为rwx,其他人权限为rx
[root@som ~]# ls -ld /som01 #查看权限
[root@som ~]# chmod u=rwx,g=rx,o=rx /som01 #所有者权限为rwx,所属组/其他人权限为rx
[root@som ~]# chmod ugo=rwx /som01 #所有者/所属组/其他人权限为rwx
[root@som ~]# ls -ld /som01 #查看权限
-R递归修改权限
[root@som ~]# mkdir -p /opt/aa/bb/cc #递归创建/opt/aa/bb/cc
[root@som ~]# ls -lR /opt/ #递归查看属性
查看aa,bb,cc(目录其他人的权限都是rx)
[root@som ~]# ls -ld /opt/aa/
[root@som ~]# ls -ld /opt/aa/bb/
[root@som ~]# ls -ld /opt/aa/bb/cc/
递归修改权限,目录本身包括此目录里面会发生变化
[root@som ~]# chmod -R o=--- /opt/aa/ #递归设置/opt/aa其他人没有任何权限
[root@som ~]# ls -ld /opt/aa/ #查看验证
[root@som ~]# ls -ld /opt/aa/bb/
[root@som ~]# ls -ld /opt/aa/bb/cc/
[root@som ~]# chmod g=rx,o=rx /som01/ #设置权限
[root@som ~]# ls -ld /som01/ #查看权限
[root@som ~]# useradd zhangsan #创建zhangsan用户
drwxr-xr-x. 2 root root 6 7月 1 03:56 /som01/
[root@som ~]# id zhangsan #判断用户归属关系
uid=1004(zhangsan) gid=1004(zhangsan) 组=1004(zhangsan)
[root@som ~]# mkdir /som02 #创建/som02目录
[root@som ~]# echo 123 > /som02/a.txt #创建/som02/a.txt文件内容为123
zhangsan用户测试
[root@som ~]# su - zhangsan #切换用户
[zhangsan@som ~]$ cat /som02/a.txt #可以查看
123
[zhangsan@som ~]$ echo haha > /som02/a.txt #写入haha失败
-bash: /som02/a.txt: 权限不够
[zhangsan@som ~]$ exit #退回到root用户
[root@som ~]# chmod o+w /som02/a.txt #赋予w的权限
[root@som ~]# su - zhangsan #切换用户zhangsan
[zhangsan@som ~]$ echo haha >> /som02/a.txt #写入成功
[zhangsan@som ~]$ cat /som02/a.txt #可以验证
123
haha
[root@som ~]# ls -ld /som02/ #查看权限
drwxr-xr-x. 2 root root 19 6月 28 13:22 /som02/
[root@som ~]# id zhangsan #查看zhangsan用户归属
uid=1004(zhangsan) gid=1004(zhangsan) 组=1004(zhangsan)
zhangsan用户测试
[root@som ~]# su - zhangsan #切换用户zhangsan
[zhangsan@som ~]$ ls -l /som02/ #可以查看
[zhangsan@som ~]$ cd /som02 #可以切换目录
[zhangsan@som som02]$ exit
[root@som ~]# chmod o-x /som02 #其他人取消x权限
[root@som ~]# su - zhangsan #切换zhangsan用户
[zhangsan@som ~]$ cd /som02 #切换失败
-bash: cd: /som02: 权限不够
[zhangsan@som ~]$ ls /som02 #查看虽然显示,但是也异常
ls: 无法访问/som02/a.txt: 权限不够
a. txt
在目录下写入内容,但是修改的是目录里面的内容,对目录本身没有修改权限:
[root@som ~]# chmod o=rwx /som02
[root@som ~]# su - zhangsan
[zhangsan@som ~]$ cd /som02
[zhangsan@som som02]$ touch zs.txt #创建成功
[zhangsan@som som02]$ mkdir zs #创建成功
[zhangsan@som som02]$ exit
如果想要对目录本身有修改的权限,找此目录的父目录即可:
[zhangsan@som som02]$ cd
[zhangsan@som ~]$ mv /som02 /stu02 #修改失败
mv: 无法将"/som02" 移动至"/stu02": 权限不够
[root@som ~]# su - zhangsan
[root@som ~]# chmod o+w / #修改/的权限
[root@som ~]# su - zhangsan
[zhangsan@som ~]$ mv /som02 /stu02 #修改成功
[zhangsan@som ~]$ ls /
目录的 r 权限:能够 ls 浏览此目录内容
目录的 w 权限:能够执行 rm/mv/cp/mkdir/touch/等更改目录内容的操作
目录的 x 权限:能够 cd 切换到此目录
权限位的8进制数表示
7:rwx 6:rw- 5:r-x 4:r-- 3:-wx 2:-w- 1:–x 0:—
数字的形式修改权限:
[root@som ~]# mkdir /som03
[root@som ~]# ls -ld /som03
[root@som ~]# chmod 750 /som03
[root@som ~]# ls -ld /som03
[root@som ~]# chmod 700 /som03
同时修改所有者(属主)和所属组(属组)
[root@som ~]# mkdir /ansible #创建/ansible
[root@som ~]# ls -ld /ansible #查看权限
[root@som ~]# groupadd stugrp #创建组stugrp
[root@som ~]# useradd dc #创建dc用户
[root@som ~]# chown dc:stugrp /ansible #修改/ansible目录的所有者为dc,所属组为stugrp
[root@som ~]# ls -ld /ansible #查看归属
[root@som ~]# chown zhangsan /ansible #仅/ansible目录的修改所有者为zhangsan
[root@som ~]# ls -ld /ansible #查看归属
只修改所属组
[root@som ~]# chown :root /ansible/ #仅修改所属组
[root@som ~]# ls -ld /ansible #查看归属
递归修改归属关系
[root@som ~]# chown -R dc /opt/aa #递归修改/opt/aa的所有者为dc
[root@som ~]# ls -ld /opt/aa #验证
[root@som ~]# ls -ld /opt/aa/bb/
[root@som ~]# ls -ld /opt/aa/bb/cc/