上章节给你们整理了Linux系统目录结构,即各个目录的文件作用是哪些、还有文件的链接,本文主要给你们分享linux用户管理、文件操作权限等。
用户管理
一、增加新的用户账号
以新增一个m5帐号为例:
useraddz3添加新用户z3
passwdz3赋于新用户z3口令
说明:①新用户只有被赋于口令后才会使用;
②RedhatLinux中,adduser是useradd的符号联接。
③useradd命令常用的参数:
-u设置用户的UID
-g设置用户的GID
-d设置用户的主目录
-G使该用户成为其他组的成员
-s用户的登陆shell,默认为/bin/bash
-ccomment用户注释
-p同时设置口令,注意无空格。(Redhat版支持)
添加新用户的操作实际上是更改了/etc/passwd、/etc/shadow文件,在/home下为创建主目录,并将/etc/skel目录内容拷入。
二、/etc/passwd文件
/etc/passwd文件记录用户帐号信息,(权限:root.root644)
该文件每行由7个域组成,之间由逗号分隔:
用户名:口令:UID:GID:注释:用房主目录:shell
例如:root:x:0:0:root:/root:/bin/bash
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
z3:x:500:500:ZhangSan:/home/z3:/bin/bash
l4:x:501:501:LiSi:/home/l4:/bin/bash
w5:x:502:502:WangWu:/home/w5:/bin/bash
m6:x:503:503:MaLiu:/home/m6:/bin/bash
说明:
UID:用户标识; GID:组标识; x :口令被加密
用户名应该唯一,如不唯一则系统只认前面的一个。
UID 不必唯一。相同的 UID 具有完全相同的权限。
普通用户的 UID≥500 只不过是个约定。但等于 0 则具有特别意义,即拥有 root 权限。其实获得 UID=0 的特权就是网络攻击者的目标。
三、/etc/shadow文件(权限:root.root400)
/etc/shadow文件主要用于记录加密加密后的口令,其格式:
username:password:last:may:must:warn:expire:disable:reserved
last:先前更改口令日期,从1970-1-1起估算的天数;
从may至nust的期间,用户才可以更改口令;
warn:在must前多少天提示用户更改口令;
expire:在must后多少天使用户帐号失效;
disable:只拿来记录帐号失效的天数;
reserved:保留,仍未使用。例:
root:$1$RE9bMMe8$4G3nQB7tiyYYHKLJMdY.m/:12770::99999::::
ftp:*:12734:0:99999:7:::
z3:$1$vqHltSd2$/Zv6HBjDXknqkY8MTiW.20:12763::99999::::
l4:$1$2eRrDN.g$fCtWeiIvonMyVW5NklRfI0:12763::99999::::
w5:$1$sTaNpD10$ho3C12iBGIaVD1kxfOaCj/:12763::99999::::
m6:$1$4zO8RY6k$cOTmCThcLfWL7plnWlBFt0:12772:0:0:0:0::
四、用户组
groupadd命令用于创建用户组
将一个早已存在的用户加入组可使用usermod–G命令
例:
groupaddg1创建用户组g1
usermod-Gg1z3收z3为g1组成员
关于组的操作实际上是在更改/etc/group文件。
字符界面下仍未发觉有可用的命令用于对组成员的剔除,
此时,对于组管理的最有效手段是手工更改/etc/group文件。
五、/etc/group文件(权限:root.root644)
/etc/group文件记录组信息,每行一组,格式:
组名:口令:GID:成员列表(成员之间用冒号隔开)
若需组口令可执行gpasswd。加密的组口令存于/etc/gshadow。
六、用户的私有组与登陆组
useradd在创建用户的同时也创建了一个同名组。
新用户默认属于自己的组。这个组称为用户私有组。
其他用户也可以成为这个私有组的成员并享受该组成员权力
(仅root有权操作)。
/etc/passwd文件中的GID表示的是用户的默认组。
usermod–g命令可以改变用户的默认组,俗称登陆组:
例:usermod–gz3l4更改l4的默认组属于z3
随后用户创建的所有目录与文件的组属性属于新的默认组。
七、删除用户或组
userdel删掉用户。
例userdel–rw5删掉w5(-r表示同时删掉其主目录)
groupdel删掉组例:groupdelg2
(注意:一些资料上说该命令不能删掉非空组,但实验证实在redhatLinux中可以删掉非空组,并且该命令没有确认机制,请慎用!)
八、改变用户设置
usermod命令用于改变用户的帐号设置,如UID、GID、注释、主目录、shell。其参数分别是-u、-g、-c、-d、-s。
chage命令用于更改口令的有效期。
具体用法请参考系统帮助。
九、禁止用户帐号
更改用户的shell为nologin或false可制止其登陆系统。
例:usermod–s/sbin/nologin或usermod–sfalse
十、用户的身分转换
su命令可改变用户身分,除了省却了注销和重新登陆过程,并且在使用root身分未能登入的Telnet网路登入的情况下更为有用。(su是代替用户(Substituteuser)的意思,但常被理解为superuser)。
例:suroot在依提示输入root口令后转为root身分
但这些转换并没有相应地改换系统运行环境,提示符类似:
[root@localhostz3]#
用户已是root,但仍运行于z3的运行环境下。这会导致一些程序的运行结果不正常,与真实的root环境是大有区别的(例如就难以执行死机复位等操作)。要想同时获得新用户的环境linux环境变量,应在su与用户名间加-号并空格,
即:su-root
这时系统提示符显示:[root@localhostroot]#
十一、其它
①执行“id用户名”命令可列举用户的UID、GID和所有组
②与W2K不同,Linux的组不能吸纳其它组为成员。
第六章Linux文件权限
一、用户分类与文件访问权
•Linux将用户界定为四类;
root;或所有UID=0的用户,具有至高权限;
owner:文件的所有者,默认即文件的创建者;
group;所属组,除owner外同组其他成员有同等权限;
world;除前面三类外的其他普通用户。
自然,Linux的权限管理只针对owner、group、world。
•访问权限有三种;读、写、执行,分别用r、w、x表示
ls–l命令显示的结果中第1列的2-10分别表示三类用户对
此文件(或目录)的三种访问权限,“-”表示无此权限,例:
-rwxr-x---2z3g1737oct718:42a.sh
表示a.sh文件为z3所有,属于g1组linux 加执行权限,z3具有全部权限,
g1组内其他成员具有读和执行权限adobe air linux,其他用户无任何权限。
•为易于记忆与交流,专业人员习惯以八补码描述权限,例如
上例文件的访问权限可表示为750。
二、文件权限与目录权限
文件与目录的访问权限都分为读、写和执行,但作用不同:
读权限
写权限
执行权限
文件
读取文件内容更改该文件
执行
目录
列举其中的文件名
在其中创建或删掉文件
步入目录注意:
⑴在Linux中一个文件是否是可执行文件与其扩充名无关。
其能否执行取决于两个条件:用户是否具有执行权限;该文件是否是可执行文件。普通的文本文件(非脚本文件)虽然被赋于执行权限也难以执行。File命令可查看文件类型。
⑵RedhatLinux9.0上的实验表明:若要对目录中的文件名列表或在其中创建与删掉文件都必需要对该目录拥有执行权限。这点与好多书籍上的说法存在出入。
三、改变文件的所有者和所在组
①chown命令:改变文件的所有者
例:chownl4a.txt改a.txt文件的所有者为l4
chownl4mydir改mydir目录的所有者为l4
chown–Rl4mydir将mydir目录全部归l4所有
说明:⑴-R参数表示递归操作,即把mydir及其下的所有
目录与文件的所有者都改为l4。
⑵只有root用户有劝执行chown命令。
②chgrp命令:改变文件的所属组
例:chgrpg1a.txt改a.txt文件的所属组为g1
chgrp–Rl4mydir递归改变mydir目录所属组
说明:普通用户也可以执行chgrp命令,但前提条件是该
用户必须同时具备两组的成员身分。③同时改变所有者和所属组
chownnewuser.newgroupfilename_or_directory
即用点联接新所有者和新组,执行chown命令。
例:chownl4.g1mydir
四、改变文件的访问权限
•chmod命令用于更改文件或目录的访问权限。命令格式:
chmod权限文件或目录名
例:chmod755/home/l4更改l4的主目录访问权限为755
(注:假如须要,其实也可以使用递归操作参数-R)
•还可以使用字符串代替八补码的权限表示:
u、g、o、a分别表示owner、group、world、all
r、w、x分别表示read、write、exec
+、-分别表示降低、去除权限
例:chmoda+rg+xu+xw/home/l4
使/home/l4对任何人可读、组用户可执行、拥有者可读可执行
又例:chmod+xinstall.sh
使当前目录下的install.sh文件对任何人可执行。这些用法常
用在改变下载文件的权限属性便于其可执行。
注意:
⑴对硬联接的访问权限更改会同时影响到所有相关的硬联接权限属性。由于它们是同一个文件。
⑵对软联接的访问权限更改只改变了被联接文件的权限属性,
联接文件自身的访问权限并没有被更改,仍是777。
五、用户的默认访问权限和umask
用户在创建新文件时,系统一般按默认值赋于其权限:
目录
通常文件
root
755
644
普通用户
775
664
影响用户的权限默认值的是个与用户相关的系统值umask。
Root的umask=022,普通用户的umask=002
目录的默认权限等于:777与umask原码;(777除以umask)
文件的默认权限等于:666与umask原码。(666除以umask)
不带参数地执行umask将显示当前用户的umask值。
umask新值可改变当前用户的umask值linux 加执行权限,
例:umask222令当前用户umask=222,任何人都不可写
说明:
⑴umask只与用户有关,与当前在那个目录无关。
⑵只能改变自己的umask,但是只对自己的本次登陆有效。
上次登陆umask还是原值。所以更改的意义虽然不大。
⑶注意:“减去umask”的说法只是一些书籍上为不熟悉布
尔代数的初学者提供的一种权宜的助记方式,该说法虽然很有问题,导致好多现象难以解释。笔者觉得确切的说法应当是:“默认的访问权限等于权限基值与上‘umask的原码’,对于新建目录和新建文件来说,其权限基值分别是777和666;但对于由拷贝操作形成的新目录和新文件来说,其权限基值就是源目录(或源文件)的原有值”。也就是将权限基值上的这些与umask中置1位相对应的权限位清零便可得到新文件的默认权限值。
六、理解SUID和SGID
先剖析一个现象:
记录用户帐号信息的/etc/passwd文件其权限是:root.root644
记录加密口令的/etc/shadow文件其权限是:root.root400
对于普通用户passwd只能读而不能改写;shadow连读都不容许。可为何我们可以通过passwd命令改写自己的口令?
查看一下命令程序usr/bin/passwd文件的属性:
/usr/bin/passwd文件其权限是:root.root-r-s--x--x
这个文件是容许普通用户执行的。root的执行位是s,就是这个s使普通用户执行passwd时具有了root身分因而获得了对/etc/passwd和/etc/shadow的完全访问权(root哪些权没有?)。
实际上表示Linux文件权限的是12bit,上面的3bit是:
SUID:若文件可以执行,则按所有者身分运行;
SGID:若文件可以执行,则按组成员身分运行;
sticky:粘接位,结束后仍留驻显存。目前并不常用。在ls–l命令显示中的表示方式:
SUID置位:所有者的执行位的x被s代替;
SGID置位:所属组的执行位的x被s代替;
sticky置位:其他人的执行位的x被t代替。
所以,-r-s--x--x用值表示就是4511。
注意,使用SUID和SGID位要非常当心。