/bin /sbin/ /usr/bin/ /usr/loca/bin/ 各目录的区别

本文介绍了Linux系统中/bin、/sbin、/usr/bin、/usr/sbin、/usr/local/bin及/usr/local/sbin等目录的作用与区别。这些目录分别用于存放不同类型的程序文件,有助于系统的管理和维护。

/bin和/sbin 用于放置一些根分区(/)上的程序,以便在/usr分区挂载之前就可以使用。虽然现在该路径基本只作为一些关键程序(如/bin/sh)的标准路径,但在一些小型嵌入式设备上还是有这样的用法


/sbin/与bin的区别在于,sbin是存放系统管理程序的路径(普通用户一般不用)


/usr/bin用于分发包管理器(如Ubuntu apt等)存放它所管理的应用的路径, /usr/sbin与/usr/bin的关系类似与/bin和/sbin的关系


/usr/local/bin用于存放用户自己的程序(如自己编译出来的包等),不受分发包管理器的控制。如果用户把自己的程序放在/usr/bin下,则有可能在未来被包管理器给修改或删除了。


http://unix.stackexchange.com/questions/8656/usr-bin-vs-usr-local-bin-on-linux


/bin (and /sbin) were intended for programs that needed to be on a small / partition before the larger /usr, etc. partitions were mounted. These days, it mostly serves as a standard location for key programs like /bin/sh, although the original intent may still be relevant for e.g. installations on small embedded devices.

/sbin, as distinct from /bin, is for system management programs (not normally used by ordinary users) needed before /usr is mounted.

/usr/bin is for distribution-managed normal user programs.

There is a /usr/sbin with the same relationship to /usr/bin as /sbin has to /bin.

/usr/local/bin is for normal user programs not managed by the distribution package manager, e.g. locally compiled packages. You should not install them into /usr/bin because future distribution upgrades may modify or delete them without warning.

/usr/local/sbin, as you can probably guess at this point, is to /usr/local/bin as /usr/sbin to /usr/bin.

In addition, there is also /opt which is for monolithic non-distribution packages, although before they were properly integrated various distributions put Gnome and KDE there. Generally you should reserve it for large, poorly behaved third party packages such as Oracle.



