




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux操作系统项目式教程
用户组群管理目录CONTENTS项目1初识Linux操作系统项目2Linux操作系统基础项目3用户组群和权限管理项目项目4配置和管理磁盘项目5安装软件项目6编写Shell脚本统项目7配置和管理网络系统项目8配置和管理Linux服务任务一用户组群管理3.1.1管理用户3.1.2管理组群3.1.1管理用户Linux系统是多用户多任务的分时操作系统,要能做到不同的用户能同时访问不同的文件,允许不同的用户从本地登录或远程登录,这时用户必须拥有一个合法的账号,Linux系统正是通过账号来实现对用户的访问进行控制的,因此,需要对用户与组进行有效的管理。用户的账号一方面能帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也能帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个唯一的用户名和用户口令。用户在登录时键入正确的用户名和口令后,才能进入系统和自己的主目录。1.新建用户3.1.1管理用户Linux下的用户可以分为三类:超级用户、系统用户和普通用户。超级用户的用户名为root,它具有一切权限,只有进行系统维护(例如建立用户等)或其他必要情形下才用超级用户登录,以避免系统出现安全问题。系统用户是Linux系统正常工作所必需的内建的用户,主要是为了满足相应的系统进程对文件属主的要求而建立的,系统用户不能用来登录,如bin、daemon、adm、lp等用户。用户账号的管理,要完成的工作主要有如下几个方面:添加、修改和删除。添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录shell等资源。1.添加新的用户账号使用useradd命令useradd选项用户名其中各选项含义如下:
-c: 用户的注释性信息,如:全名、办公电话等。
-d:设置用户的主目录,默认值“/home/用户名”。
-u: 指定用户号,它必须是唯一的。
-g: 用户所属主组群。
-G:用户所属的附属组群列表。
-m:自动建立用户的主目录。
-M:不要自动建立用户的主目录。
-p:加密的口令。
-r: 建立系统账号。
-s:指定用户的登录所使用的shell,默认为/bin/bash。举个例子【示例1】创建一个新用户账号,用户名称为“ubuntu”。[root@localhost~]#useraddubuntu创建一个用户很简单,只需要通过useradd命令加上用户名称即可。【示例2】使用id方式查看用户ubuntu的信息。[root@localhost~]#idubuntuuid=1001(ubuntu)gid=1001(ubuntu)组=1001(ubuntu)使用id加上用户名称,即可显示用户的id为1001,所属组是ubuntu,组号是1001。当新建用户的时候,没有添加组,系统会默然创建与用户名同名的组,并把这个用户加入到这个组里。【示例3】查看用户账户信息文件。[root@localhost~]#cat/etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin举个例子adm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologinftp:x:14:50:FTPUser:/var/ftp:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologinsystemd-network:x:192:192:systemdNetworkManagement:/:/sbin/nologindbus:x:81:81:Systemmessagebus:/:/sbin/nologinpolkitd:x:999:998:Userforpolkitd:/:/sbin/nologinlinux:x:1000:1000::/home/linux:/bin/bashubuntu:x:1001:1001::/home/ubuntu:/bin/bash系统用户信息保存在/etc/passwd文件中,在最后一行可以看到刚刚新建的用户。名为ubuntu,x是占位符,前一个1001是用户id,后一个1001是组id,在组id后面的“::”之间可以给用户添加一个描述信息。/home/ubuntu就是用户所在的家目录,/bin/bash是用户登录系统时使用的shell。举个例子【示例4】添加用户redhat,描述信息为“acquiredbyIBM”,UID指定为1111,主组群为linux,附加组群是root,其shell类型为/bin/bash,设置其家目录为/home/redhat。[root@localhost~]#useradd-c"acquiredbyIBM"-u1111-glinux-Groot-s/bin/bash-md/home/redhatredhat[root@localhost~]#idredhatuid=1111(redhat)gid=1000(linux)组=1000(linux),0(root)[root@localhost~]#tail-1/etc/passwdredhat:x:1111:1000:acquiredbyIBM:/home/redhat:/bin/bash-c"acquiredbyIBM"是为用户添加描述信息,-u1111是为用户设置id,-g是将用户redhat的主组群设置为linux,-G设置用户的附加组群为root,-s设置用户shell为/bin/bash,-md一般组合来用,为用户设置家目录为/home/redhat。2.设置用户密码使用useradd命令新创建的用户是不能立即登陆Linux系统的,只有为用户设置登录密码后,才能登陆Linux系统。为用户设置登录密码,需要使用passwd命令,语法如下。passwd用户名使用passwd命令为用户设置登录密码,需要通过交互方式才能进行设置,设置的密码存放在/etc/shadow文件中。举个例子【示例5】采用交互方式为用户redhat设置密码,密码为123456。[root@localhost~]#passwdredhat更改用户redhat的密码。新的密码:无效的密码:密码少于8个字符重新输入新的密码:passwd:所有的身份验证令牌已经成功更新。[root@localhost~]#tail-5/etc/shadowpostfix:!!:18824::::::tcpdump:!!:18824::::::linux:$6$r3wzGC/N$r5ZH7OISQ5dR6JBO9516iWF.OGg4xpNe1F4MMpSrB9Q4EN1iH3pJZiooGoQY1Ypo3tddk/F.ohiqW83dTWPqB1:19323:0:99999:7:::ubuntu:!!:19398:0:99999:7:::redhat:$6$5ML5kAAU$iZ/r7.CM0WGi2gIKMjz/tWQIpu.gwsc6GoS93bQ3x/pKUq/swDdZQMmaDaHkhi6R6a05/UVMlRRZUmyFaIVcr1:19398:0:99999:7:::系统提示需要8个字符,但是当前用户为root(拥有读取shadow文件的权限),不受限制,通过tail-5/etc/shadow查看后5个用户密码,可以看到最后一个是redhat用户的密码,进行了加密设置。举个例子【示例6】采用非交互方式为用户ubuntu设置密码,密码为123456。[root@localhost~]#echo123456|passwd--stdinubuntu更改用户ubuntu的密码。passwd:所有的身份验证令牌已经成功更新。使用—stdin将管道符左边的输出作为passwdubuntu的输入,成功为用户ubuntu设置密码123456。3.使用新建用户登录系统【示例7】使用用户名ubuntu、密码123456远程登录系统。启动Xshell,输入用户名为ubuntu,密码123456进行用户身份验证,即可登录服务器,可以看到登录后的提示符为[ubuntu@localhost~]。如图3-1所示。4.切换用户身份su命令的全称就是switchuser,顾名思义,其意思就是切换用户身份,使得用户可以在shell中以其他身份运行程序。除非该用户自己是超级用户,那么切换用户身份时均需要密码。su命令语法如下。su选项用户名常用选项如下。
-:当前用户不仅切换为指定用户的身份,同时所用的工作环境也切换为此用户的环境(包括PATH变量、MAIL变量等),使用-选项可省略用户名,默认会切换为root用户。
-l:同-的使用类似,也就是在切换用户身份的同时,完整切换工作环境,但后面需要添加欲切换的使用者账号。
-p:表示切换为指定用户的身份,但不改变当前的工作环境(不使用切换用户的配置文件)。
-c命令:仅切换用户执行一次命令,执行后自动切换回来,该选项后通常会带有要执行的命令。举个例子【示例8】在root用户下,使用su-ubuntu和suubuntu两种方式切换到ubuntu用户,查看两种方式的区别。[root@localhost~]#su-ubuntu上一次登录:五2月1015:52:06CST2023从pts/1上[ubuntu@localhost~]$echo$PATH/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ubuntu/.local/bin:/home/ubuntu/bin[ubuntu@localhost~]$exit登出[root@localhost~]#suubuntu[ubuntu@localhostroot]$echo$PATH/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin用root用户登录终端,可以使用suubuntu或者su-ubuntu方法切换到ubuntu用户,使用exit退出登录,返回到root用户,su-ubuntu与suubuntu的区别是:su-ubuntu会加载ubuntu用户的环境变量,不使用-,就不改变环境变量,还是之前root的环境变量。5.删除用户删除用户的命令非常简单,使用userdel用户名即可删除用户,如果用户存在家目录,删除用户同时删除家目录使用-r选项。【示例9】删除ubuntu用户,同时删除ubuntu用户的家目录。
[root@localhost~]#userdel-rubuntu[root@localhost~]#idubuntuid:ubuntu:nosuchuser6.修改用户信息建立用户以后,如果想修改用户信息,可以使用usermod命令,其命令格式如下:usermod选项用户名usermod命令的选项如下。
-c<备注>:修改用户帐号的备注文字。
-d<登入目录>:修改用户登入时的目录。
-e<有效期限>:修改帐号的有效期限。
-g<群组>:修改用户所属的群组。
-G<群组>:修改用户所属的附加群组。
-l<帐号名称>:修改用户帐号名称。
-L:锁定用户密码,使密码无效。
-s<shell>:修改用户登入后所使用的shell。
-u<uid>:修改用户ID。举个例子【示例10】为账户linux添加说明Thisisageneraluser。[root@localhost~]#usermod-c"Thisisageneraluser"linux[root@localhost~]#tail-2/etc/passwdlinux:x:1000:1000:Thisisageneraluser:/home/linux:/bin/bashredhat:x:1001:0:acquiredbyIBM:/home/redhat:/bin/bash可以看到,在linux用户这一行,加上了“Thisisageneraluser”说明。【示例11】让账户linux的密码在2023年9月30日失效。[root@localhost~]#usermod-e"2023-9-30"linux[root@localhost~]#greplinux/etc/shadowlinux:$6$r3wzGC/N$r5ZH7OISQ5dR6JBO9516iWF.OGg4xpNe1F4MMpSrB9Q4EN1iH3pJZiooGoQY1Ypo3tddk/F.ohiqW83dTWPqB1:19323:0:99999:7::19630:19630按照1970年1月1日开始计算正好为2023年9月30日。举个例子【示例12】将redhat用户的id修改为1001,主组群修改为root,附加组群修改为linux。[root@localhost~]#idredhatuid=1111(redhat)gid=1000(linux)组=1000(linux),0(root)[root@localhost~]#usermod-u1001-groot-Glinuxredhat[root@localhost~]#idredhatuid=1001(redhat)gid=0(root)组=0(root),1000(linux)-u1001表示将用户的id修改为1001,-groot表示将用户主组群修改为root,-Glinux表示将用户附加组群修改为linux。【示例13】将redhat用户的名称修改为centos。[root@localhost~]#idredhatuid=1001(redhat)gid=0(root)组=0(root),1000(linux)[root@localhost~]#usermod-lcentosredhat[root@localhost~]#idcentosuid=1001(centos)gid=0(root)组=0(root),1000(linux)uid=1001后面的括号里,用户名称已经由redhat修改为centos。3.1.2管理组群1.创建组群groupadd命令是用来在Linux系统中创建用户组,这样只要为不同的用户组赋予不同的权限,再将不同的用户加入不同的组中,用户就能够获得所在组群拥有的权限,这种方法在Linux系统中有许多用户时非常方便,其命令格式如下。groupadd选项组群名groupadd命令各选项及功能如下。
-f:如果组已经存在则成功退出
-g:为新组使用GID -h:显示此帮助信息并推出
-k:不使用/etc/login.defs中的默认值
-o:允许创建有重复GID的组
-p:为新组使用此加密过的密码
-r:创建一个系统账户举个例子【示例14】使用groupadd命令创建用户组group1,指定GID为1200。[root@localhost~]#groupadd-g1200group1[root@localhost~]#tail-5/etc/groupstapsys:x:157:stapdev:x:158:tcpdump:x:72:linux:x:1000:centosgroup1:x:1200:通过tail命令查看/etc/group文件可以查看到组文件中的最后5个组名称,发现最后一个是group1,id是1200。3.1.2管理组群2.删除组群groupdel命令是用来在Linux系统中删除组群,如果该组群中仍包括某些用户,则必须先使用userdel命令删除这些用户后,才能使用groupdel命令来删除组群,如果有任何一个组群的使用者在线上就不能移除该组群,其命令格式如下。groupdel选项组群名【实例15】使用groupdel命令删除组群user。[root@localhost~]#groupdelgroup1[root@localhost~]#tail-5/etc/groupstapusr:x:156:stapsys:x:157:stapdev:x:158:tcpdump:x:72:linux:x:1000:centos3.1.2管理组群3.更改组群名称groupmod命令是用来在Linux系统中更改组群识别码或名称,其命令格式如下。groupmod选项组群名groupmod命令各选项及功能如下。
-g:设置GID -h:显示此帮助信息并推出
-n:改名为NEW_GROUP -o:允许使用重复的GID -p:将密码更改为(加密过的)PASSWORD举个例子【实例16】新建组群group1、group2,使用groupmod命令更改组群识别码或名称,将group-1组群ID修改为2000,同时将组群名称修改为group-teacher,将group-2组群ID修改为3000,同时将组群名称修改为group-student。[root@localhost~]#groupaddgroup1[root@localhost~]#groupaddgroup2[root@localhost~]#groupmod-g2000-ngroup-teachergroup1[root@localhost~]#groupmod-g3000-ngroup-studentgroup2[root@localhost~]#tail-5/etc/groupstapdev:x:158:tcpdump:x:72:linux:x:1000:centosgroup-teacher:x:2000:group-student:x:3000:3.1.2管理组群4.管理组群用户gpasswd命令是用来在Linux系统中管理组群,可以将用户加入到组群,也可以删除组群中的用户、指定管理员、设置组群成员列表、删除密码等,其命令格式如下。gpasswd选项组群名gpasswd命令各选项及功能如下。
-a:向组GROUP中添加用户USER -d:从组GROUP中删除用户USER -h:显示此帮助信息并推出
-Q:要导入的目录
-r:删除密码
-R:向其成员限制访问组GROUP -M:设置组GROUP的成员列表
-A:设置组的管理员列表举个例子【实例17】新建用户user01、user02、user03、user04。[root@localhost~]#useradduser01[root@localhost~]#useradduser02[root@localhost~]#useradduser03[root@localhost~]#useradduser04[root@localhost~]#iduser01uid=1001(user01)gid=1001(user01)组=1001(user01)[root@localhost~]#iduser02uid=1002(user02)gid=1002(user02)组=1002(user02)[root@localhost~]#iduser03uid=1003(user03)gid=1003(user03)组=1003(user03)[root@localhost~]#iduser04uid=1004(user04)gid=1004(user04)组=1004(user04)举个例子【实例18】使用gpasswd命令管理组群。把用户user01、user02添加到group-teacher组中,把用户user03、user04添加到group-student组中。[root@localhost~]#gpasswd-auser01group-teacher正在将用户“user01”加入到“group-teacher”组中[root@localhost~]#gpasswd-auser02group-teacher正在将用户“user02”加入到“group-teacher”组中[root@localhost~]#gpasswd-auser03group-student正在将用户“user03”加入到“group-student”组中[root@localhost~]#gpasswd-auser04group-student正在将用户“user04”加入到“group-student”组中[root@localhost~]#iduser01uid=1001(user01)gid=1001(user01)组=1001(user01),2000(group-teacher)[root@localhost~]#iduser02uid=1002(user02)gid=1002(user02)组=1002(user02),2000(group-teacher)[root@localhost~]#iduser03uid=1003(user03)gid=1003(user03)组=1003(user03),3000(group-student)[root@localhost~]#iduser04uid=1004(user04)gid=1004(user04)组=1004(user04),3000(group-student)我们发现user01、user02被添加到了group-teacher组群,user03、user04被添加到了group-student组群。这里只是改变了附属组群,而没有改变用户的主组群。如果需要改变主组群还是要用usermod-g。举个例子【实例19】使用gpasswd命令管理组群。把用户user01从group-teacher组中删除,把用户user03从group-student组中删除。[root@localhost~]#gpasswd-duser01group-teacher正在将用户“user01”从“group-teacher”组中删除[root@localhost~]#gpasswd-duser03group-student正在将用户“user03”从“group-student”组中删除[root@localhost~]#iduser01uid=1001(user01)gid=1001(user01)组=1001(user01)[root@localhost~]#iduser03uid=1003(user03)gid=1003(user03)组=1003(user03)使用gpasswd-d可以将user01、user03从相应的附属组群中删除。【实例20】把用户user02添加到group-student组中。[root@localhost~]#gpasswd-auser02group-student正在将用户“user02”加入到“group-student”组中[root@localhost~]#iduser02uid=1002(user02)gid=1002(user02)组=1002(user02),2000(group-teacher),3000(group-student)如果使用usermod-Gnetuser02,user02就不会在group-teacher组中了。本任务注意点(1)在给用户名设置密码的时候,要学会使用非交互方式设置,这个在编写shell脚本会经常用到。(2)gpasswd命令改变的是附加组,如果想改变基本组需要使用usermod命令,gpasswd-a在增加一个用户附加组的同时不会改变之前的用户所在组,usermod-G改变附加组则会改变之前的用户所在组。任务拓展训练(1) 创建用户www,不建立家目录、不登录系统。(2) 创建用户user01,user02,user03。(3) 使用非交互方式将user01的密码设置为user01,user02的密码设置为user02,user03的密码设置为user03。(4) 创建4个用户组,分别为it、account、sale、public、manage。(5) 将user01的基本组设置为it,user02的基本组设置为account,user03的基本组设置sale。(6) 将三个用户的附加组设置为public。(7) 将user01添加到manage中,不改变user01之前所在的组。(8) 将user02从account组中删除。任务2管理权限3.2.1理解文件目录权限3.2.2查看文件或者目录权限3.2.3改变文件所有者3.2.4改变文件所属组群3.2.5数字表示法修改文件和目录的权限3.2.6文件表示法修改文件和目录的权限3.2.7文件访问控制列表3.2.8文件权限管理实例配置3.2.1理解文件目录权限linux各用户对于系统中的文件或者目录都有它自身的读、写和执行权限,如表3-1所示。举个例子【实例1】查看当前目录下文件的详细信息。在当前目录下,新建一个file01文件,在该文件中写入相应的内容。使用“ls-l”或者“ll”命令来显示文件的详细信息,其中包括文件或目录的权限,命令显示如下。[root@localhost~]#vifile01.txtaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeee[root@localhost~]#ls-l总用量12-rw.1rootroot15897月162021anaconda-ks.cfg-rw-r--r--.1rootroot1162月1119:43file01.txt-rw-r--r--.1rootroot16207月162021initial-setup-ks.cfg以上列出了各种文件或目录的详细信息,共分7组,各组信息的含义,如图3-2所示3.2.2查看文件或目录权限1.第一组为文件类型权限第一个字符一般用来区分文件的类型,一般取值为:-、b、c、d、l、s、p,具体含义,如表3-2所示。第2~10个字符表示文件的访问权限,这9个字符每3个为一组左边3个字符表示所有者权限,中间3个字符表示与所有者同一组的用户的权限,右边3个字符是其他用户的权限,代表的意义如下。字符2、3、4表示该文件所有者的权限,有时也简称为u(User)的权限。 字符5、6、7表示该文件所有者属组的组成员的权限,如:此文件拥有者属于“workgroup”组群,该组群中有5个成员,表示这5个成员都有此处指定的权限,简称为g(Group)的权限。 字符8、9、10表示该文件所有者所属组群以外的其他用户的权限,简称o(Other)的权限。这9个字符根据权限种类的不同,也分为3种类型。r具有读取文件内容浏览目录的权限;w具有新增、修改文件内容和删除、移动目录内文件的权限;x具有执行文件权限和进入目录的权限;-表示不具有该项权限。【实例21】说明文件类型权限属性信息。(1)-rw-rw-rw-:该文件为普通文件,文件所有者、同组用户和其他用户对文件都只具有读、写权限,不具备执行权限。(2)brwxr--r--:该文件为块设备文件,文件所有者具有读、写和执行的权限,其他用户则具有读取的权限。(3)drwx--x--:该文件是目录文件,目录所有者具有读、写和执行的权限,其他用户则能进入该目录,却无法读取任何数据。(4)lrwxrwxrwx:该文件是符号链接文件,文件所有者、同组用户和其他用户对文件都具有读、写和执行权限。每个用户都拥有自己的主目录,通常在/home目录下,这些主目录的默认权限为drwx,执行mkdir命令所创建的目录,其默认权限为drwxr-xr-x,用户可以根据需要修改目录权限。【实例2】新建/home/teacher目录,查看该目录默认权限。[root@localhost~]#mkdir/home/teacher[root@localhost~]#ls-l/home总用量4drwx.16linuxlinux40962月917:50linuxdrwxr-xr-x.2rootroot62月1109:57teacherdrwx.3user01user01782月1022:19user01drwx.3user02user02782月1022:19user02drwx.3user03user03782月1022:19user03drwx.3user04user04782月1022:19user042.第二组表示链接数或子目录数每个文件都会将其权限与属性记录到文件系统的i-node中,不过我们使用的目录树却是使用文件记录,因此每个文件名就会连接到一个i-node,这个属性记录的就是有多少不同的文件名连接到相同的一个i-node。3.第三组表示这个文件或目录的拥有者账户该字段表示这个文件是属于哪个用户的。UNIX类系统都是多用户系统每个文件都有它的拥有者。只有文件的拥有者才具有改动文件属性的权利。当然,root用户具有改动任何文件属性的权利。对于一个目录来说只有拥有该目录的用户,或者具有写权限的用户才有在目录下创建文件的权利。4.第四组表示这个文件或目录的所属组群在Linux系统中,用户的账户会附属于一个或多个的组群中,例如:user01、user02用户均属于group-teacher这个组群。如果某个文件所属的组群为group-teacher,且这个文件的权限为:-rwxrwx,则user01、user02用户对于这个文件都具有可读、写和执行的权限,但如果是不属于group-teacher的其他账户,则对于此文件就不具有任何权限了。5.第五组为这个文件的容量大小如果是一个文件夹,则表示该文件夹的大小。请注意是文件夹本身的大小,而不是文件夹以及它下面的文件的总大小!文件大小在Linux操作系统中默认的大小单位是B,也就是你的文件的大小是多少B。6.第六组为文件的创建日期或者是最近的修改日期这一栏的内容分别为日期(月/日)及时间。如果这个文件被修改的时间距离现在太久了,那么时间部分会仅显示年份而已,如果想要显示完整的时间格式,可以利用ls的选项,即ls–l–full-time,就能够显示出完整的时间格式了。
【实例3】查看当前目录下文件的完整时间格式。[root@localhost~]#ls-l--full-time总用量12-rw.1rootroot15892021-07-1609:53:20.653990956+0800anaconda-ks.cfg-rw-r--r--.1rootroot1122023-02-1100:53:45.377335056+0800file01.txt-rw-r--r--.1rootroot16202021-07-1609:56:55.626999718+0800initial-setup-ks.cfgdrwxr-xr-x.2rootroot62021-07-1610:07:16.170994437+0800公共drwxr-xr-x.2rootroot62021-07-1610:07:16.170994437+0800模板drwxr-xr-x.2rootroot62021-07-1610:07:16.170994437+0800视频drwxr-xr-x.2rootroot62021-07-1610:07:16.170994437+0800图片drwxr-xr-x.2rootroot62021-07-1610:07:16.170994437+0800文档drwxr-xr-x.2rootroot62021-07-1610:07:16.170994437+0800下载drwxr-xr-x.2rootroot62021-07-1610:07:16.170994437+0800音乐drwxr-xr-x.2rootroot62021-07-1610:07:16.170994437+0800桌面7.第七组为这个文件的文件名称文件或目录最后一项属性的信息为文件的名称,比较特殊的是,如果文件名称之前多一个“.”,则代表这个文件为隐藏文件,可以使用“ls”和“ls-a”命令来查看一下隐藏文件。【实例4】查看当前目录下的隐藏文件。[root@localhost~]#lsanaconda-ks.cfginitial-setup-ks.cfg模板图片下载桌面file01.txt公共视频文档音乐[root@localhost~]#ls-a..bash_profile.dbus.local模板音乐...bashrc.esd_auth.ssh视频桌面anaconda-ks.cfg.cachefile01.txt.tcshrc图片.bash_history.config.ICEauthority.Xauthority文档.bash_logout.cshrcinitial-setup-ks.cfg公共下载3.2.3改变文件所有者利用chown命令可以将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID,组可以是组名或者组ID,文件是以空格分开的要改变权限的文件列表,支持通配符。chown命令格式如下。chown选项用户:组群文件chown命令各选项及功能如下。
-c:显示更改的部分的信息
-f:忽略错误信息
-v:显示详细的处理信息
-R:处理指定目录以及其子目录下的所有文件举个例子【实例5】将文件/etc/shadow拷贝到/home/linux目录下,切换到linux用户,并查看文件内容。[root@localhost~]#cp/etc/shadow/home/linux/[root@localhost~]#ls-l/home/linux总用量20drwxr-xr-x.143rootroot81922月915:35etc-r.1rootroot17632月1122:37shadow-rw-r--r--.1rootroot122月823:30test.txtdrwxr-xr-x.2linuxlinux611月2801:49公共drwxr-xr-x.2linuxlinux611月2801:49模板drwxr-xr-x.2linuxlinux611月2801:49视频drwxr-xr-x.2linuxlinux611月2801:49图片drwxr-xr-x.2linuxlinux611月2801:49文档drwxr-xr-x.2linuxlinux611月2801:49下载drwxr-xr-x.2linuxlinux611月2801:49音乐drwxr-xr-x.2linuxlinux611月2801:49桌面[root@localhost~]#su-linux上一次登录:六2月1122:25:10CST2023pts/0上[linux@localhost~]$catshadowcat:shadow:权限不够可以看到,即使把shadow文件拷贝到了linux用户的家目录,且有读取的权限,linux用户也无法查看shadow文件的内容,这是由于该文件的所有者还是root。要想查看该文件的内容,还需把该文件的所有者更改为linux用户。
【实例6】更改shadow文件的所有者更改为linux用户。[linux@localhost~]$su密码:[root@localhostlinux]#chownlinuxshadow[root@localhostlinux]#ls-l总用量20drwxr-xr-x.143rootroot81922月915:35etc-r.1linuxroot17632月1122:37shadow-rw-r--r--.1rootroot122月823:30test.txtdrwxr-xr-x.2linuxlinux611月2801:49公共drwxr-xr-x.2linuxlinux611月2801:49模板drwxr-xr-x.2linuxlinux611月2801:49视频drwxr-xr-x.2linuxlinux611月2801:49图片drwxr-xr-x.2linuxlinux611月2801:49文档drwxr-xr-x.2linuxlinux611月2801:49下载drwxr-xr-x.2linuxlinux611月2801:49音乐drwxr-xr-x.2linuxlinux611月2801:49桌面[root@localhostlinux]#catshadowroot:$6$7QLZygOe$fOxkDeJoboFcn4BA/zx5V77rB7HwBSUU9CMK1DKNajnWpYMqGzfdOrUzZTXR7jhmBnZRmglIDDZS8geYMR4Jo0:19323:0:99999:7:::bin:*:17834:0:99999:7:::daemon:*:17834:0:99999:7:::adm:*:17834:0:99999:7:::lp:*:17834:0:99999:7:::sync:*:17834:0:99999:7:::……切换到root用户身份,因为chown命令只有root用户才能执行。3.2.4改变文件所属组群利用chgrp命令可以将指定文件的所属组群,命令格式如下。chgrp选项组群文件chgrp命令各选项及功能如下。
-c:当发生改变时输出调试信息
-f:不显示错误信息
-R:处理指定目录以及其子目录下的所有文件
-v:运行时显示详细的处理信息举个例子【实例7】将shadow文件的组群更改为linux组群。[root@localhostlinux]#ls-l总用量20drwxr-xr-x.143rootroot81922月915:35etc-r.1linuxroot17632月1122:37shadow-rw-r--r--.1rootroot122月823:30test.txtdrwxr-xr-x.2linuxlinux611月2801:49公共drwxr-xr-x.2linuxlinux611月2801:49模板drwxr-xr-x.2linuxlinux611月2801:49视频drwxr-xr-x.2linuxlinux611月2801:49图片drwxr-xr-x.2linuxlinux611月2801:49文档drwxr-xr-x.2linuxlinux611月2801:49下载drwxr-xr-x.2linuxlinux611月2801:49音乐drwxr-xr-x.2linuxlinux611月2801:49桌面[root@localhostlinux]#chgrplinuxshadow[root@localhostlinux]#ls-l总用量20drwxr-xr-x.143rootroot81922月915:35etc-r.1linuxlinux17632月1122:37shadow-rw-r--r--.1rootroot122月823:30test.txtdrwxr-xr-x.2linuxlinux611月2801:49公共drwxr-xr-x.2linuxlinux611月2801:49模板drwxr-xr-x.2linuxlinux611月2801:49视频drwxr-xr-x.2linuxlinux611月2801:49图片drwxr-xr-x.2linuxlinux611月2801:49文档drwxr-xr-x.2linuxlinux611月2801:49下载drwxr-xr-x.2linuxlinux611月2801:49音乐drwxr-xr-x.2linuxlinux611月2801:49桌面可以看到,在实例6中,虽然shadow文件的所有者改为了root,但是文件的所属组群仍然为root。使用chgrp命令更改后,shadow文件所属组群已经变为了linux。3.2.5数字表示修改文件和目录的权限在文件建立时系统会自动设置文件的权限,如果这些默认权限无法满足需要,此时可以使用chmod命令来修改文件权限,通常在权限修改时可以用两种方式来表示权限类型:数字表示法和文字表示法。chmod命令其格式如下。chmod选项文件chmod命令各选项及功能如下。
-c:若该档案权限确实已经更改,才显示其更改动作。
-f:若该档案权限无法被更改也不要显示错误讯息。
-v:显示权限变更的详细资料。
-R: 对目前目录下的所有档案与子目录进行相同的权限变更
所谓数字表示法是指将读取(r)、写入(w)、和执行(x)分别以数字4、2、1来表示,没有授予的部分就表示为0,然后再把授予的权限相加而成,如表3-3所示。换个思路理解,其实可以把利用ls–l查看的文件详细信息中的第一列中的,除了第一个字符之外的所有字符中每三个一组分成三组,每组有三个字符,每个字符位只能用0或者1表示,那么每组其实就是一个二进制格式的数字,那么左数第一位的最大值则为2的2次方也就是4;左数第二位表示的权重则是2的1次方也就是2;右数第一位则表示2的0次方,也就是1,另外0表示没有权限。因此,每组的最大数值转换为十进制应该是7,如果自己、同组与其他都具有读写执行的权限则为777。
【实例8】使用chmod命令修改文件和目录权限,为文件/mnt/test01设置权限,默认权限为:rw-r--r--,要求赋予拥有者和组群成员读取和写入权限,而其他人只有读取权限,则应该将权限设置为:rw-rw-r--,而该权限的数字表示法为:664。[root@localhost~]#touch/mnt/test01[root@localhost~]#ls-l/mnt总用量0-rw-r--r--.1rootroot02月1110:27test01[root@localhost~]#chmod664/mnt/test01[root@localhost~]#ls-l/mnt总用量0-rw-rw-r--.1rootroot02月1110:27test01如果要想使用隐藏文件.tcshrc,需要对这个文件所有的权限都设定启用,那就可以执行如下命令:[root@localhost~]#ls-al.tcshrc-rw-r--r--.1rootroot12912月292013.tcshrc[root@localhost~]#chmod777.tcshrc[root@localhost~]#ls-al.tcshrc-rwxrwxrwx.1rootroot12912月292013.tcshrc
如果要将权限变成-rwxr-xr—呢?权限的数字就变成为(4+2+1)(4+0+1)(4+0+0)=754,所以需要使用chmod754filename命令;另外,在实际的系统运行中最常用发生的一个问题就是常常我们以vim编辑一个shell的文本批处理文件test01.sh后,它的权限通常是-rw-rw-r--,也就是664;如果要将该文件变成可执行文件,并且不要让其他人修改这个文件,那么就需要设置成为-rwxr-xr-x这样的权限,此时就要执行chmod755test01.sh指令;如果有些文件不希望被其他人看到,则可以将文件的权限设定为-rwxr,执行chmod740filename指令。3.2.6文字表示法修改文件和目录的权限1.文字表示使用权限的文字表示法时,系统用4种字母来表示不同的用户。
u:user,表示所有者。
g:group,表示属组。
o:others,表示其他用户。
a:all,表示以上3种用户。使用以下3种字符的组合表示法设置操作权限。
r:read,表示可读取。
w:write,表示可写入。
x:execute,表示可执行。操作符号包括以下几种。
+:表示添加某种权限。
-:表示减去某种权限。
=:表示赋予给定权限并取消原来的权限。这个命令可以任意的自由组合,使用起来非常方便,例如
chmodu=rwx文件目录名设置拥有者权限可读可写可执行
chmodo+w文件目录名给其他人用户增加写的权限。
chmoda-x文件目录名给所有人去掉可执行的权限。举个例子【实例9】在/mnt目录下新建文件test01,以文字表示法修改文件权限:要求赋予拥有者所有权限、组群成员读取和写入权限,而其他人拥有读取和执行权限。[root@localhost~]#vi/mnt/test01aaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbccccccccccccccccccc~"/mnt/test01"3L,60C已写入[root@localhost~]#ls-l/mnt/test01-rw-rw-r--.1rootroot608月2108:33/mnt/test01[root@localhost~]#chmodu=rwx,g=rw,o=rx/mnt/test01//修改文件权限[root@localhost~]#ls-l/mnt/test01-rwxrw-r-x.1rootroot608月2108:33/mnt/test01修改目录权限和修改文件权限相同,都是使用chmod命令,但不同的是,要使用通配符“*”来表示目录中的所有文件。举个例子【实例10】修改/mnt/test目录文件权限操作,要同时将/mnt/test目录中的所有文件权限设置为所有人都可以读取及写入,在/mnt/test目录下新建文件test01.txt、test03.txt、test03.txt,设置相关权限操作,执行相关命令如下:[root@localhost~]#touch/mnt/test/test01.txt/mnt/test/test02.txt/mnt/test/test03.txt[root@localhost~]#ls-l/mnt/test总用量0-rw-r--r--.1rootroot08月2108:51test01.txt-rw-r--r--.1rootroot08月2108:51test02.txt-rw-r--r--.1rootroot08月2108:51test03.txt[root@localhost~]#chmoda=rw/mnt/test/*//设置为所有人都可以读取及写入[root@localhost~]#ls-l/mnt/test总用量0-rw-rw-rw-.1rootroot08月2108:51test01.txt-rw-rw-rw-.1rootroot08月2108:51test02.txt-rw-rw-rw-.1rootroot08月2108:51test03.txt如果目录中包含其他子目录,则必须使用-R(Recursive)参数来同时设置所有文件及子目录的权限举个例子【实例11】在/mnt/test目录下新建子目录aaa和bbb子目录,同时在子目录aaa中新建文件user01.txt,在子目录bbb中新建文件user02.txt,设置权限/mnt/test子目录及文件都为只读权限。[root@localhost~]#mkdir/mnt/test/aaa[root@localhost~]#mkdir/mnt/test/bbb[root@localhost~]#touch/mnt/test/aaa/user01.txt[root@localhost~]#touch/mnt/test/bbb/user02.txt[root@localhost~]#ls-l/mnt/test总用量0drwxr-xr-x.2rootroot248月2109:02aaadrwxr-xr-x.2rootroot248月2109:02bbb-rw-rw-rw-.1rootroot08月2108:51test01.txt-rw-rw-rw-.1rootroot08月2108:51test02.txt-rw-rw-rw-.1rootroot08月2108:51test03.txt[root@localhost~]#chmod-Ra=r/mnt/test//设置权限test子目录及文件都为只读权限[root@localhost~]#ls-l/mnt/test总用量0dr--r--r--.2rootroot248月2109:02aaadr--r--r--.2rootroot248月2109:02bbb-r--r--r--.1rootroot08月2108:51test01.txt-r--r--r--.1rootroot08月2108:51test02.txt-r--r--r--.1rootroot08月2108:51test03.txt举个例子【实例12】使用文字表示法的相关操作,设定一个文件的权限为:-rwxrw-rw-时,所表述的含义如下:1、user(u):文件具有可读、写入及可执行的权限。2、group与other(g/o):文件具有可读、写入的权限,但不具有执行的权限。[root@localhost~]#ls-laa.txt-rw-r--r--.1user02root08月2118:45aa.txt[root@localhost~]#chmodu=rwx,go=rwaa.txt//u=rwx,go=rw之间是没有任何空格[root@localhost~]#ls-laa.txt-rwxrw-rw-.1user02root08月2118:45aa.txt如果要设定一个文件的权限为:-rwxrw-r--,我们可以使用“chmodu=rwx,g=rw,o=rfilename”来设定。如果不知道原先的文件属性,而想增加文件的所有者有写入的权限,那么如何操作呢?举个例子【实例13】为/mnt/bbb.txt的所有者增加写入的权限。[root@localhost~]#ls-l/mnt总用量4-rw-r--r--.1user02root08月2119:34aaa.txt-rw-r--r--.1user03root08月2119:35bbb.txtdr--r--r--.4rootroot828月2109:02test-rwSrwSr--.1rootroot608月2108:33test01[root@localhost~]#chmoda+w/mnt/bbb.txt//设定/mnt/bbb.txt文件权限[root@localhost~]#ls-l/mnt总用量4-rw-r--r--.1user02root08月2119:34aaa.txt-rw-rw-rw-.1user03root08月2119:35bbb.txtdr--r--r--.4rootroot828月2109:02test-rwSrwSr--.1rootroot608月2108:33test01如果要将文件的权限去掉而不改动其他已存在的权限应该如何操作呢?举个例子【实例14】去掉当前目录下.bashrc文件所有人的可执行权限。[root@localhost~]#ls-al.bashrc-rwxrwxrwx.1user02root23110月312018.bashrc[root@localhost~]#chmoda-x.bashrc[root@localhost~]#ls-al.bashrc-rw-rw-rw-.1user02root23110月312018.bashrc在+与-的状态下,只要不是指定的项目,权限是不会变动的,例如,上面的例子中,由于仅去掉x的权限,则其他权限值保持不变,如果想让用户拥有执行的权限,但又不知道该文件原来的权限,此时,可以利用chmoda+xfilename,就可以让该程序拥有执行的权限,权限对于使用者账户来说是非常重要的,因为权限可以限制使用者能不能读取、写入、修改、建立、删除、执行文件或目录等操作。
2.文件系统高级权限(1)SET位权限。SET位权限又叫做特殊权限,一般文件权限是rwx,在某些特殊场合可能无法满足要求,为了方便普通用户执行一些特权命令,通过设置SUID、SGID权限允许普通用户以root身份暂时执行某些程序,并在执行结束后再恢复身份。因此Linux系统还提供了一些额外的权限,只要设置了这些权限,还将具有一些额外的功能。chmodu+s就是给某个程序的所有者以SUID、SGID权限,可以像root用户一样操作。chmod命令设置特殊权限,其格式如下:chmodu+s可执行文件关于SET位权限命令设置的几点说明。 设置对象:可执行文件。完成设置后,此文件的使用者在使用文件的过程中会临时获得该文件的属主身份及部分权限。 设置位置:SetUID附加在文件属主的x权限上,表示对文件所有者增加SET位权限;SetGID附加在属组在x权限位上,表示对属组内的用户增加SET位权限。 设置后的变化:此文件属主的x权限位会变为s。举个例子【实例15】设置/usr/bin/mkdir文件的SUID权限。[root@localhost~]#ls-l/usr/bin/mkdir-rwxr-xr-x.1rootroot7986410月312018/usr/bin/mkdir[root@localhost~]#chmodu+s/usr/bin/mkdir//设置mkdir文件SUID权限[root@localhost~]#ls-l/usr/bin/mkdir-rwsr-xr-x.1rootroot7986410月312018/usr/bin/mkdir[root@localhost~]#su-user02//切换用户user02登录上一次登录:五8月2119:34:16CST2020pts/0上[user02@localhost~]$pwd/ho
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025新职工入场安全培训考试试题【达标题】
- 2025公司员工安全培训考试试题答案综合卷
- 2025厂里职工安全培训考试试题含答案【综合卷】
- 2025合作协议、活动执行合同书
- 2025合同终止仍有年终奖 管理资料详解
- 2025设备采购协议合同范本
- 2025官方版商业店铺租赁合同书
- 2025年的合同效力如何评估
- 2025电子产品买卖合同范本
- 2025年碳化硅磨块合作协议书
- 2025年重庆市中考物理模拟试卷(一)(含解析)
- 《服务营销双主动》课件
- 公司法公章管理制度
- 演出经纪人员资格备考资料2025
- 成都交通投资集团有限公司招聘考试真题2024
- (二模)嘉兴市2025年高三教学测试语文试卷(含答案)
- 湖北省宜昌二中2025年高考化学考前最后一卷预测卷含解析
- 医院不良事件上报制度
- MTK安全架构研究-全面剖析
- 10S505 柔性接口给水管道支墩
- DZ∕T 0227-2010 地质岩心钻探规程(正式版)
评论
0/150
提交评论