0%

多用户管理

文件共享管理

本篇章介绍如何让哪些文件被共享,而哪些文件不被共享。

文件共享管理

默认的共享的目录一般都是家目录,但是如果加了一块硬盘,需要共享硬盘内的文件,可以这样做

  1. 使用sudo fdisk -l命令查看有哪些存储器。例如/dev/nvme0n1是nvme固态硬盘,/dev/nvme0n1p1是这个固态硬盘的第一个分区,/dev/nvme0n1p2是第二个分区,/dev/sda是sata硬盘或者u盘,/dev/sda1是硬盘的第一个分区,/dev/sda2是第二个分区,/dev/sdb是第二个硬盘
  2. 使用cd命令进入到家目录
  3. 使用pwd命令获取当前目录的绝对路径
  4. 使用mkdir storage命令创建一个名为storage的文件夹
  5. 使用ls命令列出当前目录下的文件和文件夹,查看storage目录有没有被创建
  6. 使用sudo mount /dev/sda1 storage将机械硬盘的第一个分区/dev/sda1挂载到storage
  7. 使用sudo chown -R user:user storage将storage目录和目录的所有文件的所有者更改为user,user是用户名,不执行这一步可能用户没有storage的写入权限
  8. 使用cd storage进入storage目录
  9. 使用ls列出storage下的所有文件,即机械硬盘第一分区下的所有文件,由此我们已经可以在sftp、ftp、smb三种共享中访问到storage下的文件了
  10. 使用sudo vim /etc/rc.local编辑开机启动脚本,需要已经在上一篇中02ipv6远程访问完成开机启动脚本相关设置,添加一行mount /dev/sda1 /home/user/storage其中/dev/user是家目录的绝对路径。

多用户管理

如果这个服务器想要让家人朋友也能用,但是又要限制对方能够访问的文件可以这样做。

  1. 使用sudo su命令切换到root用户,sudo命令的意思是以root用户执行后面的命令,su命令的意思是切换用户,默认为root用户。root用户拥有linux系统的最高权限,root用户也是很危险的,操作不当容易对系统造成损坏。
  2. 使用useradd user1 -s /bin/bash命令创建一个名为user1的用户
  3. 使用mkdir /home/user1命令为user1创建家目录
  4. 使用chown user1:user1 /home/user1命令将/home/user1目录的所有者和群组改为user1,因为mkdir命令是以root用户运行的,所以创建的文件夹默认所有者为root,user1是无法访问root创建的文件夹的。
  5. 使用cd /home命令进入/home目录
  6. 使用ls -l命令查看当前目录下的文件和文件,并列出详细信息
  7. 使用passwd user1为user1设置用户密码,有了用户密码,ftp和sftp就可以user1用户登录了
  8. 使用smbpasswd -a user1命令为user1设置smb密码
  9. 使用su user1可以切换到user1用户,以user1用户的身份运行命令,user1默认是无法使用sudo命令的,如果能用sudo命令则就相当于能切换到root,就有了计算机的最高权限。
  10. 使用exit命令可以退出当前用户,退回到上一个用户。
  11. 如果需要为user1挂载硬盘,参考上一节。

权限管理

如果一些文件需要多个用户共同访问,则需要设置文件的权限。
使用ls -l命令列出当前目录下的文件和文件夹,可能会出现以下信息

drwxr-xr-x  2 user user     4096 6月  30 11:24 Desktop
-rwx------  1 user user      212 5月  31 07:41 ip.sh

第一位d表示文件夹,-表示文件,然后是r表示读取、w表示写入、x表示执行,rwx有三组,分别表示用户、用户组、其他用户的读、写、执行权限,如果在相应位置的rwx变成了-则表示没有这个权限。例如drwxr-xr-x表示这是一个文件夹,用户有读、写、执行权限,用户组有读、执行权限,其他用户有读取、执行权限。
随后的user user分别表示用户和用户组,即用户为user,用户组为user。
4094和212表示文件占用的大小,单位是字节,注意4094只表示文件夹本身的大小,不包含文件夹内文件的大小。
随后是文件(夹)创建的时间,最后是文件(夹)的名字。

  1. 使用sudo chown user1:user1 Desktop将Desktop文件夹的所有者和群组改为user1和user1,若带有-R选项则表示递归执行,操作将对Desktop下的所有文件和文件夹生效
  2. 使用sudo chmod 0755 ip.sh将ip.sh的权限设置为用户有读、写、执行权限,用户组有读、执行权限,其他用户有读取、执行权限。读为4,写为2,执行为1,所以所有者有读、写、执行权限为4+2+1=7,用户组和其他用户为4+1=5。ip.sh文件原本的所有者是user,当user执行chmod时可以不加sudo。除了root和所有者外其他用户无法更改文件(夹)的权限,除非有sudo,以root身份运行。
  3. 如果需要将以文件夹设置为user可读写,user1只读,可以用户为user,文件权限为0755。
  4. 如果一个文件夹需要让所有用户可读写,设置权限为0777设置共享会有一些问题,例如文件夹所有者为user,然后user1在文件夹内创建了一个文件,那么这个文件的所有者就是user1,且默认权限为0755,user就没有这个文件的写入权限。可以采用格式化硬盘的方式,采用ntfs、exfat、fat32格式。这些格式不含有linux权限信息,对所有用户都是可读写的。

格式化硬盘

  1. 使用fdisk对硬盘分区,运行sudo fdisk /dev/sda命令选中/dev/sda,此时按下d可以删除分区,按下n可以新建分区,按下w可以保存并退出,按下q可以退出并不保存,这边创建两个分区。
  2. 使用sudo mkfs.ext4 /dev/sda1可以将/dev/sda1格式化为ext4分区,ext4分区包含linux权限信息。
  3. 使用sudo mkfs.exfat /dev/sda2可以将/dev/sda1格式化为exfat分区,exfat分区不包含linux权限信息。

多用户共享文件

多用户分配不同的文件共享权限,参考以下命令,需要以root用户执行。

#ext4分区1由user完全控制
mkdir /home/user/partition_1 
mount /dev/sda1 /home/user/partition_1
chown -R user:user /home/user/partition_1
#在分区1中创建一个user1只读的文件夹
mkdir  /home/user/partition_1/read_user1 
chown user:user /home/user/partition_1/read_user1
chmod 0755 /home/user/partition_1/read_user1
mkdir /home/user1/read_only
mount --bind /home/user/partition_1/read_user1 /home/user1/read_only
#exfat分区2由user完全控制
mkdir /home/user/partition_2 
mount /dev/sda2 /home/user/partition_2
#分区2中创建一个user1可读写的文件夹
mkdir  /home/user/partition_2/public 
mkdir /home/user1/public
mount --bind /home/user/partition_2/public /home/user1/public

如果要开机自启,则运行一遍上面的命令后,将mount有关的命令放到/etc/rc.local
运行sudo vim /etc/rc.local,添加以下内容

mount /dev/sda1 /home/user/partition_1
mount --bind /home/user/partition_1/read_user1 /home/user1/read_only
mount /dev/sda2 /home/user/partition_2
mount --bind /home/user/partition_2/public /home/user1/public
-------------本文结束再接再厉-------------