查看信息

查看文件、文件夹的filesystem metadata

# 查看**单个**文件、文件夹的权限信息

stat filename

# 或者使用以下命令来查看当前目录下**所有**文件、文件夹的权限信息

ls -la # 显示username、groupname

ls -na # 显示userid、groupid

ls -l每个列的含义:这篇博客。

查询用户、群组信息

# 查看当前用户(准确地说是当前bash进程的拥有者)的信息:

id

# 查看指定用户的信息:

id username

id userid

# 查看当前用户(准确地说是当前bash进程的拥有者)的所有群组:

groups

# 查看指定用户的所有群组(注意该命令必须输入username,不能是userid):

groups username

# 查看**所有**用户的信息:

cat /etc/passwd

# 查看**所有**群组的信息:

cat /etc/group

current group

执行id命令以后你会看到返回结果包括gid和groups。关于gid 与groups 的区别:gid只是当前登陆群组, 而groups列出了用户所在的所有群组。用户所在的群组可以有很多,但是在任何一个时刻,一个用户只能登陆一个群组。后面面会介绍newgrp命令,使用它,用户可以切换到其他群组。

primary group 和 supplementary group

用户所在的群组可以有很多,可以指定其中一个为主群组(primary group),剩下的都是supplementary group。主群组是 GUI登陆、打开命令行窗口、ssh登陆 以后的默认登陆群组。

修改primary group和supplementary group的usermod命令下面会讲到。

Real User ID, Effective User ID, Saved User ID

在查看一些命令的manuals时(比如id),你可能会注意到userid还分为Real User ID, Effective User ID, Saved User ID三种。每个进程的描述表(process descriptor table)都存储了这三种UID。

查看系统中所有的进程以及进程的拥有者

ps aux

ps命令非常强大,几乎能给你所有需要的进程信息!设置几个参数就能让它输出我们想要的进程信息:

ps --pid 25138 -O uid,uname,gid,group,ppid

上面的参数表示,我要查看pid为6685的进程,并且除了默认的列以外,多展示几列:uid,uname,gid,group,ppid。

输出如下:

在ps manuals中,能找到这个命令的更多用法、更多可以展示的列:

在docker容器内使用ps命令

在docker容器内的bash使用ps命令时,很有可能会提示你ps命令不存在,这是因为docker image经常精简掉了ps程序(毕竟docker容器中一般只运行一个进程)。这个时候使用

apt-get update && apt-get install procps

来安装ps。

在中国连接国外的Ubuntu软件源服务器可能会非常慢,这时你应该改一下ubuntu的软件源(通过系统设置就能改)。

如果你在docker容器内使用apt,你需要手动改变软件源。先通过Ubuntu Sources List Generator定制符合你需要的sources.list文件(至少要选择"Main - Officially supported software."这一项),然后将这个文件放在容器内的路径/etc/apt/sources.list(可以使用命令docker cp ./sources.list 容器名称:/etc/apt/sources.list或者Dockerfile的COPY ./sources.list /etc/apt/sources.list指令)。

修改文件元信息

chmod修改文件、文件夹的权限

# 修改文件、文件夹的权限(如果要修改不属于当前用户的文件,还需要使用sudo)

chmod 755 filename

# 递归修改文件夹、文件夹内所有文件的权限(注意要使用sudo和-R)

sudo chmod 777 -R /path/to/directory

chown修改文件的拥有者、拥有群组

执行这种修改时,必须使用sudo。

# 修改文件/文件夹的owner

sudo chown username filename

# 修改文件/文件夹的group

sudo chown :groupname filename

# 同时修改文件/文件夹的owner和group

sudo chown username:groupname filename

# 加上-R参数,能够递归修改文件夹、文件夹内的所有文件!

上面的username、groupname也可以用userid、groupid代替。使用userid、groupid有一个很方便的地方:userid、groupid可以不存在于当前系统中,这在使用docker bind-mount volume的时候很有用!

修改用户、群组信息

新建和删除

新建用户、群组有关的工作,分别交给以下两个命令:

adduser

addgroup

adduser和addgroup的manuals页面其实是一模一样的,它们的功能是很相似的,只不过adduser对应于user,addgroup对应于group。

使用这两个命令可以做到这几件事:

新建一个normal user

adduser [options] [--home DIR] [--shell SHELL] [--no-create-home]

[--uid ID] [--firstuid ID] [--lastuid ID] [--ingroup GROUP | --gid ID]

[--disabled-password] [--disabled-login] [--gecos GECOS]

[--add_extra_groups] [--encrypt-home] user

新建一个system user

adduser --system [options] [--home DIR] [--shell SHELL] [--no-create-

home] [--uid ID] [--group | --ingroup GROUP | --gid ID] [--disabled-

password] [--disabled-login] [--gecos GECOS] user

新建一个user group

addgroup [options] [--gid ID] group

新建一个system group

addgroup --system [options] [--gid ID] group

将一个已经存在的user加入到一个已经存在的group中

adduser [options] user group

这五种功能的解释,以及每种功能可以使用的参数,都在manuals有详细的解释。

同理,对于用户、群组的删除,分别有deluser和delgroup,它们的manuals也是一模一样的。

修改已有用户、用户组

修改已有用户、用户组有关的工作,分别交给以下两个命令:

usermod

groupmod

对于usermod,比较常用的参数有--gid --groups --uid,它们分别修改用户的 主群组、额外加入的群组、用户id 。

对于groupmod,比较常用的参数有--gid --new-name,它们分别修改群组的id、群组的名称。

切换用户、切换群组

切换用户

