Linux用户及权限详解

时间:2023-01-06 18:03:48

3_4 Linux用户及权限详解


用户、组、权限


安全上下文(security context):


权限:r,w,x


文件:

r:可读,可以使用类似cat等命令查看文件内容

w: 可写,可以编辑或者删除此文件

x: 可执行,eXacutable,可以命令提示符下当作命令提交给内核运行


目录:

r: 可以对此目录执行ls以列出内部所有文件

w: 可以在此目录创建文件

x: 可以使用cd切换进此目录,也可以使用ls -l 查看内部文件的详细信息


rwx:

r--:只读

r-x:读和执行

---:无权限

 

0 000 ---:无权限

1 001 --x:执行

2 010 -w-:写

3 011 -wx:写和执行

4 100 r--:只读

5 101 r-x:读和执行

6 110 rw-:读写

7 111 rwx:读写执行


755:rwxr-xr-x



用户:UID(id标识用户)、/etc/passwd(用户信息库,存储用户对应id)

组:GID、/etc/group


解析:名称解析



影子口令:

用户:/etc/shadow (存放密码)

组:/etc/gshadow

 

用户类别:

管理员:id为0

普通用户:1-65535

系统用户:1-499,用来运行后台进程,不允许登录系统

一般用户:500-60000

 

用户类别:

管理员组:

普通组:

系统组:

一般组:

 

用户类别(分法2):

基本组:

私有组:创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名同名的组

附加组、额外组:默认组以外的其它组


查看passwd文件:

cat /etc/passwd

用whatis passwd可以查看passwd在man文档有几个章节

七个字段:

一:account,登录名

二:password,密码占位符

三:UID

四:GID

五:comment,用户注释信息

六:HOME DIR,家目录

七:shell,用户的默认shell

 

cat /etc/shells:查看用户合法shell

 

cat /etc/shadow:查看shadow文件,可以用man 5 shadow

一:登录名

二:encrypted password:加密的密码。。两个叹号表示锁定,不能登录。。写入文件前会加入随机生成的杂质,再生成密文。防止密码系统猜到密码

三:密码上次修改时间

四:密码最少使用时间

五:密码最长使用期限

六:还有多久过期

七:密码过期延长时间,不改不让使用。这几天没登陆,需要用管理员解锁

八:密码有效天数。过期无法登录

九:保留字段

 


加密方法:

对称加密:加密和解密使用同一个密码

公钥加密:每个密码都成对出现,一个为私钥(secret key),一个为公钥(public key)。。时间比对称慢三个数量级以上,多用于密钥交换

单向加密,散列加密:也叫指纹加密,提取数据特征码(每个数据有个唯一的特征码,类似人的指纹,不可逆)。常用于数据完整性校验

 1、雪崩效应(初始输入数据一点点改变,特征码结果变化很大)

 2、定长输出

 MD5:message Digest(5是版本号),128位定长输出

 SHA1:Secure Hash Algorithm,160位定长输出。还有SHA1 256和512位定长输出


添加用户:useradd(用which useradd)。adduser,软连接到useradd,本质上一样

useradd USERNAME

管理员改其它用户密码:

passwd USERNAME


为什么添加用户会主动添加一些属性:

cd /etc/default 然后cat useradd


cat /etc/group

添加组:groupadd GROUPNAME


04_01用户管理命令详解

用户管理命令:

useradd、userdel、usermod、passwd、chsh、chfn、finger、id、chage


useradd [options] USERNAME

 -u UID(大于等于500,其它用户未使用,默认/etc/passwd里最后一个用户id号加一。。一般情况下与组id相同))

 -g GID(基本组。可用组名或者组id,指定前组要先存在)

 -G ,...(附加组)

 -c “COMMENT” 注释信息

 -d /path/to/somedirectory 指定家目录 如:useradd -c “Tony Blare” -d /home/blare user4

 -s 指定shell(目录。。。此shell一定存在于/etc/shells文件里)

 -m -k 强行创建家目录并复制skel文件

 -M 不给用户创建家目录

 -r:添加系统用户

 

/etc/login.defs 设置用户信息

 

/etc/shells:指定了当前系统可用的安全shell

 

环境变量:

 PATH

 HISTSIZE

 SHELL

查看此用户用什么shell:echo $SHELL

 

userdel  

userdel [options] USERNAME (默认不删除家目录)

 -r 同时删除用户的家目录

 

id  查看用户的账号属性信息

id [options] [USERNAME] 不加用户,默认当前用户

 -u  

 -g  

 -G  

 -n  

 

