Linux中万物皆可文件,但是文件的管理,用户的管理,文件的权限,用户的权限如果没有搞清楚的话,那么就不是一名合格的程序员了。

群组管理和文件权限

用户管理

默认状态下只有root,普通用户都在/home目录下,可以创建普通用户,然后就可以登录普通用户账号。

普通用户切回root用户方式

sudo

暂时成为 root

sudo su

一直成为 root

sudo su -/sudo -i

切换为 root,并且直接定位到 root 的目录

adduser

添加新用户,需要root权限

adduser -d -m产生一个主目录/home/newuser,并选择为登录用户

adduser -s /bin/bash 指定用户所使用的shell

1sudo useradd -d /home/newuser -m -s /bin/bash newuser

useradd –help

符号标识 说明 解释
-b base directory for the home directory of the new account 设置基本路径作为用户的登录目录
-c GECOS field of the new account 对用户的注释
-d home directory of the new account 设置用户的登录目录
-D print or change default useradd configuration 改变设置
-e expiration date of the new account 设置用户的有效期
-f password inactivity period of the new account 用户过期后,让密码无效
-g name or ID of the primary group of the new account 使用户只属于某个组
-G list of supplementary groups of the new account 使用户加入某个组
-h display this help message and exit 帮助
-k use this alternative skeleton directory 指定其他的skel目录
-K override /etc/login.defs defaults 覆盖 /etc/login.defs 配置文件
-m create the user’s home directory 自动创建登录目录
-M do not create the user’s home directory 不自动创建登录目录
-l do not add the user to the lastlog and faillog databases 不把用户加入到lastlog文件中
-r create a system account 建立系统账号
-o allow to create users with duplicate (non-unique) UID 允许用户拥有相同的UID
-p encrypted password of the new account 为新用户使用加密密码
-s login shell of the new account 指定登录时候的shell
-u user ID of the new account 为新用户指定一个UID
-Z use a specific SEUSER for the SELinux user mapping 为 SELinux 用户映射使用特定的 SEUSER

passwd

1sudo passwd newuser

修改密码,会输入两次密码,需要管理员权限

赋予root权限

修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,可以使得yangyang账号可以sudo的时候获取root权限

1## Allow root to run any commands anywhere
2root       ALL=(ALL)     ALL
3yangyang   ALL=(ALL)     ALL

查看/etc/passwd的登录权限,属于1001的用户和同名的群组

具体解释:

1#登录的用户名:密码:用户id:群组id::主目录:指定用户所使用的shell
2newuser:x:1001:1001::/home/newuser:bin/bash

su username

1su newuser

切换用户

userdel

1userdel newuser

删除用户,需要root权限

sudo deluser –remove-home newuser

删除用户并且删除用户所在的目录

到这一步,仅仅删除了目录,newuser用户依然存在

这里继续查看14090进程,可以发现是shell没结束,需要手动删除/etc/passwd和/etc/sudoers里面关于newuser信息。最后还需要删除newuser群组,才算真正删除用户。

群组管理

addgroup

创建群组,需要root权限

usermod

修改用户账户,需要root权限

  • -l:对用户重命名,但是 /home 目录中的用户家目录名不会改变,需要手动修改;
  • -g:修改用户所在群组。此用户的家目录里的所有文件的所在群组会相应改变。
  • -G:修改用户添加到多个群组中。

-g 或 -G 参数时,它会把用户从原先的群组里剔除,加入到新的群组。如果需要不想离开原先的群组,又想加入新的群组,可以增加-a参数

1usermod -aG good thomas
1sudo usermod -g happy newuser
1sudo usermod -aG linux,android newuser

gpasswd

群组中添加/删除用户,需要root权限

gpasswd -a user groups

将用户user加入到groups组

gpasswd -d user groups

将用户test从test2组中移出

groups

查询一个用户在哪些群组中,这里用户可以被添加到多个群组中

delgroup

删除群组,需要root权限,如果删除的是用户第一个添加的群组是无法删除,必须先移除用户

1delgroup happy

chown

改变文件的所有者,需要root权限

chown newuser file.txt

将文件的所有者移交给newuser

chown newuser:newgroup file.txt

同时修改文件所有者和群组。将文件的所有者移交给newuser,将文件所有者归到newgroup中

chgrp

改变文件的群组,需要root权限

chgrp newgroup file.txt

访问权限

ls -l

1# 文件/文件夹访问权限
2newuser@iZbp1788g5aoi5p9z8e0ugZ:~$ ls -al file.txt
3-rw-r--r-- 1 newuser newuser 0 Mar 13 20:27 file.txt

具体含义说明:

  • d:英语 directory 的缩写,表示“目录”。就是说这是一个目录

  • l:英语 link 的缩写,表示“链接”。就是说这是一个链接

  • r:英语 read 的缩写,表示“读”。就是说可以读这个文件

  • w:英语 write 的缩写,表示“写”。就是说可以写这个文件,也就是可以修改

  • x:英语 execute 的缩写,表示“执行,运行”。就是说可以运行这个文件

  • 第一组 rwx 表示文件的所有者对于此文件的访问权限

  • 第二组 rwx 表示文件所属群组的其他用户对于此文件的访问权限

  • 第三组 rwx 表示除前两组之外的其他用户对于此文件的访问权限

chmod

权限说明表

权限 数字
r 4
w 2
x 1

权限所有计算表

权限 数字 计算
rwx 7 4+2+1
rw- 6 4+2+0
r-x 5 4+0+1
r– 4 4+0+0
-wx 3 0+2+1
-w- 2 0+2+0
–x 1 0+0+1
0 0+0+0

字母分配权限

字母符号含义

  • u:user 的缩写,是英语“用户”的意思。表示所有者

  • g:group 的缩写,是英语“群组”的意思。表示群组用户

  • o:other 的缩写,是英语“其他”的意思。表示其他用户

  • a:all 的缩写,是英语“所有”的意思。表示所有用户

  • +:加号,表示添加权限

  • -:减号,表示去除权限

  • =:等号,表示分配权限

 1#文件 file.txt 的所有者增加读和运行的权限。
 2chmod u+rx file.txt
 3
 4#文件 file.txt 的群组其他用户增加读的权限。
 5chmod g+r file.txt 
 6
 7#文件 file.txt 的其他用户移除读的权限。
 8chmod o-r file.txt 
 9
10#文件 file.txt 的群组其他用户增加读的权限,其他用户移除读的权限。
11chmod g+r,o-r file.txt 
12
13#文件 file.txt 的群组其他用户和其他用户均移除读的权限。
14chmod go-r file.txt 
15
16#文件 file.txt 的所有用户增加运行的权限。
17chmod +x file.txt 
18
19#文件 file.txt 的所有者分配读,写和执行的权限;
20#群组其他用户分配读的权限,不能写或执行;
21#其他用户没有任何权限。
22chmod u=rwx,g=r,o=- file.txt

猜你喜欢

linux1 基础学习

linux3 Vim和shell脚本

linux4 NDK交叉编译

参考

[1] 伏特加的滋味, linux下创建用户和添加用户权限,2017.

[2]panqidong95, Linux添加用户及用户权限管理,2019.

[3]panqidong95, linux adduser,2016.