在bash中切换用户以后,通过这个bash执行的子程序,会以新的用户身份来完成。

注意,仅仅是当前bash进程的拥有者改变了。并不像windows那样注销整个系统再以新用户登陆!

如这个回答所讲,在命令行中切换用户只需要通过以下命令:

su - username

切换群组

前面已经说过,一个用户可以加入多个群组,但是任何一个时刻只能登陆一个群组。要切换当前用户所登陆的群组,使用newgrp命令。

newgrp - groupname

练手教程

linux 查看权限命令行,【linux】与 用户、权限 有关的常用命令相关推荐

  1. linux 查看文件的行,linux查看文件有多少行内容的命令介绍

    linux查看文件有多少行内容的命令介绍 发布时间:2020-04-07 09:59:31 来源:亿速云 阅读:170 作者:小新 今天小编给大家分享的是linux查看文件有多少行内容的命令介绍,很多 ...

  2. linux查询设备型号的命令,Linux 查看CPU信息,机器型号,内存等信息常用命令

    Linux 查看CPU信息,机器型号,内存等信息 系统 # uname -a # 查看内核/操作系统/CPU信息 # lsb_release -a # 查看操作系统版本 (适用于所有的linux,包括 ...

  3. linux一条命令添加用户并设置密码,linux中如何通过命令行来添加用户并设置密码...

    linux中如何通过命令行来添加用户并设置密码 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 LINUX中如何通过命令行来添加用户 ...

  4. linux 权限提示信息,命令行快速提示:权限进阶 | Linux 中国

    原标题:命令行快速提示:权限进阶 | Linux 中国 本部分介绍使用权限管理文件访问和共享的其他方法. -- Paul W. Frields 前一篇文章.本部分介绍使用权限管理文件访问和共享的其他方 ...

  5. 怎样在 Linux 命令行中切换用户

    导读 我们今天要介绍的内容就是如何在命令行中切换到其他用户. HXG61J Fiery hardware component fractal, computer generated abstract ...

  6. 如何在 Linux 命令行中切换用户

    如何在 Linux 命令行中切换用户 我在cnaaa上购买了云服务器. Linux 系统有不同类型的用户,用户有不同类型的权限. 并非所有用户都可以执行所有命令,也不是所有用户都可以切换到其他用户.我 ...

  7. linux结束所有任务命令行,Linux基础命令(15)定时任务

    释放双眼,带上耳机,听听看~! crontad Linux定时任务Crontab命令详解 linux 系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计 ...

  8. linux的垃圾箱是哪个文件夹,Ubuntu命令行的垃圾箱Trash CLI,远离 rm 命令误删除重要文件的阴影...

    原标题:Ubuntu命令行的垃圾箱Trash CLI,远离 rm 命令误删除重要文件的阴影 作为Linux用户,您可能需要不时从系统中删除文件.我们在删除文件时往往会保持谨慎,特别是在永久删除文件时, ...

  9. linux查用户group,Linux查看某个用户组下面的所有用户

    满意答案 linux查看某个用户组下面的所有用户网上搜了下,好多copy的文章,groups显示的是当前登录用户的所在用户组,根本就没有此用户组的用户列表.实践了下,可以用以下方法查看某个用户组里的所 ...

  10. Linux 下从命令行打开pdf文件和html文件的命令

    Linux 下从命令行打开pdf文件和html文件的命令 [日期:2012-06-18] 来源:Linux社区 作者:hipercomer [字体:大 中 小] 如果你经常工作在Linux终端下,某个 ...

最新文章

  1. 第一天:数据库设计--access数据类型介绍
  2. 安装HCL遇到的问题
  3. numpy实现神经网络代码(mnist手写体识别)
  4. raid1 raid2 raid5 raid6 raid10的优缺点和做各自raid需要几块硬盘
  5. @Service注解的作用
  6. 如何将字符串数组的空格去除_java中如何将数组转换为List
  7. Visual C# 2008+SQL Server 2005 数据库与网络开发-- 9.1 对XML的支持
  8. php去除html标签 空白,php使用strip_tags()去除html标签仍有空白的解决方法
  9. 学生管理系统功能设计c语言,C语言--学生信息管理系统设计.doc
  10. 自动量程万用表的实现原理_电子元器件用指针万用表、数字万用表、自动量程万用表测量原理图解大全教会您怎么看与测的呢?...
  11. MMC-HVDC仿真模型,pscad柔性直流输电仿真mmc仿真模型
  12. MySQL基础(适合新手入门)
  13. C语言实现的获取文件夹内文件名
  14. Devexpress TreeList控件支持拼音首字母查询
  15. 量化投资03---小市值轮动因子---准备工作01
  16. 笔记本如何解除锁定计算机,笔记本键盘锁定解锁方法教程
  17. 电脑启动项,电脑启动项设置,详细教您怎么设置开机启动项
  18. Java Files.walk示例
  19. 同一服务器中,同一框架下的不同二级域名之间网站session如何互通
  20. XElement.Load 需要释放吗_蚕茧能清洁毛孔吗 蚕茧护肤的正确方法速Get√|蚕茧|清洁-爱美·BEAUTY...

热门文章

  1. pytorch1.0神经网络保存、提取、加载
  2. C 输入 输出——Day03
  3. WinForm 下实现一个自动关闭的MessageBox
  4. Crontab- Linux必学的60个命令
  5. ST算法 Sliding Window algorithm template
  6. 操作系统进程间通信简述
  7. MySQL 5.7.18的安装与主从复制
  8. md5sum/opensll md5
  9. 【错误分析】NX error status: 32
  10. 【c++】字符串的冒泡排序【存疑,待查】