finger 查看用户账号信息

 finger [options] USERNAME

 

修改用户账号信息:

usermod

 -u 改用户id

 -g GID 改基本组

 -G 改附加组。会覆盖之前的附加组

 -a -G 一起使用,追加附加组

 -c 注释信息

 -d 改家目录。改后无法访问之前家目录中的文件

 -d -m 移动此前文件至新家目录中

 -s 改shell

 -l 改用户名

 -L 锁定账号

 -U 解锁账号

 

chsh 改用户默认shell

 chsh USERNAME

 

chfn 改注释信息

 chfn USERNAME

 

密码管理

passwd [USERNAME] 管理员才可指定用户

 --stdin 从标准输入读取 如echo “Redhat” | passwd user --stdin

 -l 锁定账号

 -u 解锁账号

 -d 删除密码。(红帽禁止空密码用户登录)

 -n 密码最短使用期限 -x -w -i  

 

pwck 检查用户账号完整性

 

chage  

 -d 最近一次的修改时间

 -E 过期时间

 -I 非活动时间

 -m 最短使用期限

 -M 最长使用期限

 -w 警告时间

 

组管理命令:

groupadd、groupdel、groupmod、gpasswd

 

groupadd 创建组

 -d 指定id。默认上一个组往下加一

 -r 添加为系统组

 

groupmod 改组信息

 -g GID

 -n GRPNAME改组名

 

groupdel 删除组

 

gpasswd 给组加密码

 

newgrp 临时登录更改用户基本组。可用exit退出

 

加用户 可直接改passwd shadow group三个文件

 

权限管理:

chown、chgrp、chmod、umask


04_02权限及权限管理

权限管理

r:读  

w:写

x:可执行


三类用户:

u:属主

g: 属组

o: 其它用户


chown:改变文件属主。(只有管理员可以使用此命令)

# chown USERNAME file,...

-R 修改目录及其内部文件的属主

--reference=/path/to/somefile  [-R] file,...  参考。把后面的文件的属主属组都 改为和第一个一样

 

# chown [USERNAME] :GRPNAME 可用此命令同时改属主数组。不加用户时可只改属组

 

 

chgrp:

#chgrp GRPNAME file,...

-R  

--reference=/path/to/somefile

 

chmod 修改文件的权限

修改三类用户观的权限:

 chmod MODE file,... 三位数字,少了默认前面补0

  -R 修改目录及其内部文件的权限

  --reference=/path/to/somefile  [-R]  

 

 

修改某类用户或某些类用户权限:

 u,g,o,a(all)

 chmod 用户类别=MODE chmod g=rw[-] 没给出的可用省略

  chmod go=r  

  chmod g=rx,o= file  

 

 

修改某类用户某位或某些位权限:

 u,g,o,a(all)

 chmod 用户类别+|- MODE file,...

  chmod u+x,g-x file  

  chmod [a]+wx file

   

练习:

1、新建一个没有家目录的用户openstack

2、复制/etc/skel为/home/openstack

3、改变/home/openstack及其内部文件的属主属组均为openstack

4、/home/openstack及其内部文件,属组和其它用户没有任何访问权限


su - openstack


ls -l /etc/shadow  

权限400 :

 权限设置对管理员没有用

 普通用户为啥能改密码?ls -l `which passwd` 属主有个s权限

 

bc:计算器 q退出

scal=2:保留两位小数


openssl passwd 可用生成加密密码

whatis passwd 查看有sslpasswd

man sslpasswd

openssl passwd -1(这是一) -salt '12345678’(八位)


umask :遮罩码(一般用户默认002,root022)

创建文件:666-umask 默认不能有执行权限,如果算得结果有执行权限,则将其权限加1:

创建目录 777-umask  

 

站在用户登录的加偶来说,shell的类型:

登录式shell:

 正常通过某终端登录

 su - USERNAME

 su -l USERNAME

 

非登录式shell:

 su USERNAME

 图形终端下打开命令窗口

 自动执行的shell脚本

 

bash的配置文件:

全局配置

 /etc/profile,/etc/profile.d/*.sh,/etc/bashrc

 

个人配置

 ~/.bash_profile,~/.bashrc

 

profile类的文件:

设定环境变量(个人和全局冲突时,以个人为准)

运行命令或脚本

 

bashrc类的文件

设定本地变量

定义命令别名

 

登录式shell如何读取配置文件?

/etc/profile ——> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc--> /etc/bashrc

非登录式shell如何读取配置文件?

~/.bashrc--> /etc/bashrc --> /etc/profile.d/*.sh