陈 斌
(铁岭师范高等专科学校 理学院,辽宁 铁岭 112000)
随着国家教育信息化进程的不断推进和开源软件在IT领域的不断应用,Linux 以不同的形式应用在不同行业和领域里,它正在成为信息社会的基础设施[1],这使其成为构建信息社会的重要技术.计算机系统文件资源共享是信息交流与沟通的必要手段,本文中主要探讨Linux系统如何实现多用户、多任务环境下文件资源共享.
Linux是一个多用户、多任务的网络操作系统,是网络资源的提供者,也是管理者.无论是硬件系统资源,还是软件系统资源,在Linux系统中都被统一成文件资源,由目录来组织存储.
Linux系统资源通过节点[2]、文件种类和权限、硬链接个数、属主、所归属的组、文件或目录的大小、最后访问或修改时间、文件名或目录名属性来描述.用户与资源通过属主(拥有资源的用户名)指明归属,属主、用户组、其他用户(属主与用户组成员之外的用户)对资源的访问程度通过权限来标明.Linux系统资源访问方法通过服务(本机或远程登录服务、网络服务)的方式提供;服务的安全性通过用户与组的属性设置、文件与目录属性设置、防火墙设置、SeLinux的安全配置实现.
用户是计算机系统资源的使用者,用户组是具有共同资源使用需求的用户的集合.通过用户组帐号简化了对资源使用权限的分配管理,将资源使用权限分配给用户组,即分配给组中每一个成员.资源使用方式,通过本机(本地)登录、远程(非本机)登录到Linux系统中,以命令行、X系统(图形界面)两种方式使用.在实际Linux系统的运维与管理中使用最多的是“远程字符界面”形式登录操作.以管理员root身份登录,可以进行系统的运维管理,它是系统中权限级别最高的用户,可以在Linux系统中进行任何维护操作.而普通用户则没有这样的权限级别,只能拥有有限的访问操作权力,主要是对自己的私有空间(家目录)有完全控制的权限.
使用计算机资源的人必须在计算机系统中被标识.Linux使用一个32bit的无符号整数作为其标识,即UID(用户标识).用户除了有UID属性外,还有用户名(登录名)、用户口令(密码)、所属组标识GID、用户名全称、家目录、用户所用SHELL类型,共7个属性.还有用于描述用户口令状态的7个属性,分别是:加密后的密码,最近一次密码修改日期,密码不可被变更的天数,密码需要重新变更的天数,密码过期预警天数,密码过期的宽恕天数和帐号失效日期.
构建用户在计算机系统中的标识是多用户与多任务管理的需求,Linux系统通过UID与GID区分不同用户、用户组所运行的程序(进程或任务)资源与文档资源,以此进行管理.Linux中的用户分为:普通用户UID≥500,管理员UID=0,系统用户UID=1~499;用户组分为:主要组,附加组.一个用户属于1个主组,属于1个或多个附加组.不能通过主组分配共享资源.Linux中的文件与目录资源都有所属的所有者、所属的组、其他用户标识(名)三种用户及其使用权限:r读、w写、x执行权限的组合.
使用者配置文件(passwd、shadow,group、gshadow,login.defs、useradd).Linux系统创建用户和用户登录,都要读取用户配置文件/etc/passwd与/etc/shadow,以及用户组配置文件/etc/group与/etc/gshadow中的属性信息,以此信息维护验证用户可用状态.此外,创建用户还要读取/etc/logon.defs和/etc/default/useradd两个配置文件中的默认参数.
用户与组管理的本质.根据配置文件中默认的用户属性值创建用户,将默认值写入配置文件,修改用户属性则将修改后的属性值覆盖配置文件中的原值.Linux通过维护上述配置文件记录用户的状态,维护系统中用户的可用性.例如,普通用户无法登录的原因一般是口令过期失效或帐户失效,可通过修改口令最长有效期、最后一次密码修改日期或帐户失效日期的属性值解决.
用户与组管理工具.Linux提供了完善的用户维护命令行指令,包括用户创建(useradd),用户编辑(usermod、userdel),口令编辑(passwd),口令有效期维护(chage),用户有效期维护命令(chage).
首先,确定应用资源的需求情况,明确访问资源的人对资源的访问要求,设计确定资源的组织目录结构,为资源标明访问者与权限,根据资源访问者设计用户账号,根据共同访问需求设计组账号;其次,根据资源目录结构创建目录;再次,创建拥有共同访问资源的组账号,创建用户并添加进用户组;最后,为资源目录分配所有者与组并分配访问权限,配置访问服务并开启服务.
Samba[3]是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务.SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源.通过设置“NetBIOS over TCP/IP”,使得Samba不但能与局域网主机分享资源,还能与全世界的电脑分享资源.
4.2.1 共享文件项目
现有一家公司要在内部网络上与员工共享公司一些文档资源,software(软件)、sharedoc(公司制度等只读文档)、pubsavedoc(公司员工公共存储区),employee(员工账户目录)、sadm(管理员帐号家目录).共享资源目录结构如下:
/opt/samba,
/opt/samba/sadm,
/opt/samba/sadm/sadm01(注:管理员sadm01家目录),
/opt/samba/sadm/sadm02(注:管理员sadm02家目录),
/opt/samba/software,
/opt/samba/sharedoc,
/opt/samba/pubsavedoc,
/opt/samba/employee,
/opt/samba/employee/emp01(注:员工emp01家目录),
/opt/samba/employee/emp02(注:员工emp02家目录).
4.2.2 本项目需求
sadm是公司文档资源的最高管理者.sadm01、sadm02是文档资源管理员,拥有对software、sharedoc、pubsavedoc中文档查看、阅读和修改权限,以及删除文档权限(pubsavedoc除外,只有建立者能删除).emp01、emp02是公司普通员工,对software、sharedoc、pubsavedoc中文档有查看和阅读权限,对pubsavedoc还有建立文档权限.
资源目录和所属用户与组及权限./opt/samba,所有者sadm权限rwx,员工组semp权限r-x,其他人访问权限无./opt/samba/sadm,所有者sadm权限rwx,管理员组sman权限r-x,其他人访问权限无./opt/samba/sadm/sadm01,所有者sadm01家目录权限rwx,私有组sadm01无访问权限,其他人无访问权限./opt/samba/sadm/sadm02,所有者sadm02家目录权限rwx,私有组sadm02无访问权限,其他人无访问权限./opt/samba/software,所有者sadm权限rwx,管理员组sman权限rwx,其他人权限r-x./opt/samba/sharedoc,所有者sadm权限rwx,管理员组sman权限rwx,其他人权限r-x./opt/samba/pubsavedoc,所有者sadm权限rwx,员工组sman权限rwx,其他人权限rwx./opt/samba/employee,所有者sadm权限rwx,员工组semp权限r-x,其他人权限无./opt/samba/employee/emp01,所有者emp01家目录权限rwx,私有组emp01无访问权限,其他人权限无./opt/samba/employee/emp02,所有者emp02家目录权限rwx,私有组emp02无访问权限,其他人权限无.
用户账号sadm为管理员组sman与员工组semp成员;用户账号sadm01、sadm02为管理员组sman与员工组semp成员;用户账号emp01、emp02为员工组semp成员.
4.2.3 共享设计与实现
用户后台管理.passdb backend = tdbsam | passdb | backend即用户后台.
有三种后台:smbpasswd、tdbsam和ldapsam.sam即security account manager.
smbpasswd:该方式是使用smb工具smbpasswd给系统用户(真实用户或者虚拟用户)设置一个Samba 密码,客户端用此密码访问Samba资源,本案例选此方式.
tdbsam:使用数据库文件创建用户数据库.数据库文件叫passdb.tdb,在/etc/samba中.passdb.tdb用户数据库可使用smbpasswd-a创建Samba用户,要创建的Samba用户必须先是系统用户.也可使用pdbedit创建Samba账户.pdbedit参数很多,列出几个主要的:pdbedit-a username:新建Samba账户.pdbedit-x username:删除Samba账户.pdbedit-L:列出Samba用户列表,读取passdb.tdb数据库文件.pdbedit-Lv:列出Samba用户列表详细信息.pdbedit-c “[D]” -u username:暂停该Samba用户帐号.pdbedit-c “[]” -u username:恢复该Samba用户帐号.使用此项设置后,自己建立smbpasswd和smbuser文件,然后用smbpasswd创建系统已有用户.
ldapsam:基于LDAP账户管理方式验证用户.首先要建立LDAP服务,设置“passdb backend = ldapsam:ldap://LDAP Server”
step1 安装samba服务软件.
yum install samba
step2 创建共享资源目录结构.
mkdir -p /opt/samba
mkdir -p /opt/samba/{sadm,software,sharedoc,pubsavedoc,employee}
step3 创建用户组.
cd/opt/samba;groupadd sadm; groupadd sman; groupadd semp
step4 创建用户分配用户组成员.
useradd -g sadm -G sman,semp -d /opt/samba -s /bin/false sadm
useradd -g sman -G sman,semp -d /opt/samba -s /bin/false sadm01
useradd -g sman -G sman,semp -d /opt/samba -s /bin/false sadm02
useradd -g emp01 -G semp -d /opt/samba -s /bin/false emp01
useradd -g emp01 -G semp -d /opt/samba -s /bin/false emp02
step5 分配目录资源的所有者及所属用户组.
chown -R sadm.sadm /opt/samba
ls-ld /opt/samba
chown -R sadm.sman pubsavedoc sadm sharedoc software
chown -R sadm.semp employee
chmod 770 employee sadm
chmod 1777 pubsavedoc
chmod 775 software sharedoc
step6 创建Windows共享用户访问口令.
smbpasswd sadm;smbpasswd -a sadm;smbpasswd -a sadm01;smbpasswd -a sadm02
smbpasswd -a emp01;smbpasswd -a emp02
step7 编辑/etc/samba/smb.conf 配置文件中的共享设置.
cd /etc; cd samba; mv smb.conf smb.conf.bak; vi smb.conf
step8 测序配置文件是否正确.
testparm
step9 开启samba共享服务.
systemctl start smb; systemctl status smb; nmcli connection up ens33;
step10共享目录配置参数.
[root@localhost samba]# cat /etc/samba/smb.conf
[global]
workgroup = centos
netbios name =CentOS_Server
Server string =This is CentOS7's samba Server
unix charset =utf8
security = user
passdb backend =smbpasswd
[samba]
comment = SambaShare Server
path = /opt/samba
valid users =@sman,@semp
create mask = 0644
directory mask =0755
write list =sadm,sadm01,sadm02,emp01,emp02
step11查看共享资源的权限分配.
[root@localhost opt]# ls -ld /opt/samba
drwxrwxr-x. 7 sadm sman 84 Aug 20 06:28 /opt/samba
[root@localhost samba]# ls -l /opt/samba
total 0
drwxr-x---. 4 sadm semp 32 Aug 20 16:38 employee
drwxrwxrwt. 5 sadm sman 150 Aug 21 08:56 pubsavedoc
drwx------. 3 sadm sadm 20 Aug 21 08:43 sadm
drwxrwxr-x. 2 sadm sman 70 Aug 22 06:09 sharedoc
drwxrwxr-x. 2 sadm sman 6 Aug 20 06:28 software
step12 共享资源的访问.
Windows 10 系统访问.清除局域网登录缓存:我的电脑→管理→服务→Workstion右击“重新启动”.“samba服务主机ip”.
Linux系统中访问.“smbclient -L Sambaserver”.
MacOS系统中访问.打开safari输入“smb://ip”,回车后出现“输入用户名密码”对话框,若是匿名则选择作为“客人”选项或打开Finder(或在桌面),CMD+ k,可以得到以下页面:
“smb://服务器地址或域名,输入samba用户和密码”.
Linux系统资源(文件)的管理,是通过创建资源的所有者用户与用户组,使用目录组织文件资源的存储、给文件分配用户与用户组及使用权限来进行多用户、多任务环境下文件资源的管理与分配,并通过开启服务的方式实现文件资源的共享,系统通过维护用户配置文件与服务配置文件来管理用户与服务,从而实现资源共享的运维.