linux_学习之用户权限管理

用户管理是日常工作中不可缺少的工作之一。

umask系统默认权限

目录最高文件777

文件最高文件666

在root下创建目录:755

创建文件:644

/etc/passwd文件,以:分隔,共计7段

用户名密码uidgid说明文字家目录shell

tmpuser110:x:3022:3022::/home/tmpuser110:/bin/bash

/etc/shadow 文件,以:分隔,共计9段

用户名加密密码密码更动日期密码可更改日期密码过期提醒时间密码过期警告时间密码失效天数失效日保留未使用

test:$6$9BW0o9Sm$3uqDuhr84SjW6AsolWK3sFdZvqxwj1ahpN2F5/:16942:0:99999:7:::

/etc/shadow文件包含了用户口令的加密信息,以及口令的有效期信息,每个用户占一条记录,每条记录9个域,依次定义如下:

(1) 登录账号

(2) 加密口令,“*”或其他符号表示不能用来登录。

(3) 口令上次更改时间与1970年1月1日相隔的天数

(4) 口令更改后不可以再次更改的天数,0表示可以随时更改

(5) 口令的有效期,即口令更改后必须再次更改的天数,99999表示未设有效期

(6) 口令失效前警告用户的天数

(7) 口令失效后距账号被查封的天数,默认值-1

(8) 账号被封时距1970年1月1日的天数,默认值-1

(9) 保留未用

一、用户的创建与修改:

useradd-d/tmp/username-gZgroup-GFgroup-s/bin/nologinusername(-M不建家目录)

-d 指定家目录

-g 指定主组

-G 指定副组

-s 指定shell

usermod-a -Gtestgroup1testgroup2(增加附属组)

修改副组,增加多个副组要加-a,如不加则修改副组

usermod【】username更改用户属性

-c跟账号说明

-d跟自定义家目录

-e跟密码创建日期 YYYY-MM-DD

-f后跟密码过期警告天数

-g主组

-G副组

-a与-G一起增加多个副组

-l修改账户名

-s修改shell(不能登录等shell如/sbin/nologin)

-u更改uid

-L账户锁定(即在shadow密码项标记为!)

-U账户解锁

userdel-rusername

连同用户家目录一起删除

idusername

查看用户id情况

二、文件属组,属主变更

chown-Rusername/ filename

递归修改文件的属主

chgrpusername/filename

修改文件的属组

chown-Rusername:groupname/filename

修改文件的属主及属组

chmod-RXYZfilename

修改文件的读写执行权限

su- username切换用户

sudocommand可使用root进行作业

需修改/etc/sudoers

三、特殊权限SUID/SGID/SBIT

#对目录来说,能进入是需要X权限

#文件能mv,cp,rm是取决于上级目录是否有w权限

#SUID说穿了是对命令的权限下发

rw-+suidrwS

rwx+suidrws

#加suid,不管谁来执行这个命令,都以二进制文件命令拥有者身份执行

#chmodu+s/bin/cat

#su- user1

#cat /etc/shadow就可以访问了

(用途:大家都对公共的资源有权限,各自又独立)

s和t是取代x的权限来表示

SUID--------》4

1.对档案有效,对目录无效

2.仅对二进制程序有效,对scrip无效

3.执行者对该程序有x权限

4.执行者将具有该程序owner拥有者权限

SGID--------》2

1.对档案有效,对目录有效

2.对二进制程序有效

3.执行者有x,执行过程中将获得该程序群组的权限支持

sgid就是继承上级目录的属组及权限;

如建立一个目录,将要访问该目录的所有用户加入建立该目录的组中,且给该目录加sgid权限,那么任何用户在该目录下建立文件,该文件的属组继承上级目录的属组及权限

例如:使用者user1~user3三个人在同一个项目的同一个目录里开发,可相互rwx各自写的东西,但三个人又有自己的私人家目录及群组。

a.将三个用户添加副组shareGR

usermod-G shareGRuser1

。。。。。。

b.建立公用目录及赋予SGID

mkdir shareDR

chgrpshareGRshareDR

chmod2770 shareDR

SBIT--------》1

1.仅对目录有效,对档案无效

2.当用户对目录有w,x权限时

3.当用户在目录下建立的目录或档案,仅自己和root可删

即当目录有SBIT权限时,用户对该目录有wx,在目录里只能对自己的目录、档案处理,无法处理其他人的。

如果上级目录其他用户有rwx权限,则在目录下a用户创建的文件,b用户可以删除;

#ll -d/test

#drwxrwxrwxroot toot ……

#su- user1

#touch/test/aaaa.txt

#ll /test/aaaa.tx

#-rw-r--r--user1 user1 ……

#su - user2

