if
null
disable:禁止中断,默认为mask
if
null
mask:mask
一个中断源,通常是关闭中断
mask_ack:响应并mask中断源
unmask:unmask中断源
例如
irq_desc[irq].mask
=
pcf50606_mask_irq
irq_desc[irq].unmask
=
pcf50606_unmask_irq
//mask,unmask函数与enable_irq/disable_irq对应,把使能禁止中断对应到设置pcf50606中断mask中
可以使用ifconfig命令。ifconfig是linux中用于显示或配置网络设备(网络接口卡)的命令,英文全称是network interfaces configuring。它能够显示网卡的IP地址、子网掩码、广播地址、硬件地址等信息。
用法示例:
查看网卡eth0的mac地址
$ ifconfig eth0
mac地址位于上图中的红色方框处。
1,先找到/etc/passwd里面是否有你输入的帐号,没有的话则跳出,有的话就将该帐号对应的UID,GID
读出来,另外还有该帐号的家目录与shell设定也一并读出;
2,核对密码表,这时Linux会进入/etc/shadow里面找出对应的帐号与UID,然后核对一下你刚刚输入的密码
与里面的密码是否相符
3,如果一切OK的话,就进入Shell控管的阶段
/etc/passwd的档案结构
1 帐号名称 用来对应UID的
2 密码 会看到一个X 密码数据改放到/etc/shadow
3 UID 0表示root 1~ 499表示系统帐号 1~99 由distributions自行建立的系统帐号,100~499用户有系统帐号需求时,可以使用的帐号UID
4 GID 这个/etc/group的观念和/etc/passwd差不多,用来规范组名与GID对应而已
5用户信息栏说明,只是用来解释这个帐号的意义而已,不过,如果你提供使用finger的功能时,这个字段可以提供很多的讯息,chfn指令用于解释
6 家目录 root就是/root
7 Shell 当用户登录系统后会取得一个Shell来与系统的核心沟通,以进行用户的 *** 作任务,一般取值为/sbin/bash, 如果用来替代成让帐号无法取得
shell环境的登录动作,那就是/sbin/nologin这个东西
/etc/shadow的档案结构
1 帐号名称 用来必须要与/etc/passwd 相同才行
2 密码 经过编码的密码(加密)啦!这个档案只有root才可以读写就是了,不要不小心更动这个档案的权限,由于固定的编码系统产生的密码长度
必须一致,因此在此字段上加上!或*改变了密码字段的长度,就会让密码【暂时失效】了
3最近更动密码癿日期: 这个字段的值是以1970年1月1日而累加的日期,14126表示的就是2008-09-04那一天,想要了解该日期,可以使用chage
这个指令的帮忙
4 密码不可被改动的天数: 这个帐号最近一次被更改后需要多少时间才能再次被变更,如果是0的话,表示密码随时可以更动的意思
5 密码需要重新变更的天数:强制性的规定该密码在多少时间后需要重新的设定一下密码
6 密码需要变更期限前的警告天数:表示提示用户这个密码就要到期了,请尽快重新设定你的密码
7 密码过期后的帐号宽限时间,过了期限后依旧没有更新密码,那么密码就算过期了,虽然密码过期了,但是该帐号还是可以用来进行其他工作的
包括登录系统取得bash,不过如果密码过期了,登录系统时,系统会强制你必须要重新设定密码才能登录继续使用,如果密码过期几天后,还是没有
登录更改密码,那么这个帐号密码就会【失效】,这个帐号再也无法使用该密码登录了,密码过期和密码失效并不相同
8 帐号失效日期: 表示此帐号在此日期之后,就无法再使用了,无论密码是否过期
9 保留字段,看以后是否有新功能加入
/etc/group的档案结构
1 组名
2 群组密码 密码已经移动到/etc/gshadow 中去了,这个字段只会存在一个【x】而已
3 GID群组ID,
4 此群组支持的帐号名称: 如果想让dmtsai加入root群组的话,那么在这行的最后面加上【,dmtsai】,注意不要空格【root:x:0:root,dmtsai】
执行groups得到这个用户所有支持的群组,第一个输出的群组即为有效群组,touch一个新档案,那么该档案的群组即为dmtsai了
newgrp:有效群组的切换,不过使用newgrp是有限制的,那就是你想要切换的群组必须是你已经有支持的群组,例如:dmtsai可以在
dmtsai/users这两个你支持的群组之间进行切换的,执行newgrp users 可以变更有效群组为users这个群组,这个指令执行后,是以另一个
shell来提供接下来的 *** 作的,这个时候dmtsai这个使用者目前是以另一个shell登录的,而且新的shell给予dmtsai有效的GID为users
有效群组被重新计算,由于是新取得的一个shell,想要返回到原本的环境中,需要输入exit回到原本的shell中
你要加入一个群组有两个方式,一个是透过系统管理员root利用usermod帮你加入,还可以透过群组管理员以gpasswd帮你
加入到他管理的群组中
新增与移除使用者:useradd 相关配置文件,passwd, usermod userdel
useradd [-u UID] [-g 刜始群组] [-G 次要群组] [-mM]\ 这句就是增加初始群组和次要群组的方法
创建用户时,默认会建立用户家目录,且目录的权限为700,同时还会帮我们处理几个项目
/etc/passwd 里面建立一行与数据有关的数据,包含UID和GID
/etc/shadow 里面将此账号的密码相关参数填入,但尚未有密码
/etc/group 里面加入一个账号名称一模一样的组名
/home 底下建立一个与账号同名的目录作为用户家目录,且权限为700
用户建立系统账号一般由100号以后算起,所以这里我们加上 -r 这个选项后,系统将账号与账号同名群组的UID/ GID都指定小于500以下,由于这些账号只是用来运作
系统所需服务的权限设定所以不会主动建立家目录
useradd 会更改以下的文件
用户账号与密码参数方面的档案:/etc/passwd, /etc/shadow,使用者群组相关方面癿档案:/etc/group, /etc/gshadow 用户的家目录:/home/账号名称
而家目录中的内容来自于/etc/default/useradd 中的内容 可以用useradd -D查看到,
GROUP=100 的含义分为两种
1,私有群组机制,系统建立一个与账号一样的群组给使用者作为初始群组,RHEL FEDORA CENTOS 都是这样设定的
2,公有群组机制,就是以100这个群组作为新建账号的初始群组,SUSE就是这样设定的
HOME=/home:用户家目录的基准目录(basedir)
INACTIVE=-1:密码过期后是否会失效的设定值 0代表过期后失效,1代表永远不失效,30代表30天后失效
EXPIRE=:账号失效的日期
SHELL=/bin/bash:默认使用的 shell 程序文件名
如果是mail server ,那么不许用户登陆系统得到shell,那么可以将这里设定为/sbin/nologin,如此以来,新建的用户都无法登陆,免去了后续使用usermod的修改手续了
SKEL=/etc/skel:用户家目录参考基准目录
vbird1 家目录 /home/vbird1 内的各项数据,都是由 /etc/skel 所复制过去的,你可以在/etc/skel目录内容修改.bashrc文件或者建立www这个目录,那么未来新增的使用者
的家目录下就会有www这个目录了
CREATE_MAIL_SPOOL=yes:建立使用者的 mailbox,这个值设置为yes,那么ll /var/spool/mail/这个目录下就会存在使用者的邮箱了
除了以上的账号设定值之外,UID和GID还有密码参数是参考/etc/login.defs文件的
文件内容包括
MAIL_DIR /var/spool/mail <==用户默认邮件信箱放置目录
现在用户登陆系统时的密码校验是通过PAM模块来验证的,所以PASS_MIN_LEN是失效的
UID_MIN UID_MAX UID的最小和最大值,一般创建用户时,会先查询/etc/passwd中的最大UID数值,再加上一就是新账号的UID了,如果加上-r 那么就会找出比500小的
最大的那个UID + 1
CREATE_HOME yes <==在不加 -M 及 -m 时,是否主动建立用户家目录
UMASK 077 <==用户家目录建立的 umask ,因此权限会是 700
USERGROUPS_ENAB yes <==使用 userdel 删除时,是否会删除初始群组
MD5_CRYPT_ENAB yes <==密码是否经过 MD5 的加密机制处理
通过以上说明,useradd这个命令会参考 /etc/default/useradd /etc/login.defs /etc/skel/* 等文件的内容
passwd
当使用useradd建立账号之后,预设情况下账号暂时是封锁的,无法登陆的,只有passwd设定密码后才能登陆
选项与参数
--stdin :可以透过来自前一个管线的数据,作为密码输入,对 shell script 有帮助
-l :是 Lock 的意思,会将 /etc/shadow 第二栏最前面加上 ! 使密码失效;
-u :与-l 相对,是 Unlock的意思
-S :列出密码相关参数,亦即 shadow 档案内的大部分信息。
-n :后面接天数,shadow 的第 4 字段,多久不可修改密码天数
-x :后面接天数,shadow 的第 5 字段,多久内必须要更动密码
-w :后面接天数,shadow 的第 6 字段,密码过期前的警告天数
-i :后面接『日期』,shadow 癿第 7 字段,密码失效日期
一般用户设置密码的格式非常严格,大多使用PAM模块来进行密码的检验,这个管理的机制写在 /etc/pam.d/passwd 当中,而该档案与密码有关的测试模块
就是使用pam_cracklib.so 这个模块会检验密码的相关信息,取代/etc/login.defs内的PASS_MIN_LEN
设定密码还可以使用管道的方式 echo "abc543CC" | passwd --stdin vbird2
chage 这个命令也可以查看密码的相关参数信息的
-l :列出该账号详细密码参数;
-d :后面接日期,修改 shadow 第三字段(最近一次更改密码癿日期),格式 YYYY-MM-DD
-E :后面接日期,修改 shadow 第八字段(账号失效日),格式 YYYY-MM-DD
-I :后面接天数,修改 shadow 第七字段(密码失效日期)
-m :后面接天数,修改 shadow 第四字段(密码最短保留天数)
-M :后面接天数,修改 shadow 第五字段(密码多丽需要迚行变更)
-W :后面接天数,修改 shadow 第六字段(密码过期前警告日期)
chage -l vbird2 列出vbird的详细密码信息
chage还有一个功能,当用户第一个登入时,强制她们一定要修改密码才能使用系统资源,
例如:
useradd agetest
echo "agetest" | passwd --stdin agetest
chage -d 0 agetest 此时此账号的密码建立时间会被改为1970.1.1,所以有问题
再次登录的时候,就会强制你修改密码了
usermod 进行相关数据的微调
userdel 删除用户的相关数据,包括 :/etc/passwd, /etc/shadow /etc/group, /etc/gshadow /home/username, /var/spool/mail/username..
选项不参数: -r :连同用户的家目录也一起删除
如果想让某个账号暂时不启用的话,将/etc/shadow中的第八个字段设定为0就可以让该账号无法使用了,所有跟该账号相关的数据都会留下来
真正删除用户之前最好先执行 find / -user username 查询该用户创建了的所有文件
无论是 useradd/usermod/userdel ,那都是系统管理员所能够使用的指令,一般用户除了修改密码之外,还可以进行一些账号数据变更与查询指令的
finger
一般用户可以使用这个命令来查阅用户相关的信息,大部分是/etc/passwd这个档案里面的信息,
finger [-s] username 列出的信息包括账号,全名,家目录,shell,查询用户登陆主机的情况,信箱资料,计划资料
利用 vbird1 建立自己的计划档
echo "I will study Linux during this year." >~/.plan 接着使用finger vbird1就可以看到计划信息了
finger不加参数 , 找出目前在系统上面登入的用户与登入时间 除了显示这个信息之外,还会显示Office Phone等信息,这些信息是通过chfn来设定的
chfn 有点像 change finger的意思
-f :后面接完整的大名; -o :您办公室的房间号码; -p :办公室的电话号码; -h :家里的电话号码!
vbird1 自己更改一下自己的相关信息
chfn 接着等待用户输入
chsh 就是change shell 的简写
chsh [-ls]
选项与参数: -l :列出目前系统上面可用的shell ,其实就是 /etc/shells 的内容! -s :设定修改自己的 Shell 啰
无论是 chfn 不 chsh ,都是能够让一般用户修改 /etc/passwd 这个系统文件的,而这两个命令一定有SUID这个属性的,否则一般用户是不能修改passwd文件的
id
id 这个指令则可以查询某人或自己的相关 UID/GID 等等的值
新增与移除群组
groupadd
-g :后面接某个特定的GID ,用来直接给予某个 GID ~
-r :建立系统群组啦!与 /etc/login.defs 内的 GID_MIN 有关。
单单家里群组时,最好使用 groupadd -r 群组名的方式来建立啦
groupmod 与 usermod类似
选项与参数: -g :修改既有的 GID 数字;
-n :修改既有的组名
groupmod -g 201 -n mygroup group1
groupdel 删除群组
删除群组时必须要确认/etc/passwd内的账号没有与任何人使用该群组作为 初始化群组
gpasswd:群组管理员功能
-A :将 groupname 的主控权交由后面的使用者管理(该群组的管理员) 例如 gpasswd [-A user1,...] [-M user3,...] groupname
-M :将某些账号加入这个群组当中!
-r :将 groupname 的密码秱除 例如 gpasswd [-rR] groupname
-R :让 groupname 的密码栏失效
:若没有任何参数时,表示给予 groupname 一个密码(/etc/gshadow) 例如gpasswd groupname
-a :将某位使用者加入到 groupname 这个群组当中!
-d :将某位使用者移除出 groupname 这个群组当中。
gpasswd -A vbird1 testgroup 将vbird1设置为testgroup 的群组管理员
gpasswd -a vbird3 testgroup 让vbird3设置成为testgroup组的成员
群组管理员可以设定多个,上面的vbird1就可以设定testgroup的群组管理员了,所以 vbird1 就可以自行增加群组成员啰,该群组成员就能够使用 newgrp 啰
测试:建立三个用户的共同开发目录
需要将这三个用户都加上一个共有的公有群组,接着在这个目录上设置为该群组,再将这个目录的权限设置为2770 ,其中的2代表SGID,也就是这三个使用者能够修改
对方的档案,这个SGID必须要存在,
那如果需要增加一个myuser1作为这个项目的助理,他需要有查看这个项目的内容,但不能修改这个目录内的任何数据,这样既不能修改目录的权限为2775,因为这样的话
其他人也能进入这个目录了,同时也不能将这个用户加入到公有的群组上,因为一旦加上,这个用户就可以修改这个目录内的内容了。
所以这个时候就需要加上ACL的使用了
传统的权限仅有三种身份,也就是(owner, group, others) 搭配三种权限 (r,w,x) 而已,没有办法为某一个使用者或某一个群组来设定特定的权限需求,此时就一定要使用
ACL这个机制了
ACL的机制主要是提供传统的owner,group,others 的 read,write,execute 权限之外的细部权限设定,ACL 可以针对单一使用者,单一档案或者目录来进行 r,w,x 癿权限规范,对
于需要特殊权限的使用状况非常有帮助
ACL主要可以针对以下这些方面来控制权限
使用者 : 可以针对使用者来设定权限
群组:可以针对群组为对象来设定其权限
默认属性mask 还可以针对在该目录下在建立新档案/目录时,规范新数据的默认权限
使用ACL必须要有文件系统的支持才行,目前绝大多数的文件系统都有支持 ACL的功能,包括 Ext3 Ext4 JFS XFS等等
查看本文件系统是否支持ACL可以执行 mount命令
mount命令 可以看到文件系统的大致情况,接着也可以由superblock内容去查询 dumpe2fs -h /dev/hda1
由mount单独查询,未必可以看到实际的项目,由于目前的distributions 常常会主动加入某些默认功能,在rhel预设的情况下(Default Default mount ) ,就会帮你加入acl的
如果没有默认加上acl,那么就要手动的加上acl的支持了,mount -o remount,acl / 这样就可以了,再执行mount就可以看到效果了,但是如果想要每次开机都生效,那么就
要写入到/etc/fstab中去
acl的命令有getfacl 和 setfacl
当设置好文件系统支持acl后,接下来可以利用 getfacl setfacl 来设定acl了
getfacl:取得某个档案/目录的 ACL 设定项目;
setfacl:设定某个目录/档案的 ACL 规范。
setfacl 指令用法
选项不参数:
-m :设定后续的 acl 参数给档案使用,不可与 -x 合用;
-x :删除后续的 acl 参数,不可与 -m 合用;
-b :移除所有的 ACL 设定参数;
-k :移除预设的 ACL 参数,关于所谓的『预设』参数于后续范例中介绍;
-R :递归设定 acl ,亦即包括次目录都会被设定起来;
-d :设定『预设 acl 参数』的意思!叧对目录有效,在该目录新建癿数据会引用此默认值
1. 针对特定使用者的方式:,例如针对 vbird1 癿权限规范rx:
原先的 -rw-r--r-- 1 root root 0 Feb 27 13:28 acl_test1
执行 setfacl -m u:vbird1:rx acl_test1
执行后的 -rw-r-xr--+ 1 root root 0 Feb 27 13:28 acl_test1
结果 权限部分多了个 + ,且与原本的权限 (644) 看起来差异很大!
再次执行 setfacl -m u::rwx acl_test1
结果 -rwxr-xr--+ 1 root root 0 Feb 27 13:28 acl_test1 使用者栏位为冒号代表设定该档案拥有者,所以root的权限变成了rwx了
设定的格式为 『 u:使用者:权限 』的方式来设定的啦,一个档案设定了ACL参数后,他的权限部分会多出一个 + 号,而且此时看到的权限与实际的权限很可能会有不一样
可以使用getfacl来进行查看
getfacl 指令用法
getfacl filename getfacl的选项几乎与 setfacl 相同
列出刚刚设定的acl_test1的权限内容
# file: acl_test1 <==说明档名而已!
# owner: root <==说明此档案的拥有者,
# group: root <==此档案的所属群组,
user::rwx <==使用者列表栏是空的,代表档案拥有者的权限
user:vbird1:r-x <==针对 vbird1 的权限设定为 rx ,与拥有者不同!
group::r-- <==针对档案群组的权限设定仅有 r
mask::r-x <==此档案预设的有效权限 (mask)
other::r-- <==其他人拥有的权限啰!
显示的数据前面加上 # 的,代表这个档案的默认属性,包括文件名、档案拥有者与档案所属群组。
底下出现的 user, group, mask, other 则是属于不同的使用者、群组与有效权限(mask)的设定值
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)