2团
Published on 2024-08-16 / 12 Visits
0
0

Linux用户及文件权限操作

1. 添加用户至管理员组

# 添加用户test
# -m: 为test用户创建用户目录(/home/test)
# -G sudo: 添加test用户至sudo组
# -s /bin/bash: 指定用户登录时使用的shell(如果未指定,默认使用/bin/sh)
# 如果想修改用户的配置信息,可以使用usermod
jxd@jxd:~$ sudo useradd -m -g sudo -s /bin/bash test
# 为test用户设置密码
jxd@jxd:~$ sudo passwd test
New password:
Retype new password:
passwd: password updated successfully
# 通过members命令可知,当前sudo用户组内包含jxd和test两个用户
jxd@jxd:~$ members sudo
test jxd

通过以上命令,完成了test用户的设置,具体用户信息可在/etc/passwd文件中查看(可编辑文件修改用户默认登陆终端信息)。

通过su(不填写用户名的情况下,默认切换到root用户)可切换执行用户,需要注意,切换时添加-标志,可同时切换执行目录。

image-zthm.png

2. 添加/移除用户组

# 添加temp用户组
jxd@jxd:~$ sudo groupadd temp
[sudo] password for jxd:
# 查看temp用户组,用户组ID为1004
jxd@jxd:~$ cat /etc/group|grep temp
temp:x:1004:
# 将test用户添加至temp用户组
jxd@jxd:~$ sudo usermod -G temp test
# 查看当前temp用户组成员信息
jxd@jxd:~$ members temp
test
# 查看test用户信息,可发现其归属于sudo和temp用户组
jxd@jxd:~$ id test
uid=1001(test) gid=27(sudo) groups=27(sudo),1004(temp)
# 查看sudo用户组成员
jxd@jxd:~$ members sudo
test jxd
# 从temp用户组中删除test用户
jxd@jxd:~$ sudo gpasswd -d test temp
Removing user test from group temp
jxd@jxd:~$ members temp
# 输出为空,test用户已经从temp用户组中删除
jxd@jxd:~$ id test
uid=1001(test) gid=27(sudo) groups=27(sudo)

3. 用户操作实践

image-mvdu.png

切换至test用户,安装docker后执行docker ps,会弹出无权限访问提示。

此时,查看用户组,可发现新增docker用户组,且docker用户组下现阶段无用户。我们想要正常调用docker相关命令,就需要将当前用户添加至docker用户组,具体操作如下所示:

image-xukw.png

将当前用户(test)添加至docker用户组,更新用户组信息,此时可正常调用docker ps命令。

4.文件权限

Linux针对多用户登录,对文件权限进行了精心的设计。下面结合示例进行简单阐述。

ttt用户(属于ttt以及sudo用户组),在ttt用户的根目录库下创建文件夹和文件,通过ls -l命令查看文件夹及文件的具体权限信息:

ttt@jxd:~$ id ttt
# ttt用户归属于ttt以及sudo用户组
uid=1002(ttt) gid=1002(ttt) groups=1002(ttt),27(sudo)
ttt@jxd:~$ ls -l
total 4
# 需要注意,以下输出中的ttt ttt表示当前项的所有者和所属组分别是ttt和ttt(用户和用户组同名)
# drwxrwxr-x: 开头的d表示doc是文件夹
# rwxrwxr-x可拆分为rwx(ttt用户对doc具有读写执行的权限)rwx(ttt用户组内成员对doc具有读写执行的权限)r-x(其他用户对doc具有读和执行的权限)
drwxrwxr-x 2 ttt ttt 4096 Aug 24 20:14 doc
# -rw-rw-r--: 开头的-表示txt1.txt是个普通的文本文件‘
# -rw-rw-r--可拆分为rw-(ttt用户对txt1.txt具有读写的权限)rw-(ttt用户组内成员对txt1.txt具有读写的权限)r--(其他用户对txt1.txt具有读的权限)
-rw-rw-r-- 1 ttt ttt    0 Aug 24 20:14 txt1.txt
-rw-rw-r-- 1 ttt ttt    0 Aug 24 20:14 txt2.txt
-rw-rw-r-- 1 ttt ttt    0 Aug 24 20:14 txt3.txt

5.文件权限操作实践

image-bmpn.png

由上述示例可知,当前存在三个用户jxd,test以及jxd,每个用户目录,均只对自己开放读写执行的权限,对自己组内的成员开放读和执行的权限,对其他用户不开放任何权限。

当前终端的用户是test,当其加入ttt用户组时,即可正常访问ttt用户目录。

6. 改变文件属性和权限

6.1 文件群组属性更改

image-czoo.png

上图中,我们将./doc文件夹隶属的群组由ttt用户组变更为temp用户组(-R标志表示递归变更./doc文件夹下的子文件以及子文件夹)。

6.2 文件所有者属性变更

image-tvra.png

上图中,我们通过chown将文件的所有者属性更改(需要注意,可以连同修改文件的的群组属性)。

6.3 文件权限修改

Linux文件的基本权限有九个,分别时owner/group/others三种身份对应read/write/execute权限,我们可以使用数字来代表权限。

  • read: 4;

  • write: 2;

  • execute: 1.

当权限为[-rwxrwx---] ,表示:

  • owner: rwx=4+2+1=7;

  • group: rwx=4+2+1=7;

  • others: ---=0+0+0=0

6.3.1 数字类型权限修改

image-kyhn.png

上图中ttt用户使用chmod修改了txt2.txt文件的权限(777慎用)。

6.3.2 符号类型权限修改

image-kiki.png

上图中,基于符号修改文件权限,其中u表示文件所有者,g表示文件所属群组,o表示others;通过+、-符号可以分别添加或删除r,w,x属性。

个人推荐基于符号修改文件权限,意义更加明确。


Comment