Linux文件属性
Linux为保护系统的安全性,对不同的用户访问同一文件的权限做了不同的规定


文件类型:表示该文件是文件夹还是文件,若是文件夹,则加上d,否则不加d
属主权限:表示权限最大的root用户可以进行的操作:可读可写可执行
属组权限:表示指定某一个组内的成员用户可以进行的操作:可读可执行但不可写
其他用户权限:表示除了上述两种用户的其他用户可以进行的操作:可读可执行不可写
root root:第一个root表示主用户,第二个root表示组用户
后面的数字表示存储空间大小,之后是时间
用户组管理
用户组的管理包括用户组的添加、删除和修改
与用户组相关的文件在etc/group中
用户组添加
命令:groupadd
作用:添加组
语法:groupadd [参数选项 选项值] 用户组名
选项:-g:设置用户组ID数字,如果不指定,则默认从1000之后递增(1-999是系统组)
当执行完添加用户组时,终端不会有反应,直接输出下一行,这就表示用户组添加成功。

再次创建相同的组时会提示

使用cat /etc/group查看已经创建的用户组

这其中hr是用户组名称,x是占位符,可以用来设置密码,一般不需要设置,1000是用户组ID
用户组修改
命令:groupmod
语法:groupmod [选项 选项值] 用户组名
选项:-g :gid缩写,设置一个自定义的用户组的ID数字
-n:设置新的用户组的名称
groupmod -g 用户组ID -n 新的用户组名称 旧的用户组名称
修改hr用户组,将组ID改为1100,将名称也更改为superman,查看更改后的用户组


用户组删除
命令:groupdel
语法:gorupdel 用户组名称
删除superman用户组:


用户管理
用户管理涉及用户的添加、删除、修改
与用户管理相关的文件在/etc/passwd
添加用户
命令:useradd
语法:useradd [选项 选项值] 用户名
选项:
-g :表示指定用户的用户是主组,选项值可以是ID或者组名
-G:表示指定用户的用户附加(额外)组,选项值可以是ID或者组名
-u :uid,用户的id(用户的标识符),系统默认会从500 /或1000之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ 的自选靓号情况】
-c:comment,添加注释(选择是否添加)
-s:指定用户登入后所使用的shell 解释器,默认/bin/bash【专门的接待员】,如果不想让其登录,则可以设置为/sbin/nologin (重要)
-d:指定用户登入时的启始目录(家目录位置)
-n:取消建立以用户名称为名的群组(了解)
先创建一个用户组superman,再创建一个用户,为用户组中的用户


存储用户信息的文件
组成:
用户名:密码占位符:用户ID:用户组ID:注释:家目录:解释器
这里是使用了参数进行床架用户的
注意:若不用任何参数,创建用户,系统会默认执行以下操作:
1)在 /etc/passwd 文件中创建一行关于dahei用户的数据
2)在 /etc/shadow 文件中新增了一行关于dahei密码的数据
3)在 /etc/group 文件中创建一行与用户名相同的组,例如dahei
4)在 /etc/gshadow 文件中新增一行与新增群组相关的密码信息,例如dahei
5)自动创建用户的家目录,默认在/home下,与用户名同名
用户名:登录linux时使用的用户名
密码:此密码位置一般情况都是"x",表示密码的占位,真实密码存储在/etc/shadow
用户ID:用户的识别符,每个用户都有唯一的UID【-u】
用户组ID:该用户所属的主组ID;【-g】
注释:解释该用户是做什么用的;【-c】
家目录:用户登录进入系统之后默认的位置;【-d】
解释器shell:等待用户进入系统之后,用户输入指令之后,该解释器会收集用户输入的指令,转换成机
为公司添加新员工,属于superman,用户ID1200,不允许登录系统,即解释器为/sbin/nologin
添加格式:useradd [选项 选项值] 具体的值 。。。 用户名

查看新员工:

用法二:useradd -G 附加组名 -u 用户ID -s /sbin/nologin -c "shuser lisi" 用户名
示例代码:
#useradd -G gzhr -u 1200 -s /sbin/nologin -c "gzuser lisi" lisi
含义:创建用户lisi,不带任何选项。
gzhr行的含义:在gzhr的组里(组id 是1002)有一个组内用户lisi(lisi 的附加组就是1002,附加组的名字是gzhr)。
如果需要为一个用户指定多个附加组,只需要将多个附加组的id 通过英文逗号“,”分割即可。
创建一个新的用户组,再创建一个用户erhei,该用户有多个附加组。
现在有两个用户组:superman,smartman

查看其附加组是否生效:进入到/etc/group中查看其用户组

