Welcome to Mac Help, our new column focused on helping you, the reader, with troubles you're having on your Mac. This installment's question comes from Doug Larsen, who needs help sharing files between his and his wife's user accounts on their family Mac.
Feb 10, 2019 Once you’ve downloaded the app from the App Store, and launched it, all you have to do is click on the menu bar icon for HiddenMe, and then click on ‘ Hide Desktop Icons.’ That’s it, your desktop icons will now be hidden. Feb 09, 2012 Question: Q: Is there a way to hide apps on a per user basis I want to let my wife use my Macbook Pro until I can get her her own. But I have a lot of apps installed that she would never use and I want to make it as user friendly as possible. Dec 10, 2018 To unhide a hidden app, repeat the steps above but use the nohidden flag instead: sudo chflags -h nohidden '/Applications/App Name.app' Hiding Protected Apple Apps. The steps above will work for most third party apps and even some Apple apps.
Dough writes:
My wife and I sometimes want to share files with each other. A year ago we got our first Mac but before that we were both longtime Windows users. In fact neither of us had even touched a Mac before that so everything about OSX is new to us.
I setup different user accounts for us and for the life of me I can't find an easy way to share files. With Windows you have the Public folders where files are easily shared but on the Mac there doesn't seem to be anything like it. I always have to find some clunky workaround to share a file with my wife who is using the very same machine.
There is an equivalent to the Public folders feature in Windows, but it's pretty well hidden. For whatever reason, Apple doesn't make it very easy to use. Fortunately it's not difficult to set up.
First of all, setting up different user accounts on the same Mac is a great way to keep things organized, and I wish more people would do it. You share the same applications and system files, but your individual settings and your documents are completely different. It's an efficient and productive way to let more than one person use the same Mac. So kudos, Doug, on doing the right thing.
If you check your /Users directory, you should see a folder called 'Shared.' That folder is dedicated to shared files that can be managed between different user accounts. A few of the applications I've installed use it so they can run without any trouble regardless of which user account is active, but you can use it for whatever you wish.
To access the Shared folder, simply open the Finder and select the Go menu, then select Go to folder.. (or type command-shift-G). Then type /Users and hit return.
You should be staring at the list of user folders on your Mac, with a Shared folder there as well. If you'd like to make it easier to access, simply drag that Shared folder into the Favorites sidebar on the left of your Finder window, or (as I pointed out in last week's column), command-drag it to the Finder toolbar if you'd prefer to have it on the top.
Either way you'll be able to access the Shared folder instantly, so you and your wife can both have access to common files you need. Whoever created the file will retain ownership of it, so the second person will need to make a copy of it and edit the copy.
Another way to do it is to use a third-party sync tool like Dropbox, but that requires you to upload and download the file using the Internet. This way the file stays local only on your Mac, which could be an important consideration if security (or bandwidth conservation) is paramount.
Got a question? Send it to [email protected]. If you need help with your iOS device, send a question to [email protected].
We may earn a commission for purchases using our links. Learn more.
power balance
New EU regulations target App Store, empowering developers
The EU has introduced new regulations and measures to help protect developers and publishers who deal with storefronts like the App Store.
-->
By Rick Anderson, Kirk Larkin, Daniel Roth, and Scott Addie
View or download sample code (how to download)
This document explains techniques for storing and retrieving sensitive data during development of an ASP.NET Core app on a development machine. Never store passwords or other sensitive data in source code. Production secrets shouldn't be used for development or test. Secrets shouldn't be deployed with the app. Instead, secrets should be made available in the production environment through a controlled means like environment variables, Azure Key Vault, etc. You can store and protect Azure test and production secrets with the Azure Key Vault configuration provider.
Environment variables
Environment variables are used to avoid storage of app secrets in code or in local configuration files. Environment variables override configuration values for all previously specified configuration sources.
Consider an ASP.NET Core web app in which Individual User Accounts security is enabled. A default database connection string is included in the project's appsettings.json file with the key
DefaultConnection . The default connection string is for LocalDB, which runs in user mode and doesn't require a password. During app deployment, the DefaultConnection key value can be overridden with an environment variable's value. The environment variable may store the complete connection string with sensitive credentials.
Warning
Environment variables are generally stored in plain, unencrypted text. If the machine or process is compromised, environment variables can be accessed by untrusted parties. Additional measures to prevent disclosure of user secrets may be required.
The
: separator doesn't work with environment variable hierarchical keys on all platforms. __ , the double underscore, is:
Secret Manager
The Secret Manager tool stores sensitive data during the development of an ASP.NET Core project. In this context, a piece of sensitive data is an app secret. App secrets are stored in a separate location from the project tree. The app secrets are associated with a specific project or shared across several projects. The app secrets aren't checked into source control.
Warning
The Secret Manager tool doesn't encrypt the stored secrets and shouldn't be treated as a trusted store. It's for development purposes only. The keys and values are stored in a JSON configuration file in the user profile directory.
How the Secret Manager tool works
The Secret Manager tool abstracts away the implementation details, such as where and how the values are stored. You can use the tool without knowing these implementation details. The values are stored in a JSON configuration file in a system-protected user profile folder on the local machine:
File system path:
%APPDATA%MicrosoftUserSecrets<user_secrets_id>secrets.json
File system path:
~/.microsoft/usersecrets/<user_secrets_id>/secrets.json
In the preceding file paths, replace
<user_secrets_id> with the UserSecretsId value specified in the .csproj file.
Don't write code that depends on the location or format of data saved with the Secret Manager tool. These implementation details may change. For example, the secret values aren't encrypted, but could be in the future.
Enable secret storage
The Secret Manager tool operates on project-specific configuration settings stored in your user profile.
The Secret Manager tool includes an
init command in .NET Core SDK 3.0.100 or later. To use user secrets, run the following command in the project directory:
The preceding command adds a
UserSecretsId element within a PropertyGroup of the .csproj file. By default, the inner text of UserSecretsId is a GUID. The inner text is arbitrary, but is unique to the project.
In Visual Studio, right-click the project in Solution Explorer, and select Manage User Secrets from the context menu. This gesture adds a
UserSecretsId element, populated with a GUID, to the .csproj file.
Set a secret
Define an app secret consisting of a key and its value. The secret is associated with the project's
UserSecretsId value. For example, run the following command from the directory in which the .csproj file exists:
![]()
In the preceding example, the colon denotes that
Movies is an object literal with a ServiceApiKey property.
The Secret Manager tool can be used from other directories too. Use the
--project option to supply the file system path at which the .csproj file exists. For example:
JSON structure flattening in Visual Studio
Visual Studio's Manage User Secrets gesture opens a secrets.json file in the text editor. Replace the contents of secrets.json with the key-value pairs to be stored. For example:
The JSON structure is flattened after modifications via
dotnet user-secrets remove or dotnet user-secrets set . For example, running dotnet user-secrets remove 'Movies:ConnectionString' collapses the Movies object literal. The modified file resembles the following:
Set multiple secrets
A batch of secrets can be set by piping JSON to the
set command. In the following example, the input.json file's contents are piped to the set command.
Open a command shell, and execute the following command:
Open a command shell, and execute the following command:
Access a secret
The ASP.NET Core Configuration API provides access to Secret Manager secrets.
The user secrets configuration source is automatically added in development mode when the project calls CreateDefaultBuilder to initialize a new instance of the host with preconfigured defaults.
CreateDefaultBuilder calls AddUserSecrets when the EnvironmentName is Development:
When
CreateDefaultBuilder isn't called, add the user secrets configuration source explicitly by calling AddUserSecrets. Call AddUserSecrets only when the app runs in the Development environment, as shown in the following example:
User secrets can be retrieved via the
Configuration API:
Map secrets to a POCO
Mapping an entire object literal to a POCO (a simple .NET class with properties) is useful for aggregating related properties.
Assume the app's secrets.json file contains the following two secrets:
To map the preceding secrets to a POCO, use the
Configuration API's object graph binding feature. The following code binds to a custom MovieSettings POCO and accesses the ServiceApiKey property value:
The
Movies:ConnectionString and Movies:ServiceApiKey secrets are mapped to the respective properties in MovieSettings :
String replacement with secrets
Storing passwords in plain text is insecure. For example, a database connection string stored in appsettings.json may include a password for the specified user:
A more secure approach is to store the password as a secret. For example:
Remove the
Password key-value pair from the connection string in appsettings.json. For example:
The secret's value can be set on a SqlConnectionStringBuilder object's Password property to complete the connection string:
List the secrets
Assume the app's secrets.json file contains the following two secrets:
Run the following command from the directory in which the .csproj file exists:
The following output appears:
In the preceding example, a colon in the key names denotes the object hierarchy within secrets.json.
Remove a single secret
Assume the app's secrets.json file contains the following two secrets:
Run the following command from the directory in which the .csproj file exists:
The app's secrets.json file was modified to remove the key-value pair associated with the
MoviesConnectionString key:
dotnet user-secrets list displays the following message:
Remove all secrets
Assume the app's secrets.json file contains the following two secrets:
Run the following command from the directory in which the .csproj file exists:
All user secrets for the app have been deleted from the secrets.json file:
Running
dotnet user-secrets list displays the following message:
Additional resources
By Rick Anderson, Daniel Roth, and Scott Addie
View or download sample code (how to download)
This document explains techniques for storing and retrieving sensitive data during development of an ASP.NET Core app on a development machine. Never store passwords or other sensitive data in source code. Production secrets shouldn't be used for development or test. Secrets shouldn't be deployed with the app. Instead, secrets should be made available in the production environment through a controlled means like environment variables, Azure Key Vault, etc. You can store and protect Azure test and production secrets with the Azure Key Vault configuration provider.
Environment variables
Environment variables are used to avoid storage of app secrets in code or in local configuration files. Environment variables override configuration values for all previously specified configuration sources.
Consider an ASP.NET Core web app in which Individual User Accounts security is enabled. A default database connection string is included in the project's appsettings.json file with the key
DefaultConnection . The default connection string is for LocalDB, which runs in user mode and doesn't require a password. During app deployment, the DefaultConnection key value can be overridden with an environment variable's value. The environment variable may store the complete connection string with sensitive credentials.
Warning
Environment variables are generally stored in plain, unencrypted text. If the machine or process is compromised, environment variables can be accessed by untrusted parties. Additional measures to prevent disclosure of user secrets may be required.
The
: separator doesn't work with environment variable hierarchical keys on all platforms. __ , the double underscore, is:
Secret Manager
The Secret Manager tool stores sensitive data during the development of an ASP.NET Core project. In this context, a piece of sensitive data is an app secret. App secrets are stored in a separate location from the project tree. The app secrets are associated with a specific project or shared across several projects. The app secrets aren't checked into source control.
The Secret Manager tool doesn't encrypt the stored secrets and shouldn't be treated as a trusted store. It's for development purposes only. The keys and values are stored in a JSON configuration file in the user profile directory.
How the Secret Manager tool works
The Secret Manager tool abstracts away the implementation details, such as where and how the values are stored. You can use the tool without knowing these implementation details. The values are stored in a JSON configuration file in a system-protected user profile folder on the local machine:
File system path:
%APPDATA%MicrosoftUserSecrets<user_secrets_id>secrets.json
File system path: https://fakeen.weebly.com/blog/free-movie-editing-apps-mac.
~/.microsoft/usersecrets/<user_secrets_id>/secrets.json
In the preceding file paths, replace
<user_secrets_id> with the UserSecretsId value specified in the .csproj file.
Don't write code that depends on the location or format of data saved with the Secret Manager tool. These implementation details may change. For example, the secret values aren't encrypted, but could be in the future.
Enable secret storage
The Secret Manager tool operates on project-specific configuration settings stored in your user profile.
To use user secrets, define a
UserSecretsId element within a PropertyGroup of the .csproj file. The inner text of UserSecretsId is arbitrary, but is unique to the project. Developers typically generate a GUID for the UserSecretsId .
Tip
In Visual Studio, right-click the project in Solution Explorer, and select Manage User Secrets from the context menu. This gesture adds a
UserSecretsId element, populated with a GUID, to the .csproj file.
Set a secret
Define an app secret consisting of a key and its value. The secret is associated with the project's
UserSecretsId value. For example, run the following command from the directory in which the .csproj file exists:
In the preceding example, the colon denotes that
Movies is an object literal with a ServiceApiKey property.
The Secret Manager tool can be used from other directories too. Use the
--project option to supply the file system path at which the .csproj file exists. For example:
JSON structure flattening in Visual Studio
Visual Studio's Manage User Secrets gesture opens a secrets.json file in the text editor. Replace the contents of secrets.json with the key-value pairs to be stored. For example:
The JSON structure is flattened after modifications via
dotnet user-secrets remove or dotnet user-secrets set . For example, running dotnet user-secrets remove 'Movies:ConnectionString' collapses the Movies object literal. The modified file resembles the following:
Set multiple secrets
A batch of secrets can be set by piping JSON to the
set command. In the following example, the input.json file's contents are piped to the set command.
Open a command shell, and execute the following command:
Open a command shell, and execute the following command:
Access a secret
The ASP.NET Core Configuration API provides access to Secret Manager secrets.
If your project targets .NET Framework, install the Microsoft.Extensions.Configuration.UserSecrets NuGet package.
In ASP.NET Core 2.0 or later, the user secrets configuration source is automatically added in development mode when the project calls CreateDefaultBuilder to initialize a new instance of the host with preconfigured defaults.
CreateDefaultBuilder calls AddUserSecrets when the EnvironmentName is Development:
When
CreateDefaultBuilder isn't called, add the user secrets configuration source explicitly by calling AddUserSecrets in the Startup constructor. Call AddUserSecrets only when the app runs in the Development environment, as shown in the following example:
User secrets can be retrieved via the
Configuration API:
Map secrets to a POCO
Mapping an entire object literal to a POCO (a simple .NET class with properties) is useful for aggregating related properties.
Assume the app's secrets.json file contains the following two secrets:
To map the preceding secrets to a POCO, use the
Configuration API's object graph binding feature. The following code binds to a custom MovieSettings POCO and accesses the ServiceApiKey property value:
The
Movies:ConnectionString and Movies:ServiceApiKey secrets are mapped to the respective properties in MovieSettings :
String replacement with secrets
Storing passwords in plain text is insecure. For example, a database connection string stored in appsettings.json may include a password for the specified user:
A more secure approach is to store the password as a secret. For example:
Remove the
Password key-value pair from the connection string in appsettings.json. For example:
The secret's value can be set on a SqlConnectionStringBuilder object's Password property to complete the connection string:
List the secrets
Assume the app's secrets.json file contains the following two secrets:
https://fakeen.weebly.com/blog/mac-hauppauge-hd-pvr-software. Run the following command from the directory in which the .csproj file exists:
The following output appears:
In the preceding example, a colon in the key names denotes the object hierarchy within secrets.json.
Remove a single secret
Assume the app's secrets.json file contains the following two secrets:
Run the following command from the directory in which the .csproj file exists:
Mac Hide Apps From Other Users 2017
The app's secrets.json file was modified to remove the key-value pair associated with the
MoviesConnectionString key:
Running
dotnet user-secrets list displays the following message:
Remove all secrets
Assume the app's secrets.json file contains the following two secrets:
Run the following command from the directory in which the .csproj file exists:
Mac Hide Apps From Other Users Windows 10
All user secrets for the app have been deleted from the secrets.json file:
Running
dotnet user-secrets list displays the following message:
Additional resources
Comments are closed.
|
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |