文章目录
- 问题:
- 前言:用户和用户组概念
- 前言一、用户
- 前言二、用户组
- 一、添加用户和用户组
- 二、查看用户所属组命令、
- 三、管理用户组
- 方法一、gpasswd命令
- 方式二、newgrp命令
- 方式三、usermod命令
- 用户组实战:赋予用户root权限
- 四、文件修改权限命令chmod、chgrp、chown详解
- 4.1、chmod命令
- 4.1.1、命令选项
- 4.1.2、 文字设定法
- 4.1.3、 数字设定法
- 4.2 、chown 命令
- 4.2.1、参数说明:
- 4.2.1、实例:
- 4.3、chgrp命令
- 4.3.1、参数说明:
- 4.3.2、用法说明:
- 4.4、结语
问题:
描述:在登录他方服务器时发现是root用户无法操作docker命令,只有docker组才可操作,用以下命令得以解决,后续是一些学习总结。
groups //查看当前用户所属组 发现组是
sudo gpasswd -a root docker // 把root用户加到docker组中
前言:用户和用户组概念
前言一、用户
Linux中用户分为三类:超级用户、系统用户、普通用户
超级用户:
root,具有一切操作权力,所以不要轻易在root账户下面对文件进行操作。在Linux在操作系统的字符界面,root账户的提示符为#,在默认情况下,root用户的UID为0.系统用户:
系统用户是Linux系统正常工作所必需的内建的用户,一般是用于管理服务所用。系统用户不能用来登陆,如bin、daemon、lp等用户。系统用户的UID一般为1~499,它们的shell为/sbin/nologin。普通用户:
普通用户是为了让使用者能够使用Linux系统资源而建立的,用户新建的账号一般就是普通账号。在Linux操作系统的字符界面,普通用户的提示符为$,且普通用户的UID默认为1000~60000。
前言二、用户组
基本组(私有组):
在创建用户的同时就自动会建一个与用户同名的组。如建立mike用户会同时建立一个mike组,mike这个用户就属于mike组。
附加组(共有组) :用户所属的除基本组外的其他组
一、添加用户和用户组
1、添加用户,首先用adduser命令添加一个普通用户,命令如下:
adduser tommy //添加用户
passwd tommy //修改密码
groupadd tom //创建用户组
二、查看用户所属组命令、
whoami //查看当前用户
id //查看当前用户信息
[root@www wei]# id wei
uid=1000(wei) gid=1000(wei) 组=1000(wei),10(wheel)
groups tom//查看用户所属组
cat /etc/groups //查看所有用户组
/
三、管理用户组
方法一、gpasswd命令
用法:gpasswd[-a user][-d user][-A user,...][-M user,...][-r][-R]groupname
参数:
-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组
实例1:如何将用户添加到某个组?
gpasswd -a user1 group1
cat /etc/group //查看
group1:x:1011:user1,user2
实例2:如何替换某个组的所有成员呢?
gpasswd -M user2,user3 group1
cat /etc/group //查看,组中的用户全部被替换
group1:x:1011:user2,user3
实例3:删除组中的某一用户
gpasswd -d user1 group1
方式二、newgrp命令
newgrp:临时切换当前用户的用户组(修改的这个有效用户组只是临时环境起作用,当关闭此shell后就失效了,相当于临时的环境变量)
方式三、usermod命令
usermod -g root tommy //修改用户tommy使其属于root组
用户组实战:赋予用户root权限
2、赋予root权限
方法一:
修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
%wheel ALL=(ALL) ALL
然后修改用户,使其属于root组(wheel),命令如下:
usermod -g root tommy
修改完毕,现在可以用tommy帐号登录,然后用命令 su - ,即可获得root权限进行操作。
方法二:
修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
root ALL=(ALL) ALL
tommy ALL=(ALL) ALL
修改完毕,现在可以用tommy帐号登录,然后用命令 su - ,即可获得root权限进行操作。
方法三: 修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示:
tommy:x:500:500:tommy:/home/tommy:/bin/bash
修改后如下
tommy:x:0:500:tommy:/home/tommy:/bin/bash
保存,用tommy账户登录后,直接获取的就是root帐号的权限。
注意:虽然方法三看上去简单方便,但一般不推荐使用,推荐使用方法二。
四、文件修改权限命令chmod、chgrp、chown详解
4.1、chmod命令
chmod [who] [+ | – | =] [mode] 文件名 //修改文件操作权限
4.1.1、命令选项
命令中各选项的含义为:
操作对象who可是下述字母中的任一个或者它们的组合:
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
+ 添加某个权限。
– 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
设置mode所表示的权限可用下述字母的任意组合:
r 可读。
w 可写。
x 可执行。
X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
t 保存程序的文本到交换设备上。
u 与文件属主拥有一样的权限。
g 与和文件属主同组的用户拥有一样的权限。
o 与其他用户拥有一样的权限。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
–help : 显示辅助说明
–version : 显示版本
文件名:以空格分开的要改变权限的文件列表,支持通配符。在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:chmod g+r,o+r example使同组和其他用户对文件example 有读权限。
4.1.2、 文字设定法
例1:
$ chmod a+x sort
即设定文件sort的属性为:
文件属主(u) 增加执行权限
与文件属主同组用户(g) 增加执行权限
其他用户(o) 增加执行权限
例2:
$ chmod ug+w,o-x text
即设定文件text的属性为:
文件属主(u) 增加写权限
与文件属主同组用户(g) 增加写权限
其他用户(o) 删除执行权限
例3:
$ chmod u+s a.out
假设执行chmod后a.out的权限为(可以用ls – l a.out命令来看):
–rws--x--x 1 inin users 7192 Nov 4 14:22 a.out
并且这个执行文件要用到一个文本文件shiyan1.c,其文件存取权限为“–rw——-”,即该文件只有其属主具有读写权限。
4.1.3、 数字设定法
我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。
数字设定法的一般形式为:chmod [mode] 文件名¼
例1:
$ chmod 644 mm.txt
$ ls –l
即设定文件mm.txt的属性为:
-rw-r--r-- 1 inin users 1155 Nov 5 11:22 mm.txt
文件属主(u)inin 拥有读、写权限
与文件属主同组人用户(g) 拥有读权限
其他人(o) 拥有读权限
例2:
$ chmod 750 wch.txt
$ ls –l
-rwxr-x--- 1 inin users 44137 Nov 12 9:22 wchtxt
即设定wchtxt这个文件的属性为:
文件主本人(u)inin 可读/可写/可执行权
与文件主同组人(g) 可读/可执行权
其他人(o) 没有任何权限
4.2 、chown 命令
功能:更改某个文件或目录的属主和属组。这个命令也很常用。例如root用户把自己的一个文件拷贝给用户yusi,为了让用户yusi能够存取这个文件,root用户应该把这个文件的属主设为yusi,否则,用户yusi无法存取这个文件。
语法:chown [选项] 用户或组 文件
4.2.1、参数说明:
user : 新的档案拥有者的使用者 ID
group : 新的档案拥有者的使用者群体(group)
-c : 若该档案拥有者确实已经更改,才显示其更改动作
-f : 若该档案拥有者无法被更改也不要显示错误讯息
-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案
-v : 显示拥有者变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
–help : 显示辅助说明
–version : 显示版本
4.2.1、实例:
例1:把文件yusi123.com的所有者改为yusi。
$ chown yusi yusi123.com
例2:把目录/demo及其下的所有文件和子目录的属主改成yusi,属组改成users。
$ chown - R yusi.users /demo
例如:chown qq /home/qq (把home目录下的qq目录的拥有者改为qq用户)
例如:chown -R qq /home/qq (把home目录下的qq目录下的所有子文件的拥有者改为qq用户)
4.3、chgrp命令
功能:改变文件或目录所属的组。
语法:chgrp [选项] group filename¼
4.3.1、参数说明:
-c或–changes 效果类似”-v”参数,但仅回报更改的部分。
-f或–quiet或–silent 不显示错误信息。
-h或–no-dereference 只对符号连接的文件作修改,而不更动其他任何相关文件。
-R或–recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-v或–verbose 显示指令执行过程。
–help 在线帮助。
–reference=<参考文件或目录> 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
–version 显示版本信息。
该命令改变指定指定文件所属的用户组。其中group可以是用户组ID,也可以是/etc/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。
该命令的各选项含义为:
– R 递归式地改变指定目录及其下的所有子目录和文件的属组。
4.3.2、用法说明:
例1:
$ chgrp - R book /opt/local /book
改变/opt/local /book/及其子目录下的所有文件的属组为book。
4.4、结语
后续相关权限总结待补充。。。。未完待续。。