注意:
1、主组只能有1 个(类似于亲生父母只有一对),附加组可以多个,也可以没有附加组(类似于认干爹干妈,可以有也可以没有,也可以有多个)
2、主组必须有
3、后期将权限管理的时候,关于文档的属组指的是主组(了解)
查看用户信息
命令:id
语法:id 默认显示当前执行该命令的用户的基本信息
语法:id 用户名,显示该用户名的基本信息

修改用户
命令:usermod
语法:usermod [选项 选项的值] … 用户名
将erhei的用户组名改为新创建的用户组名

-g:表示指定用户的用户主组,选项值可以是ID或者组名
-G:表示指定用户的用户附加组,选项的值可以是用户组的ID,也可以是组名
-u:uid,用户的id(用户的标识符),系统默认会从500 之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ 的自选靓号情况】
-L:锁定用户,锁定后用户无法登陆系统lock
-U:解锁用户unlock
-c<备注>:修改用户帐号的备注文字
-d<登入目录>:修改用户登入时的目录
-s<shell>:修改用户登入后所使用的shell
修改用户密码
命令:passwd
语法:passwd 用户名(如果不指定用户名则修改自己的密码)
这里更改erhei的密码为12345678

这里会提示过于简单化,但再次输入等同于忽略简单化强行设置为这个密码
设置完成后密码会存放在/etc/shadow中,保证了密码的安全性,而且这里面的密码都是加密的,无法看懂
切换用户
命令:su
语法:su 用户名

注意:
a. 从root 往普通用户切换不需要密码,但是反之则需要root 密码;
b. 切换用户之后前后的工作路径是不变的,添加了选项[-]会自动切换到用户的家;
c. 普通用户没有办法访问root 用户家目录,但是反之则可以:

这里会提示权限不够,因为是普通用户访问其他用户,但是root用户可以
删除用户
命令:userdel
语法:userdel 选项 用户名;删除账户及其对应家目录
选项:-r:表示删除用户的同时,删除其家目录/home下的对应文件夹

注意:已经登录的用户删除的时候提示删除失败,但是没有登录的用户可以正常删除,那这个时候想删除已经登录的用户怎么办呢?这是由于已经登录的用户正在占用进程
解决办法:使用kill命令 对应用户的全部进程
使用ps -ef | grep 用户名,检索正在运行的进程
使用kill -9 用户名强制删除
修改用户
权限分配
chmod:修改权限
格式1:(使用相加减表达权限)
chmod [选项] [权限修改] [文件]
格式2:(使用数字表达权限)
chmod [选项] [权限修改] [文件]
4:读
2:写
1:执行
7:全部
注意:如果只给一个数字表示修改o,两个表示修改go
选项:
-R:迭代修改
chgrp:修改用户组
格式:
chgrp [选项] [组名] [文件或目录]
选项:
-R:表达迭代修改
注意:文件或目录的所有用户或所有组,都是以编号来查询所有用户或所有组
如果不存在就显示编号,存在显示名称

这里将之前的一个目录test的附加组改为了bigdata组,加入-R表示其下的所有文件的附加组全部改为bigdata组
chown:修改所属用户
格式:
chown [选项] [组名] [文件或目录]
选项:
-R:表达迭代修改

这里就是更改test的主组为erhei
若是不加-R,则只是更改该文件夹的主组或者附加组,其目录下的文件夹还是原来的主组和附加组
创建一个新用户sanhei,将test2的主组设置为sanhei,附加组设置为bigdata
当切换到erhei用户时,erhei可以访问到test2目录,但不可以对其进行修改,因为权限不够

sudo:越权执行
格式:
sudo 命令
注意:sudo实际上去借root权限执行命令(root对普通用户分配了权限)
其他的一些功能
查找
find
格式:
find 开始查找路径 [选项] [条件]
选项:
-name
*表示匹配所有
?表示匹配一个
例如:从/开始查找后缀为.txt
find / -name "*.txt"
-type
d:表示目录
f:表示文件
例如:从/开始查找文件
find / -type f
-size
ll --block-size=单位
例如:大小以k为单位进行显示
ll --block-size=k
注意:条件需要给上单位
+表示大于
-表示小于
不给就是等于
例如:从/开始查找文件大小大于2k
find / -size +2k
-user
-group
Linux常见符号
|:管道,把前面一部分的内容交给后面去处理
例如:
cat /etc/profile | more
grep:筛选
格式:
grep 筛选条件
>>:追加,把命令1的结果写入到命令2
格式:
命令1 >> 命令2
例如:cat profile >> test.txt
>:覆盖
格式:
命令1 > 命令2
例如:cat profile > test.txt