-- Build files have been written to: /project/fep_source/buildroot/build/ac5x_pro/build/tplink/protocolDemo-1.0 >>> protocolDemo 1.0 Building PATH="/project/fep_source/buildroot/build/ac5x_pro/host/bin:/project/fep_source/buildroot/build/ac5x_pro/host/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/loca/git/bin:/home/user/.local/bin:/home/user/bin" /usr/local/bin/make -j4 -C /project/fep_source/buildroot/build/ac5x_pro/build/tplink/protocolDemo-1.0/ Scanning dependencies of target protocolDemo [ 14%] Building C object CMakeFiles/protocolDemo.dir/data/dataProtocolDemo.c.o [ 28%] Building C object CMakeFiles/protocolDemo.dir/adProtocolDemo.c.o [ 42%] Building C object CMakeFiles/protocolDemo.dir/mainProtocolDemo.c.o [ 57%] Building C object CMakeFiles/protocolDemo.dir/opProtocolDemo.c.o [ 71%] Building C object CMakeFiles/protocolDemo.dir/srvcProtocolDemo.c.o [ 85%] Building C object CMakeFiles/protocolDemo.dir/stkProtocolDemo.c.o [100%] Linking C executable /project/fep_source/buildroot/build/ac5x_pro/build/tplink/bin/protocolDemo /project/fep_source/buildroot/ext-tools/aarch64v8-marvell-linux-gnu-5.2.1_x86_64_20160301/bin/../lib/gcc/aarch64-linux-gnu/5.2.1/../../../../aarch64-linux-gnu/bin/ld: cannot ind -lgr_common /project/fep_source/buildroot/ext-tools/aarch64v8-marvell-linux-gnu-5.2.1_x86_64_20160301/bin/../lib/gcc/aarch64-linux-gnu/5.2.1/../../../../aarch64-linux-gnu/bin/ld: cannot ind -ltpDbCfg /project/fep_source/buildroot/ext-tools/aarch64v8-marvell-linux-gnu-5.2.1_x86_64_20160301/bin/../lib/gcc/aarch64-linux-gnu/5.2.1/../../../../aarch64-linux-gnu/bin/ld: cannot ind -ltimer collect2: error: ld returned 1 exit status CMakeFiles/protocolDemo.dir/build.make:161: recipe for target '/project/fep_source/buildroot/build/ac5x_pro/build/tplink/bin/protocolDemo' failed make[4]: *** [/project/fep_source/buildroot/build/ac5x_pro/build/tplink/bin/protocolDemo] Error 1 CMakeFiles/Makefile2:78: recipe for target 'CMakeFiles/protocolDemo.dir/all' failed make[3]: *** [CMakeFiles/protocolDemo.dir/all] Error 2 Makefile:132: recipe for target 'all' failed make[2]: *** [all] Error 2 package/tplink/tplink-generic.mk:289: recipe for target '/project/fep_source/buildroot/build/ac5x_pro/build/tplink/protocolDemo-1.0/.stamp_built' failed make[1]: *** [/project/fep_source/buildroot/build/ac5x_pro/build/tplink/protocolDemo-1.0/.stamp_built] Error 2 Makefile:84: recipe for target '_all' failed make: *** [_all] Error 2
09-08
### `/bin/false` 和 `/sbin/nologin` 的区别 #### 功能与行为 `/bin/false` 是一个简单的命令,它不执行任何操作,仅返回一个非零退出状态,然后立即退出[^1]。当用户的登录 shell 被设置为 `/bin/false` 时,用户尝试登录时会直接被拒绝,没有任何提示信息,会话立即终止[^2]。 `/sbin/nologin` 是一个专门用于阻止用户登录的程序。当用户的登录 shell 被设置为 `/sbin/nologin` 时,系统会向用户显示一条默认信息(通常是“This account is currently not available.”),然后终止登录会话[^1]。该提示信息可以通过编辑 `/etc/nologin.txt` 文件进行自定义[^2]。 #### 用户反馈 使用 `/bin/false` 时,用户不会收到任何反馈信息,登录尝试被静默拒绝。这种方式适用于需要完全禁止访问且不需要提供解释的场景[^2]。 使用 `/sbin/nologin` 时,用户会看到一条明确的提示信息,告知其账户无法登录。这种反馈机制在需要临时禁止用户登录的情况下更为友好,例如系统维护期间[^1]。 #### 应用场景 `/bin/false` 更适合用于永久禁止登录的系统账户,尤其是那些不需要任何用户交互的服务账户。它提供了一种更为严格的访问控制机制[^2]。 `/sbin/nologin` 适用于需要临时禁止用户登录的情况,因为它提供了用户反馈,使用户了解其账户当前不可用。此外,某些服务(如 FTP 服务器)可能要求用户拥有有效的 shell 才能使用服务,此时 `/sbin/nologin 可以满足这一需求,而 `/bin/false` 则无法实现[^3]。 #### 示例 可以通过以下命令查看特定用户的登录 shell 设置: ```bash grep <username> /etc/passwd ``` 例如: ```bash grep nobody /etc/passwd ``` 若输出如下,则表示该用户使用 `/bin/false` 作为登录 shell: ```bash nobody:x:65534:65534::/home/nobody:/bin/false ``` 若输出如下,则表示该用户使用 `/sbin/nologin` 作为登录 shell: ```bash mysql:x:27:27::/home/mysql:/sbin/nologin ``` #### 总结 `/bin/false` 和 `/sbin/nologin` 都用于禁止用户登录,但 `/sbin/nologin` 提供了用户反馈机制,适用于需要临时禁止登录的场景,而 `/bin/false` 更适合于完全禁止访问且不需要任何提示的情况。两者的选择取决于具体的使用需求和安全策略[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值