#rm-rf aaaa.txt可以删掉,因为rm权限是看上级目录o的权限的

#chmod o+t/test

#su - user2

#rm-rf aaaa.txt无权限删除

SUID=u+sSGID=g+sSBIT=o+t

四、ACL(access control list 访问控制列表)

可针对单一用户,档案,目录进行rwx设置权限管控。

acl默认支持,但系统版本不同可能有意外;

1.查看

dumpe2fs -h/dev/sda1-------->查询

2.设定acl支持

mount -o remount,acl / --------->临时

cat /etc/fstab sed -i '17i LABEL=/1 / ext4 default,acl 1 1'

--------------------------------

acl的设定

getfacl:取得directory/file的acl

setfacl:设定directory/file 的acl

setfacl 【-bkRd】【{-m-x} acl参数】目标文件名

-m设定acl参数

-x删除acl参数

-b移除所有acl设定参数

-k移除预设acl参数

-R递归设定acl

-d设定预设acl参数,仅对目录有效,在该目录新建的数据会引用此默认值

针对使用者:

setfacl -mu:使用者账号列表:rwx档案或目录

eg:

setfacl -m u:test1:rwtest.txt

getfaclfilename查看acl权限管控,选项通setfacl

针对特定群组:

setfacl -mu:群组列表:rwx档案或目录

上面的acl设定,只针对父目录或档案,子目录无法继承

要次目录继承acl设定:

setfacl -m d:u或g:rwxtex.txt

-------------------------------------------

五、用户切换:

1.普通用户,不需知道root账密,可通过sudo来切换root,此时切换时只需验证普通用户自己账密

a.如系统没有visudo命令,可通过yum -y installvisudo安装

b.通过visudo命令编辑/etc/sudoers

在root ALL=(ALL)ALL下加入test ALL=(ALL)ALL 从而让test用户拥有sudo权利

^^^^

账号账号登入的来源主机名(可切换的身份)可下达的指令

去掉注释#wheelALL=(ALL)ALL一行,

然后通过groupmod-Gwheelusername加入群组可用sudo权利

2.只能普通用户登录,无需输入密码即可切换root(通过sudo su -命令切换)

visudo编辑配置文件/etc/sudoers,加入

User_AliasUSER_SU= test,test1,test2

Cmnd_AliasSU = /bin/su

USER_SU ALL=(ALL) NOPASSWD: SU

完成后可测试:

[test@localhost]$ sudo su -

-------------------------------------------

su 切换root ,需要输入root的账密

不加“-“时,目录还是在使用者用户下

加“-” 时即su-目录转到root下了

sudo切换root ,需要使用者自己的账密

-------------------------------------------

1.指定test1用户,只能以root账号改其他账号的密码

test1ALL=(root)!/usr/bin/passwd ,!/usr/bin/passwd root,/usr/bin/passwd [a-zA-Z]*,---------> 命令的绝对路径(通过which command 可获得)

2.当/etc/nologin.txt文件被创建时,普通用户都无法登陆,只有root可以!!!

-------------------------------------------

查询使用者

w

who

whoamiwhoami

last

lastlog

id

在线账户相互聊天

write账户名终端号

--------------------------------------

eg:writerootps/0

hello ,this test

ctrl+d键退出

-------------------------------------

不想接到消息

mesg n---------->普通用户无法拒绝root用户的信息

mesg y解开

-------------------------------------

对主机上所有的在线用户广播消息

wall “is a fun。。。。。。。”

-------------------------------------

给所有用户不管在线否发mail

mailusername@localhost-s“邮件主题”

you arewelcome!

byebye!

.----------->结束用.然后按enter即可

或提前把文件写好:mail vbird1 -s "nice to meet you" < filename

收信

mail

&>?------>输入?可以看到很多选项,如想看内容直接type即可

---------------------------------------

更新用户账密

echo“username:newpassword”chpasswd -m(更改并通过md5加密放入shadow文件中)

--------------------------------------

拓展:

大量建立账号scrip

#!/bin/bash

#功能有:

#1.检查account1.txt是否存在,并将该档案内的账号取出

#2.建立上述账号

#3.将上述账号的密码修订为【第一次登陆必须修改账密】

#20180122sun

path=/bin:$PATH

export path

#检查是否存在account1.txt档案

if [ ! -f account1.txt ] ;then

exit1

elif [ -f account1.txt ]; then

echo "存在需要删除其内容:$(echo ‘’> account1.txt)"

fi

usernames=$(cat account1.txt)

for username in $usernames

do

useradd $username

echo $username passwd --stdin $username

chage -d 0 $username《==强制登入修改密码

done

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180123G02VHS00?refer=cp_1026

扫码关注云+社区