Linux中的用户与用户组:
概念:Linux中角色
1.当前用户
2.当前用户组
3.其他用户组
Linux中的权限:
1.只读
2.写
3.执行(不是所有文件都需要执行权限,仅限于应用程序)
普通用户与最高管理员:
- 普通用户:安装系统时我们所创建的用户,可以由管理员来分配
- 最高管理员:root,Linux系统内置的,当第一次使用root用户需要修改密码。
- 修改最高管理员root用户的密码:sudo passwd(后按提示输入密码即可)
注:终端输入密码时不会显示,输入错误按回车重新输入即可
普通用户与最高管理员切换:
1.普通用户切换root用户:sudo -i(没有设置密码时用此方法进入)
su root(设置密码(见上一步修改管理员密码)后能够通过此命令进入)
2.root用户切换普通用户:su 用户名(切换后默认在root目录下)
3.最高管理员的表示是#,普通用户是$
用户相关操作:
- 添加新用户:
语法:useradd[选项]用户名
eg:useradd -d(指明目录) /hmoe/lucy(目录的位置) -m(如果没有就创建) lucy(用户名):创建一个用户lucy,并在家目录下为她分配一个同名目录
注意:如果在新建用户的时候没有指定用户组,就会创建一个与用户名相同的组(注意这里严格来说是映射关系而并非层级关系),并让新用户属于这个组
eg:useradd -d /home/peter – mg(如果有分组就复用,没有分组就创建) lucy peter:创建一个用户peter,并创建了peter在home中的目录,将peter用户添加到lucy用户组中
注意,三者是这样的映射关系
2.查看用户所属的组
语法:sudo groups 用户名
注意:sudo是在普通用户中将权限临时提升至root
3.删除用户
语法:userdel [选项] 用户名
eg:userdel -r(递归)f(强制)i(非强制,会询问) peter:删除peter用户,并在不提示任何信息的情况下递归删除peter目录
注意:此处如果加了递归-f那么就会导致目录与同名用户均被删除,不添加递归,就只删除用户
出现这个,代表目录也被删除了
4.给用户添加密码
语法:passwd[选项]用户名
选项:
-l:锁定口令,(禁用账号)
-u:口令解锁
-d:使账号无口令
-e:强迫用户下次登陆时修改口令
注意:root用户下给用户设置密码:passwd 用户名(对密码复杂度没有要求)
普通用户下给用户设置密码:passwd (对密码复杂度有要求)
5.修改用户
语法:usermod[选项] 用户名
选项:
-c:备注,修改用户账号的备注文字
-g:用户组,修改用户所属的用户组
-G:群组,修改用户所属的附加群组(附加组无数个)
-s:shell,修改用户登入后所使用的shell
-u:uid,修改用户ID
eg:usermod -g root lucy :将lucy用户所属的组改成root组
eg:usermod -g lucy -G root lucy:将lucy用户所属的组改成lucy组,群组改成root,可以用“,”分割
用户组相关操作:
1.添加用户组:
语法:groupadd[项目]组名(不要拿中文命名)
选项:
-g: GID 制定新用户组的组标识(唯一的编号),如果不指定,系统会自动编号(尽量不要自己主动加编号,以防重复)
eg:groupadd workgroup(创建一个工作组)(起名时,尽量不要起关键字)
2.查看所有用户组
语法:cat /etc/group
语法:cat /etc/gshadow
3.删除用户组
语法:groupdel [选项] 组名(常规操作基本不用选项)
eg:groupdel workgroup(删掉工作组)
此时可以看到workgroup:x:1006已经被删掉
4.修改用户组
语法:groupmod [选项] 新组名 旧组名
选项:
-g:GID 为新的组制定新的唯一标识(可以不用管,系统会重新分配,尽量不要自己改)
-o:和-g选项同时使用时,允许用户组的新的GID与系统已有用户组的GID相同(尽量还是别用,保证名称不同不容易出问题哦)
-n:新用户组将用户组的名字改为新名字(必用)
eg:groupmod -n newwork(新工作组) workgroup(旧工作组)(将workgroup的名字改为newwork)
从后边的数字能看出修改成功
eg:groupmod -n workgroup12138 workgroup -g 1005 -o :将workgroup改名为workgroup12138,并且要求workgroup组和已经存在的1005组GID相同(容易出错,等下我演示)
此时可以看到原本排在newwork 后边的workgroup被改名为了workgroup12138,同时后边的GID也被改为了1005而并非原本的1006.(注:此时的两者GID编号相同,若是进行查询那么查询的结果一定是靠前的那个,在此处表现为newwork)
此处的fpf属于newwork组而并非上边创建的workgroup12138组,所以尽量不要更改GID值,以防出错。
权限管理
1.修改目录的拥有者
解释:目录也即是文件夹,目录的拥有着也就是目录的创建者
语法:chown [选项] 用户名 或者 :组名 文件/目录的路径
选项:
-c:显示更改部分的信息
-f:忽略错误信息
-h:修复符号链接
-R:处理指定目录以及其子目录中的所有文件
-v:显示详细的处理信息
eg:chown a(用户名) /home/b/dem01.c:修改dem01.c文件的拥有者为a(单个用户)(原来的拥有者是b)
eg:chown :root /home/b/dem01.c:修改dem01.c文件的拥有者为root组(组内所有用户)
2.修改文件或文件夹的可读可写可执行权限
语法:chmod [选项] 权限 文件或目录的路径
选项:
-c:显示更改部分
-f:忽略提示信息
-R:递归修改指定目录及其子目录中的所有文件
-v:显示详细信息
方式1:文字设定法
语法:chmod [who] [+,-,=] 权限名 文件或目录的路径who
格式说明:
who可选:
a:all 所有用户
u:user 当前用户
g:group 当前用户所在组(当前用户组)
o:other 其他用户或者其他用户组
+:增加权限
-:删除权限
=:设置权限
权限名:
r:可读
w:可写
x:可执行
-:不可(不可读,不可写,不可执行)
eg:chmod u = rwx,g = rx,o=- a.c:将当前路径下的acd.c文件的拥有者权限设置为可读可写可执行,同组用户可读可执行,其他用户没有任何权限
注:上边是代码示例,底下是之前所做的实验,除了时间跟文件名不一样,剩下都一样,结合底下理解上边。
方式2:数字设定法
语法:chmod 权限数字 文件或目录的路径
格式说明:
权限数字:
r:4
w:2
x:1
-:0
注意:我们的权限数字表示:777,三个数字,第一个数字代表当前用户组,第三个数字代表其他用户,每个数字都是权限累加的结果
eg:777(4+2+1,4+2+1,4+2+1)
chmod 777(赋予最高权限,读、写、执行 就记着这个是无敌的)
eg:chmod 750 b.c :将当前路径下的b.c文件的拥有者权限设置为可读可写可执行,同组用户可读可执行,其他用户没有任何权限。
此时可以看到a.c与b.c两者的权限虽通过不同方式改变但是权限都是一样的。